Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ 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
$ 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 tp bluez.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ GNOME Bluetooth, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ.
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Bluetooth Π½Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½.
$ rfkill
ID TYPE DEVICE SOFT HARD
0 bluetooth tpacpi_bluetooth_sw blocked unblocked
1 wlan phy0 unblocked unblocked
$ rfkill unblock 0
ΠΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½.
$ 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
# 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]# 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
2 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π±Π»ΡΡΡΠ· ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΠΈΠ½ΡΠΊΡ Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ ΠΠΈΠ½Ρ?
Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Debian Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ?