Устройства 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. Все работает очень просто, и хотя в графическом интерфейсе может быть не совсем понятно как что настроить, то в терминале все точно и понятно. Если у вас остались вопросы, спрашивайте в комментариях!
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали





Напишите про настройку 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!!!