Устройства Bluetooth встречаются довольно часто в наше время. Это простой и дешевый способ добавить поддержку беспроводных технологий для смартфона или любого другого гаджета. Система Linux может использовать различные протоколы: OBEX, A2DP, DUN, HID и другие для взаимодействия с различными устройствами.
В этой статье мы рассмотрим как выполняется настройка Bluetooth Ubuntu 16.04. Рассмотрим как установить драйвера и настроить связь между двумя устройствами.
Содержание статьи
- Первоначальная настройка
- Сканирование устройств Bluetooth
- Сопряжение устройств
- Отправка и прием файлов по OBEX
- Интернет через Bluetooth
- Выводы
Первоначальная настройка
Большинство Bluetooth адаптеров выполнены в виде USB и могут быть настроены с помощью утилит HCL. Некоторые устройства, такие как Atheros, требуют для своей работы установленных прошивок в системе.
Для установки всех необходимых программ выполните такую команду:
sudo apt-get install bluetooth bluez bluez-tools rfkill rfcomm
Дальше установите прошивки для адаптеров Atheros, если это необходимо:
sudo apt-get install bluez-firmware firmware-atheros
Затем запустите службу управления Bluetooth:
sudo service bluetooth start
Сканирование устройств Bluetooth
Перед тем, как перейти к сканированию устройств нужно убедиться что ваш bluetooth адаптер подключен и не заблокирован с помощью rfkill:
sudo rfkill list
Если устройство заблокировано, программной или аппаратной блокировкой, необходимо разблокировать его с помощью команды rfkill:
sudo rfkill unblock bluetooth
Включить адаптер можно с помощью команды hciconfig:
sudo hciconfig hci0 up
Дальше можно начать сканирование. Только перед этим убедитесь, что на другом устройстве Bluetooth включен и не находится в скрытом режиме. Для сканирования выполните:
sudo hcitool scan
После завершения вы увидите доступное устройство. Здесь будет отображаться его имя и MAC адрес.
Чтобы узнать более подробную информацию об устройстве, вы можете использовать утилиту sdptool:
sdptool browse D0:B3:3F:96:2A:30
Вы можете сразу отфильтровать какие возможности поддерживает обнаруженное устройство:
sdptool browse D0:B3:3F:96:2A:30 | grep 'Service Name:'
Также вы можете использовать интерактивный инструмент bluetoothctl:
bluetoothctl
Также вы можете проверить доступность удаленного устройства с помощью утилиты ping:
sudo l2ping D0:B3:3F:96:2A:30
Сопряжение устройств
Для совместной работы устройств Bluetooth нужно настроить их сопряжение. Для этого используется команда RFCOMM. Эта команда требует полномочий суперпользователя. Синтаксис команды такой:
sudo rfcomm connect устройство_адаптера mac_адрес_цели канал
Например, подключимся к нашему устройству на втором канале:
sudo rfcomm connect hci0 D0:B3:3F:96:2A:30 2
Теперь на другом устройстве появиться запрос на соединение и вам нужно будет ввести одинаковый pin на обоих устройствах. После этого оно будет доступно через файл /dev/rfcomm0. Не закрывайте терминал, чтобы соединение оставалось активным. Вы можете посмотреть список подключений с помощью hcitool:
hcitool con
Отправка и прием файлов по OBEX
Дальше вы можете очень просто отправить файл на удаленное устройство с помощью протокола OBEX. Синтаксис:
sudo bt-obex -p MAC_адрес_устройства /путь/к/файлу
Например:
sudo bt-obex -p D0:B3:3F:96:2A:30 ~/img/some_pic.png
Чтобы получить файл вам нужно запустить сервис obex в режиме прослушивания с помощью опции -s:
bt-obex -s /path/to/output/folder
Здесь вам нужно указать путь к папке, куда нужно сохранить полученный файл. После выполнения этих настроек Bluetooth Ubuntu, вы можете передать любой файл с телефона. Вы также можете запустить FTP сеанс с устройством, для просмотра файлов, которые на нем есть:
sudo bt-obex -f MAC_адрес_устройства
Интернет через Bluetooth
Раньше использование Dial-up сети было очень популярным. Сейчас эта технология почти не используется. Но, возможно, понадобиться раздать интернет от вашего телефона на компьютер. Для этого можно использовать два протокола: DUN - более старый и BNEP, более похожий на работу локальной сети.
Чтобы определить поддерживает ли устройство работу по протоколу DUN нужно использовать правильный канал rfcomm. Нужно использовать канал 15:
sudo rfcomm bind D0:B3:3F:96:2A:30 15
Если протокол поддерживается, то у вас появиться устройство rfcomm0. Дальше вы можете использовать NetworkManager для подключения к сети.
Что касается BNEP, то здесь вам уже не нужно использовать rfcomm, все протоколы будут обрабатываться bluez. Все что нужно, это Bluez и NetworkManager. Добавьте новое соединение Bluetooth:
Выберите найденную сеть:
Дальше вы можете посмотреть информацию о подключении и использовать сеть:
Выводы
В этой статье мы рассмотрели как выполняется настройка Bluetooth Ubuntu 16.04. Все работает очень просто, и хотя в графическом интерфейсе может быть не совсем понятно как что настроить, то в терминале все точно и понятно. Если у вас остались вопросы, спрашивайте в комментариях!
Напишите про настройку wi-fi, у многих он постоянно отваливается, переходит в спящий режим и отказывается перегружаться по команде "sudo service network-manager restart"
kaizer@KaizeR$ sudo apt-get install bluetooth bluez bluez-tools rfkill rfcomm
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Не удалось найти пакет rfcomm
kaizer@KaizeR$ sudo apt-get install bluez-firmware firmware-atheros
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Не удалось найти пакет bluez-firmware
E: Не удалось найти пакет firmware-atheros
Нет таких пакетов в Ubuntu 16.04. Система свежая.
sudo apt-get install bluetooth bluez bluez-tools rfkill rfcomm
sudo apt-get install bluez-firmware firmware-atheros
в этих двух строчках:
Не удалось найти пакет rfcomm
Не удалось найти пакет bluez-firmware
Не удалось найти пакет firmware-atheros
как быть дальше?
E: Не удалось найти пакет rfcomm Такая же фигня. Что делать ?
Попробуйте посмотреть, возможно, эта команда уже есть в вашей системе.
?! это ответ? попробуйте установить сами
У меня почему-то есть эта команда, и я точно помню, что ничего кроме того, что в статье на выполнял, вот и предложил, что либо она есть по умолчанию во всех дистрибутивах либо, она в одном из других пакетов, которые предложено установить. Что собственно и подтвердилось - sudo dpkg -S /usr/bin/rfcomm - bluez: /usr/bin/rfcomm. Утилита находится в пакете bluez.
Ну ок, а как добавить БТ гарнитуру ?
Есть ли возможность использования графической оболочки для выполненя команд?
Как в "окнах", нажал на кнопачку, и сразу видишь все устройства...
bluetoothctl;
connect [MAC гарнитуры];
Чтобы посмотреть, видно ли вообще устройство, hcitool scan;
А самое интересное, что всё это есть в статье
rfcomm отсутствует что делать то, беспроводные уши не хотят работать
По поводу вопроса FEST - надо выполнить
sudo /etc/init.d/bluetooth start
зуб включится
но адаптеры так и не находятся
lubuntu 17.04
Можно ли настроить автоматическое подключение ad2p bluetooth (блютус-колонки) при включении ПК? Подскажите пожалуйста
А без адаптора никак?
Пишет что нет rfcomm. так же при сканировании пишет что девайс не найден. Догадки догадками... решения есть?
а если там в ответ
sudo hciconfig hci0 up
Can't init device hci0: Operation not supported (95)
~# lsusb
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 004: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse
Bus 001 Device 003: ID 040b:2000 Weltrend Semiconductor
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Может с телефоном оно легко сопрягается, а вот с блютуз приемником музыкальным не захотело, выдает ошибку. Может есть идеи в чем проблема?
Ошибка в логах
root@sale03:/home/waleri# rfcomm connect hci0 41:42:39:87:0F:BA 2
Can't connect RFCOMM socket: Connection refused
Ну всё подключилось к смартфону Андроид ноутбук с Дебиан но мне надо было наушники к ноутбуку.
спасибо! благодаря этой статье смог подключить гарнитуру honor к macbook pro 15 retina A1398 под управлением Ubuntu 22.04!!!