BluetoothJe suis en train de travailler sur un vieux iMac d’un client en vue de le migrer d’une installation obsolète de macOS vers Linux. Et je me retrouve confronté à un périphérique que je n’ai jamais vu, et qui me pose un problème inédit : une souris sans fil Apple Magic, qui est censée être reliée à l’ordinateur via le Bluetooth.

Le hic, c’est que l’interface graphique qui me permet de connecter un périphérique Bluetooth nécessite justement que la souris fonctionne. On se retrouve donc confronté à une problématique semblable à celle de la poule et de l’œuf. Je peux certes me sortir de ce dilemme en branchant provisoirement une souris filaire. Mais il n’y a pas moyen de configurer une connexion automatique au démarrage de la machine.

Chicken Install

Dans ce cas, on va donc faire comme nos ancêtres qui chassaient l’ours à mains nues. On va revenir aux fondamentaux et définir une connexion automatique à la main.

Tester le Bluetooth en ligne de commande

Dans un premier temps, on va vérifier si le démon bluetoothd est activé :

$ systemctl status bluetooth.service
● bluetooth.service - Bluetooth service
   Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; ...)
   Active: active (running) since Wed 2023-03-22 07:52:55 CET; 12min ago
     Docs: man:bluetoothd(8)
 Main PID: 719 (bluetoothd)
   Status: "Running"
    Tasks: 1 (limit: 23235)
   Memory: 2.9M
   CGroup: /system.slice/bluetooth.service
           └─719 /usr/libexec/bluetooth/bluetoothd

J’affiche les périphériques Bluetooth à ma portée :

$ bluetoothctl scan on
Discovery started
[CHG] Controller 64:B9:E8:E3:BD:75 Discovering: yes
[CHG] Device 00:26:BB:7F:A3:07 LegacyPairing: yes
[CHG] Device 00:26:BB:7F:A3:07 RSSI: -47

Je n’en vois qu’un seul, c’est donc vraisemblablement ma souris. J’essaie de me connecter :

$ bluetoothctl connect 00:26:BB:7F:A3:07
Attempting to connect to 00:26:BB:7F:A3:07
[CHG] Device 00:26:BB:7F:A3:07 Connected: yes
Connection successful

Je me rends compte que c’est effectivement ma souris et que je peux l’utiliser dans mon environnement graphique. Je vais donc la désigner comme périphérique de confiance pour les connexions ultérieures :

$ bluetoothctl trust 00:26:BB:7F:A3:07
[CHG] Device 00:26:BB:7F:A3:07 Trusted: yes
Changing 00:26:BB:7F:A3:07 trust succeeded

Connexion automatique au démarrage

À présent, j’aimerais bien que ma souris se connecte automatiquement au démarrage de la machine. Pour ce faire, je vais d’abord éditer un petit script shell simple connect-mouse.sh que je vais ranger dans un endroit approprié comme /usr/local/bin par exemple :

#!/bin/bash
#
# connect-mouse.sh

bluetoothctl connect 00:26:BB:7F:A3:07

exit 0

Je n’oublie pas de rendre ce script exécutable :

# chmod +x /usr/local/bin/connect-mouse.sh

Ce script doit être lancé automatiquement au démarrage du système. Je vais donc créer un fichier /etc/systemd/system/connect-mouse.service que je vais éditer comme ceci :

[Unit]
Description=Connect Bluetooth Mouse
After=sddm.service

[Service]
ExecStart=/usr/local/bin/connect-mouse.sh

[Install]
WantedBy=graphical.target

Je prends en compte et j’active cette nouvelle configuration :

# systemctl daemon-reload
# systemctl enable connect-mouse.service 
Created symlink /etc/systemd/system/graphical.target.wants/connect-mouse.service → 
/etc/systemd/system/connect-mouse.service.

Je redémarre l’iMac et je constate que ma souris fonctionne correctement à l’affichage du gestionnaire de connexion SDDM. Je vérifie ce que ça donne sous le capot :

$ systemctl status connect-mouse.service 
● connect-mouse.service - Connect Bluetooth Mouse
   Loaded: loaded (/etc/systemd/system/connect-mouse.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2023-03-22 08:33:02 CET; 1min 6s ago
  Process: 909 ExecStart=/usr/local/bin/connect-mouse.sh (code=exited, status=0/SUCCESS)
 Main PID: 909 (code=exited, status=0/SUCCESS)

mars 22 08:33:00 imac-bernard systemd[1]: Started Connect Bluetooth Mouse.
mars 22 08:33:02 imac-bernard connect-mouse.sh[913]: Attempting to connect to 00:26:BB:7F:A3:07
mars 22 08:33:02 imac-bernard connect-mouse.sh[913]: [49B blob data]
mars 22 08:33:02 imac-bernard connect-mouse.sh[913]: Connection successful
mars 22 08:33:02 imac-bernard systemd[1]: connect-mouse.service: Succeeded.

La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *