Périphériques bluetooth

Mise à jour : Debian 11.1 Bullseye

Références

Sommaire

1 - Installation

1.1 - Vérifier la prise en charge du bluetooth

$ sudo dmesg |grep -i bluetooth
[ 139.195571] Bluetooth: Core ver 2.22
.......
$ ls -l /sys/class/bluetooth/hci0
lrwxrwxrwx 1 root root 0 26 oct. 19:22 /sys/class/bluetooth/hci0 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/bluetooth/hci0
$ lsusb -t |grep "Port 10" |grep "If 1"
|__ Port 10: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
$ lsusb -s 1:4
Bus 001 Device 004: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)

$ lsusb -s 1:4 -v
....
$ lsmod |grep btusb
btusb 65536 0
btrtl 24576 1 btusb
btbcm 20480 1 btusb
btintel 32768 1 btusb
bluetooth 737280 50 btrtl,hidp,btintel,btbcm,bnep,btusb,rfcomm
usbcore 323584 4 xhci_hcd,usbhid,btusb,xhci_pci
$ sudo aptitude install rfkill
$ sudo rfkill list bluetooth
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
$ sudo rfkill unblock bluetooth
$ sudo systemctl status bluetooth
$ sudo systemctl start bluetooth

1.2 - Installer le paquet bluetooth

$ sudo aptitude install bluetooth
$ sudo aptitude install bluez-cups
$ hcitool dev
Devices:
hci0 38:xx:xx:xx:xx:4C
$ hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: 50:EB:71:93:21:22 ACL MTU: 1021:4 SCO MTU: 96:6
UP RUNNING PSCAN
RX bytes:66589 acl:284 sco:0 events:4881 errors:0
TX bytes:36416 acl:188 sco:0 commands:4459 errors:0
Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH SNIFF
Link mode: SLAVE ACCEPT
Name: 'debian'
Class: 0x3c0104
Service Classes: Rendering, Capturing, Object Transfer, Audio
Device Class: Computer, Desktop workstation
HCI Version: 5.1 (0xa) Revision: 0x100
LMP Version: 5.1 (0xa) Subversion: 0x100
Manufacturer: Intel Corp. (2)

Si à la place de UP RUNNING PSCAN, apparaît DOWN, réinitialiser la carte :

$ sudo hcinconfig hci0 up

1.3 - Vérification de la détection des périphériques

Seuls les périphériques émetteurs seront détectés (il peut-être nécessaire de les mettre en mode appariement pour les détecter)

$ sudo hcitool inq
Inquiring ...
B0:xx:xx:xx:xx:90 clock offset: 0x70bf class: 0x5a020c
$ sudo hcitool scan
Scanning ...
38:8A:BE:00:7C:F8 OPPO A72
34:27:92:23:33:EA Freebox Player Mini v2 3977
20:73:03:78:43:4A Bluetooth Keyboard
EC:FA:5C:E9:38:B4 MIBOX4 nown

3 - Appairage d'un périphérique audio

3.1 - Installation

$ sudo aptitude install pulseaudio pulseaudio-module-bluetooth pavucontrol xfce4-pulseaudio-plugin

3.2 - Appairage en ligne de commande

$ bluetoothctl
Agent registered
[bluetooth]# help
Menu main:
Available commands:
-------------------
advertise Advertise Options Submenu
scan Scan Options Submenu
gatt Generic Attribute Submenu
list List available controllers
show [ctrl] Controller information
select <ctrl> Select default controller
devices List available devices
paired-devices List paired devices
system-alias <name> Set controller alias
reset-alias Reset controller alias
power <on/off> Set controller power
pairable <on/off> Set controller pairable mode
discoverable <on/off> Set controller discoverable mode
agent <on/off/capability> Enable/disable agent with given capability
default-agent Set agent as the default one
advertise <on/off/type> Enable/disable advertising with given type
set-alias <alias> Set device alias
scan <on/off> Scan for devices
info [dev] Device information
pair [dev] Pair with device
trust [dev] Trust device
untrust [dev] Untrust device
block [dev] Block device
unblock [dev] Unblock device
remove <dev> Remove device
connect <dev> Connect device
disconnect [dev] Disconnect device
menu <name> Select submenu
version Display version
quit Quit program
exit Quit program
help Display help about this program
export Print evironment variables
[bluetooth]# list
Controller 38:xx:xx:xx:xx:4C buster [default]

Si plusieurs contrôleurs sont disponibles, pour sélectionner un contrôleur par défaut :

[bluetooth]# select 38:xx:xx:xx:xx:4C

Pour afficher les propriétés du contrôleur par défaut

[bluetooth]# show
Controller 38:xx:xx:xx:xx:4C (public)
Name: buster
Alias: buster
Class: 0x001c0104
Powered: yes
Discoverable: yes
Pairable: yes
UUID: Headset AG (00001112-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb)
UUID: OBEX File Transfer (00001106-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb)
UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: IrMC Sync (00001104-0000-1000-8000-00805f9b34fb)
UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)
UUID: Vendor specific (00005005-0000-1000-8000-0002ee000001)
UUID: Message Notification Se.. (00001133-0000-1000-8000-00805f9b34fb)
UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)
UUID: Message Access Server (00001132-0000-1000-8000-00805f9b34fb)
UUID: Headset (00001108-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0532
Discovering: no

Si la ligne Powered: no s'affiche, mettre l'interface sous tension avec :

[bluetooth]# power on
# power on
Changing power on succeeded

Lister les agents possibles (double tab après la commande)

# agent [tab][tab]
DisplayOnly KeyboardDisplay NoInputNoOutput on
DisplayYesNo KeyboardOnly off on

Définir l'utilisation d'un agent

[bluetooth]# agent on
Agent is already registered

Utiliser l'agent par défaut

[bluetooth]# default-agent
Default agent request successful

Afficher les périphériques bluetooth mémorisés

[bluetooth]# devices
Device C0:xx:xx:xx:46 WONDERBOOM

Si le périphérique recherché n'apparaît pas, lancer un scan (passer le périphérique en mode appariement)

[bluetooth]# scan on
Discovery started
[CHG] Controller 38:BA:F8:32:71:4C Discovering: yes
[NEW] Device 96:xx:xx:xx:xx:5E ENVY Photo 6200 series
[NEW] Device F8:xx:xx:xx:xx:2B [TV] Samsung 6 Series (55)

Lorsque le périphérique apparaît, stopper le scan

[bluetooth]# scan off

Vérifier les caractéristiques du périphérique

[bluetooth]# info 96:xx:xx:xx:xx:5E
Device 96:xx:xx:xx:xx:5E (public)
Name: ENVY Photo 6200 series
Alias: ENVY Photo 6200 series
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: Hewlett-Packard Company (0000fe78-0000-1000-8000-00805f9b34fb)
ManufacturerData Key: 0x0065
ManufacturerData Value: 01 c9 05

Vérifier que le contrôleur est en mode appairable, sinon

[bluetooth]# pairable on

Rendre le contrôleur visible

[bluetooth]# discoverable on

Définir le périphérique comme "sur" (nécessaire dans le cas d'un périphérique sans mot de passe)

[bluetooth]# trust C0:xx:xx:xx:xx:46
Changing C0:xx:xx:xx:xx:46 trust succeeded
[bluetooth]# pair C0:xx:xx:xx:xx:46
Attempting to pair with C0:xx:xx:xx:xx:46
..........

Rendre le contrôleur invisible

[bluetooth]# discoverable off

Vérification de l'appairage

[bluetooth]# paired-devices
Device C0:xx:xx:xx:xx:46 WONDERBOOM
[bluetooth]# connect C0:xx:xx:xx:xx:46
Attempting to connect to C0:xx:xx:xx:xx:46
[CHG] Device C0:xx:xx:xx:xx:46 Connected: yes
Connection successful
[CHG] Device C0:xx:xx:xx:xx:46 ServicesResolved: yes

Dans Pavucontrol, onglet Périphériques de sortie, le périphérique connecté, ici WONDERBOOM apparaît.

3.3 - Appairage avec interface graphique

$ sudo aptitude install blueman
$ sudo bluetoothctl
Agent registred
[WONDERBOOM]#

Pavucontrol sortie

Pavucontrol Onglet configuration

4 - Utilisation

$ speaker-test -t wav -c 6

Pavucontrol Onglet Lecture