Как подключиться к устройству Bluetooth из терминала Linux
Для парней, которые проводят большую часть времени в терминале, имеет смысл подключаться к терминалам, таким как динамики, передатчики и любые другие электронные устройства, с большим количеством соединений. В этой статье мы обсудим, как вы можете управлять устройством Bluetooth с терминала Linux — дистрибутивов на основе Ubuntu, Debian, Fedora и Arch.
Беспроводная технология Bluetooth является всемирной спецификацией для недорогого решения радиосвязи с малым форм-фактором, которое обеспечивает связь между мобильными компьютерами, мобильными телефонами, другими портативными карманными устройствами и подключение к Интернету. Спецификация разрабатывается, публикуется и продвигается Специальной группой по интересам Bluetooth (SIG) .
В этом руководстве мы будем использовать BlueZ, который обеспечивает поддержку основных уровней и протоколов Bluetooth. Это гибкий, эффективный и использует модульную реализацию. Он имеет следующие ключевые особенности.
- Полная модульная реализация
- Симметричная мульти-безопасная обработка
- Многопоточная обработка данных
- Поддержка нескольких устройств Bluetooth
- Реальная аппаратная абстракция
- Стандартный интерфейс сокетов для всех слоев
- Поддержка безопасности устройства и уровня обслуживания
Установка BlueZ на Linux
Установите пакеты BlueZ с помощью любой из следующих команд, соответствующих вашему дистрибутиву Linux.
----- Ubuntu / Debian -----
$ sudo apt-get -y install bluetooth bluez bluez-tools rfkill
----- Fedora -----
$ sudo dnf -y install bluez bluez-tools
----- Arch Linux / Manjaro -----
$ sudo pacman -S bluez bluez-utils
Эта установка предоставляет bluetoothctl
утилиту. Вам необходимо добавить свою учетную запись в группу lp, если вы хотите подключиться к Bluetooth-модему.
sudo usermod -aG lp $USER
newgrp lp
Устройство Bluetooth должно быть запущено и включено.
$ systemctl is-enabled bluetooth.service enabled $ systemctl status bluetooth.service ● bluetooth.service - Bluetooth service Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2019-11-30 17:14:12 EAT; 3h 55min ago Docs: man:bluetoothd(8) Main PID: 1638 (bluetoothd) Tasks: 1 (limit: 18590) Memory: 2.3M CPU: 47ms CGroup: /system.slice/bluetooth.service └─1638 /usr/libexec/bluetooth/bluetoothd Nov 30 17:14:12 myfed.example.net systemd[1]: Starting Bluetooth service... Nov 30 17:14:12 myfed.example.net bluetoothd[1638]: Bluetooth daemon 5.52 Nov 30 17:14:12 myfed.example.net systemd[1]: Started Bluetooth service. Nov 30 17:14:12 myfed.example.net bluetoothd[1638]: Starting SDP server Nov 30 17:14:12 myfed.example.net bluetoothd[1638]: Bluetooth management interface 1.14 initialized Nov 30 21:07:52 myfed.example.net bluetoothd[1638]: Endpoint registered: sender=:1.77 path=/MediaEndpoint/A2DPSink/sbc Nov 30 21:07:52 myfed.example.net bluetoothd[1638]: Endpoint registered: sender=:1.77 path=/MediaEndpoint/A2DPSource/sbc
Как выполнить сопряжение и подключиться к устройству Bluetooth
Мы будем использовать bluetoothctl CLI Т.П. настроить BlueZ . Если у вас есть альтернативный интерфейсный инструмент, такой как GNOME Bluetooth, вы можете использовать его вместо этого.
Сначала убедитесь, что Bluetooth не отключен.
$ rfkill ID TYPE DEVICE SOFT HARD 0 bluetooth tpacpi_bluetooth_sw blocked unblocked 1 wlan phy0 unblocked unblocked
Если он заблокирован, разблокируйте его с помощью команды ниже.
$ rfkill unblock bluetooth
Подтвердите, что он разблокирован.
$ rfkill
ID TYPE DEVICE SOFT HARD
0 bluetooth tpacpi_bluetooth_sw unblocked unblocked
1 wlan phy0 unblocked unblocked
2 bluetooth hci0 unblocked unblocked
Использование bluetoothctl для подключения к устройству Bluetooth
Это общий план сопряжения устройства с использованием bluetoothctl .
- Запустите интерактивную команду bluetoothctl .
$ bluetoothctl Agent registered $ bluetoothctl show Controller 20:79:18:5E:4B:64 (public) Name: myfed.example.net Alias: myfed.example.net Class: 0x000c010c Powered: yes Discoverable: no DiscoverableTimeout: 0x00000000 Pairable: no UUID: Headset AG (00001112-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb) UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb) UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb) UUID: Headset (00001108-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb) UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb) UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb) UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb) Modalias: usb:v1D6Bp0246d0534 Discovering: no Advertising Features: ActiveInstances: 0x00 SupportedInstances: 0x05 SupportedIncludes: tx-power SupportedIncludes: appearance SupportedIncludes: local-name
Ввод, help
чтобы получить список доступных команд.
- Включите адаптер Bluetooth
[bluetooth]# agent KeyboardOnly
Agent is already registered [bluetooth]# default-agent Default agent request successful [bluetooth]# power on Changing power on succeeded
- Сделайте сканирование, чтобы обнаружить ваши устройства Bluetooth
# scan on Discovery started [CHG] Controller 20:79:18:5E:4B:64 Discovering: yes [NEW] Device 14:AB:C5:CC:C7:AB 14-AB-C5-CC-C7-AB [CHG] Device 14:AB:C5:CC:C7:AB TxPower: 8 [CHG] Device 14:AB:C5:CC:C7:AB Name: DESKTOP-N9GVMQ2 [CHG] Device 14:AB:C5:CC:C7:AB Alias: DESKTOP-N9GVMQ2 [CHG] Device 14:AB:C5:CC:C7:AB UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device 14:AB:C5:CC:C7:AB UUIDs: 0000110a-0000-1000-8000-00805f9b34fb [CHG] Device 14:AB:C5:CC:C7:AB UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 14:AB:C5:CC:C7:AB UUIDs: 0000111f-0000-1000-8000-00805f9b34fb [CHG] Device 14:AB:C5:CC:C7:AB UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [NEW] Device 5C:FB:7C:A4:13:C6 JBL Clip 3
- Сопряжение с обнаруженным устройством Bluetooth
[bluetooth]# pair 5C:FB:7C:A4:13:C6 Attempting to pair with 5C:FB:7C:A4:13:C6 [CHG] Device 5C:FB:7C:A4:13:C6 Connected: yes [CHG] Device 5C:FB:7C:A4:13:C6 UUIDs: 00001108-0000-1000-8000-00805f9b34fb [CHG] Device 5C:FB:7C:A4:13:C6 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device 5C:FB:7C:A4:13:C6 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device 5C:FB:7C:A4:13:C6 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 5C:FB:7C:A4:13:C6 UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [CHG] Device 5C:FB:7C:A4:13:C6 ServicesResolved: yes [CHG] Device 5C:FB:7C:A4:13:C6 Paired: yes Pairing successful # trust 5C:FB:7C:A4:13:C6 [CHG] Device 5C:FB:7C:A4:13:C6 Trusted: yes Changing 5C:FB:7C:A4:13:C6 trust succeeded # paired-devices Device 5C:FB:7C:A4:13:C6 JBL Clip 3 # devices Device 5C:FB:7C:A4:13:C6 JBL Clip 3
- Подключиться к устройству после сопряжения
[bluetooth]# connect 5C:FB:7C:A4:13:C6 Attempting to connect to 5C:FB:7C:A4:13:C6 [CHG] Device 5C:FB:7C:A4:13:C6 Connected: yes Connection successful [JBL Clip 3]# info Device 5C:FB:7C:A4:13:C6 (public) Name: JBL Clip 3 Alias: JBL Clip 3 Class: 0x00200414 Icon: audio-card Paired: yes Trusted: yes Blocked: no Connected: yes LegacyPairing: no UUID: Headset (00001108-0000-1000-8000-00805f9b34fb) UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb) UUID: Handsfree (0000111e-0000-1000-8000-00805f9b34fb) ManufacturerData Key: 0x0057 ManufacturerData Value: 01 00 cb 0e d0 1e 03 01 ........ RSSI: -21 TxPower: 0
Включите адаптер Bluetooth при включении
Чтобы включить адаптер Bluetooth при запуске системы, нужно отркрить файл конфигурации.
$ sudo vim /etc/bluetooth/main.conf
Добавьте строку AutoEnable=true
[Policy]
AutoEnable=true