Управление 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 устройства, версию которого вы хотите проверить.
Связанные статьи:
- Как отключить Bluetooth без возможности подключения (100%)
- Как проверить использование памяти на Linux (50%)
- Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (50%)
- Решение проблемы «чёрного экрана» после установки Catalyst 15.9 (несовместимость с GDM3, Cinnamon, GNOME) (50%)
- Программы для бенчмарка CPU в Linux (50%)
- Как включить дискретную видеокарту на Linux (RANDOM - 50%)
А как удалить блютус полностью? И любую возможность его подключить?
Приветствую! Вопрос интересный. Ответ на него в статье «Как отключить Bluetooth без возможности подключения».
это когда bluetoothctl успел устареть ?)
по поводу устаревших BlueZ утилит на арчвики есть полезная табличка - Deprecated BlueZ tools
версию 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]}'
по поводу получения версий подключаемых устройств с помощью "новых" утилит то к сожалению здесь нужно еще разбираться.
Спасибо за подсказки — полезно как всегда. Статью подправил.
P.S. не могу не отметить изящество команды и её идеи. Добавил её сюда в качестве примера.