ZaLinux.ru

Как в Linux узнать версию Bluetooth для адаптера и периферии

Управление Bluetooth в Linux

В Linux для управления Bluetooth используются утилиты из пакета, который в Debian и производных называется bluez, а в Arch Linux и производных называется bluez-utils. Но некоторое время назад ряд инструментов для управления Bluetooth были объявлены устаревшими, хотя никакой альтернативы им предложено не было. Разные дистрибутивы решают эту проблему по-разному. В Debian и производных пакет bluez компилируется с флагом, включающим устаревшие инструменты. А в Arch Linux и производных сообществом в AUR поддерживается пакет bluez-utils-compat, который также скомпилирован с флагом, включающим устаревшие инструменты.

Для целей данной статьи понадобятся инструменты hciconfig и hcitool — они относятся к «устаревшим».

В Debian и производных для установки всех инструментов, в том числе объявленных устаревшими, для управления Bluetooth, выполните команду:

sudo apt install bluez

В Arch Linux и производных начните с установки pikaur как это показано в статье «Автоматическая установка и обновление пакетов AUR», а затем выполните следующие команды:

sudo pacman -R bluez-hciconfig # если у вас BlackArch
pikaur -S bluez-utils-compat

Вы увидите следующее предупреждение:

поиск конфликтующих пакетов из AUR...
:: bluez-utils-compat и bluez-utils конфликтуют. Удалить bluez-utils? [y/N]

вам нужно согласиться с заменой пакета bluez-utils на bluez-utils-compat, то есть введите «y».

Далее действия идентичны во всех дистрибутивах.

Как узнать версию Bluetooth компьютера

Выполните команду

hciconfig -a

Обратите внимание на строку, содержащую «HCI Version»:

Эта строка содержит номер версии Bluetooth, на скриншоте это 5.1.

Актуальными на данный момент можно считать версии Bluetooth 4.* и более поздние. На момент написания самой последней версией Bluetooth является 5.2. Уже разработан стандарт 5.3, но устройства с его поддержкой ещё не выпускаются.

Если на вашем дистрибутиве вы столкнулись с ошибкой, что команда hciconfig не найдена, то воспользуйтесь следующей командой (спасибо redking за подсказку):

btmgmt info | awk 'BEGIN{split("1.0b 1.1 1.2 2.0 2.1 3.0 4.0 4.1 4.2 5.0 5.1 5.2 5.3",i," ")}$1=="addr"{print $2"\tBluetooth: V"i[$4+1]}'

Предыдущая команда выводит MAC-адрес вашего Bluetooth адаптера и его версию. Если вам нужна только версия протокола, которую поддерживает Bluetooth вашего компьюютера, то используйте команду:

btmgmt info | awk 'BEGIN{split("1.0b 1.1 1.2 2.0 2.1 3.0 4.0 4.1 4.2 5.0 5.1 5.2 5.3",i," ")}$1=="addr"{print "Bluetooth: V"i[$4+1]}'

Как узнать версию Bluetooth подключаемых устройств

Начните с вывода списка доступных Bluetooth подключений и MAC адресов устройств:

bluetoothctl devices

Затем выполните команду вида:

sudo hcitool info MAC_АДРЕС

Предположим, я хочу узнать версию Bluetooth которую имеет Alexey's S21 Ultra с MAC адресом AC:6C:90:6E:53:EE, тогда команда следующая:

sudo hcitool info AC:6C:90:6E:53:EE

Обратите внимание на строку «LMP Version:», она содержит номер версии Bluetooth, в данном случае это 5.2.

Если команда hcitool не сработала и вы получили ошибку

Requesting information ...
Can't create connection: Input/output error

то перед выполнением данной команды предварительно выполните сопряжение Bluetooth устройства, версию которого вы хотите проверить.

Рекомендуемые статьи:

4 Комментарии

  1. Kenga

    А как удалить блютус полностью? И любую возможность его подключить? 

    1. Alexey (Автор записи)

      Приветствую! Вопрос интересный. Ответ на него в статье «Как отключить Bluetooth без возможности подключения».

  2. redking

    …инструменты hciconfig, bluetoothctl и hcitool — все они относятся к устаревшим

    это когда bluetoothctl успел устареть ?)

    по поводу устаревших BlueZ утилит на арчвики есть полезная табличка - Deprecated BlueZ tools

    Как узнать версию Bluetooth компьютера

    версию Bluetooth адаптера можно в принципе узнать и без "устаревшего" hciconfig

    для этого просто сопоставим вывод версии из утилиты btmgmt c оффициальной спецификацией HCI/LMP и для красоты оформить всё это однострочником:

    btmgmt info |awk 'BEGIN{split("1.0b 1.1 1.2 2.0 2.1 3.0 4.0 4.1 4.2 5.0 5.1 5.2 5.3",i," ")}$1=="addr"{print $2"\tBluetooth: V"i[$4+1]}'

    по поводу получения версий подключаемых устройств с помощью "новых" утилит то к сожалению здесь нужно еще разбираться.

     

    1. Alexey (Автор записи)

      Спасибо за подсказки — полезно как всегда. Статью подправил.

      P.S. не могу не отметить изящество команды и её идеи. Добавил её сюда в качестве примера.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *