🐧 Как подключиться к устройству Bluetooth из терминала Linux
В этой статье мы обсудим, как вы можете управлять устройством Bluetooth с терминала Linux — дистрибутивов на основе Ubuntu, Debian, Fedora и Arch.
Беспроводная технология Bluetooth является всемирной спецификацией для недорогого решения радиосвязи с малым форм-фактором, которое обеспечивает связь между мобильными компьютерами, мобильными телефонами, другими портативными портативными устройствами и подключение к Интернету.
Спецификация разработана, опубликована и продвигается Специальной группой по интересам Bluetooth (SIG).
В этом руководстве мы будем использовать BlueZ, который обеспечивает поддержку основных уровней и протоколов Bluetooth.
Это гибкий, эффективный инструмент, который использует модульную реализацию. Он имеет следующие ключевые особенности.
- Полная модульная реализация
- С имметричная мульти-безопасная обработка
- Многопоточная обработка данных
- Поддержка нескольких устройств Bluetooth
- Реальная аппаратная абстракция
- Стандартный интерфейс сокетов для всех слоев
- П оддержка безопасности устройств и уровня обслуживания
Установка BlueZ на Linux
Установите пакеты BlueZ с помощью любой из следующих команд, соответствующих вашему дистрибутиву Linux.
Эта установка предоставляет утилиту bluetoothctl.
Вам необходимо добавить свою учетную запись в группу lp, если вы хотите подключиться к Bluetooth-модему.
Как выполнить сопряжение и подключиться к устройству Bluetooth
Мы собираемся использовать интерфейс командной строки bluetoothctl tp bluez.
Если у вас есть альтернативный интерфейсный инструмент, такой как GNOME Bluetooth, вы можете использовать его.
Сначала убедитесь, что Bluetooth не отключен.
Подтвердите, что он разблокирован.
Использование bluetoothctl для подключения к устройству Bluetooth
Это общий план сопряжения устройства с использованием bluetoothctl.
Запустите интерактивную команду bluetoothctl.
Введите help, чтобы получить список доступных команд.
Включите адаптер Bluetooth
Включите адаптер Bluetooth при запуске системы
Чтобы включить адаптер Bluetooth при запуске системы, откройте файл конфигурации.
Настройка Bluetooth Ubuntu 16.04
Устройства Bluetooth встречаются довольно часто в наше время. Это простой и дешевый способ добавить поддержку беспроводных технологий для смартфона или любого другого гаджета. Система Linux может использовать различные протоколы: OBEX, A2DP, DUN, HID и другие для взаимодействия с различными устройствами.
В этой статье мы рассмотрим как выполняется настройка Bluetooth Ubuntu 16.04. Рассмотрим как установить драйвера и настроить связь между двумя устройствами.
Первоначальная настройка
Большинство 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:
Если устройство заблокировано, программной или аппаратной блокировкой, необходимо разблокировать его с помощью команды rfkill:
sudo rfkill unblock bluetooth
Включить адаптер можно с помощью команды hciconfig:
sudo hciconfig hci0 up
Дальше можно начать сканирование. Только перед этим убедитесь, что на другом устройстве Bluetooth включен и не находится в скрытом режиме. Для сканирования выполните:
После завершения вы увидите доступное устройство. Здесь будет отображаться его имя и MAC адрес.
Чтобы узнать более подробную информацию об устройстве, вы можете использовать утилиту sdptool:
sdptool browse D0:B3:3F:96:2A:30
Вы можете сразу отфильтровать какие возможности поддерживает обнаруженное устройство:
sdptool browse D0:B3:3F:96:2A:30 | grep ‘Service Name:’
Также вы можете использовать интерактивный инструмент bluetoothctl:
[bluetooth]# info D0:B3:3F:96:2A:30Также вы можете проверить доступность удаленного устройства с помощью утилиты 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:
Отправка и прием файлов по OBEX
Дальше вы можете очень просто отправить файл на удаленное устройство с помощью протокола OBEX. Синтаксис:
sudo bt-obex -p MAC_адрес_устройства /путь/к/файлу
sudo bt-obex -p D0:B3:3F:96:2A:30
Чтобы получить файл вам нужно запустить сервис 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. Все работает очень просто, и хотя в графическом интерфейсе может быть не совсем понятно как что настроить, то в терминале все точно и понятно. Если у вас остались вопросы, спрашивайте в комментариях!
Bluetooth в Linux
1. Вступление
А вы знаете, что настроить bluetooth соединение с PC на Linux совсем не сложно?
Итак, сейчас мы создадим подключение к телефону\PDA, примонтируем файловую систему телефона к оной на ПК и создадим GPRS\EDGE подключение.
Железо, на котором тестировал — ноутбук ASUS M51TR, мобилки — Motorola L9, Motorola E398. Все это на Kubuntu 8.10.
Необходимые пакеты:
- fuse-utils
- obexftp
- obexfs
- obextool
- bluez-utils
2. Находим телефон.
Для этого, нам нужно знать MAC-адрес телефона и номера каналов неободимых нам сервисов.
С помощью sdptool ищем наш телефон в зоне досягаемости:
sdptool browse
Она выведет в терминал что-то вроде этого:
Inquiring .
Browsing 00:17:E4:1B:D2:E3 .
Где 00:17:E4:1B:D2:E3 и есть мак-адрес.
А далее последуют описания сервисов, которые предоставляет сотовый телефон, например, для Dial-Up Networking:
Service Name: Dial-up Networking Gateway
Service Description: Dial-up Networking Gateway
Service Provider: Motorola
Service RecHandle: 0x10001
Service Class ID List:
«Dialup Networking» (0x1103)
Protocol Descriptor List:
«L2CAP» (0x0100)
«RFCOMM» (0x0003)
Channel: 1
[сократил, так как много ненужной нам инфы]
Жирным выше я выделил ключевые моменты.
Service Name — название сервиса.
Service Provider — в большинстве случаев — модель телефона (полезно, когда найдено много устройств).
Channel — второй обязательный пункт, после MAC-адреса.
Ицем номера каналов для нужных сервисов (DUN, FTP) и регистрируем:
sdptool add DUN
sdptool add FTP
3. Подключаем
Редактируем файл /etc/bluetooth/rfcomm.conf, добавляя подключения:
rfcomm0 <
bind yes;
device 00:17:E4:1B:D2:E3;
channel 1;
comment «Dialup Networking Gateway»;
>
bind — автоматически подключать устройство при старте системы,
device — MAC-адрес,
channel — канал.
Каждый новый сервис добавляется как rfcommN, где N — число. Элементарно, просто страхуюсь 😉
Сохраняемся и проверяем работоспособность:
sudo rfcomm bind all
rfcomm
Получаем на выхлопе следующее:
rfcomm0: 00:17:E4:1B:D2:E3 channel 1 clean
rfcomm1: 00:17:E4:1B:D2:E3 channel 9 clean
rfcomm2: 00:17:E4:1B:D2:E3 channel 8 clean
Если так, то все ОК, девайсы найдены и подключены, если нет — проверьте rfcomm.conf
4. Монтируем
Нужен сервис — OBEX FTP.
Создаем точку монтирования:
sudo mkdir -m777 /media/mobile
Добавляем пользователя в группу fuse, что бы он мог монтировать ФС:
sudo usermod -aG fuse username
Монтируем*:
obexfs -b00:17:E4:1B:D2:E3 -B9 /media/mobile
-b = MAC
-B = channel
или
obexfs -t /dev/rfcomm0 /media/mobile
Затем:
cd /media/mobile
ls
Вуаля:
audio MMC(Removable) picture video
Размонтирование, все просто:
umount /media/mobile
*Возможно при первом подключении будет выдан запрос на спаривание устройств. Введите, например, «1234» на телефоне, а затем на ПК.
5. GPRS\EDGE
Нужен сервис — DUN (Dial-Up Networking)
У меня KDE, так что запускаем kppp.
Configure -> Modems -> New -> Device,
где Modem device сконфигуренный вами девайс\канал для DUN (см. /etc/bluetooth/rfcomm.conf)
Все там же: переходим на таб Modem->Modem Commands
(дальше настройки для белорусского MТС, смотрите на сайте оператора):
Initialization String 1: AT+CGDCONT=1,«IP»,«mts»
Initialization String 2: ATZ
Что бы проверить, нажмите Query Modem.
Модем настроен, настраиваем подключение:
Главное окошко настроек -> Accounts -> New -> Manual Setup
Указываем имя, допустим, MTS BY
Добавляем номер телефона: *99# или *99***1#.
Готово. Выбираем в kppp аккаунт и модем, и в сеть!
(kppp->use modem -> %configured modem% ->Connect)
Спасибо за внимание!
UPD: переименовал топик, что бы не путать 😉