J’ai depuis deux ans, un Raspberry Pi à la maison pour écouter des radios par internet avec MPD et MPC.
Depuis peu, j’ai un haut parleur Bluetooth, qui se connecte au Raspberry par le biais d’un dongle usb de ce type. Le tout fonctionne bien, mais pour éviter de planter le service MPD il faut arrêter la lecture avant d’éteindre le haut parleur. Dans le cas contraire, il faut se connecter au Raspberry en SSH et lui coller :
1 |
sudo service mpd restart |
C’est soit ça, soit un redémarrage du Pi.
Pour éviter ceci, j’utilise UDEV qui est déjà présent sur votre distribution car c’est un gestionnaire de périphérique sous linux.
Nous allons lui dire d’exécuter un script quand notre haut parleur se connecte et un autre script à la déconnexion.
1 |
sudo nano /etc/udev/rules.d/99-input.rules |
et ajouter les deux lignes :
1 2 |
ACTION=="add", KERNEL=="input[0-9]*", RUN+="/usr/lib/udev/bluetooth_add" ACTION=="remove", KERNEL=="input[0-9]*", RUN+="/usr/lib/udev/bluetooth_remove" |
la première ligne va lancer le script /usr/lib/udev/bluetooth_add à la connexion (ACTION==”add”)
et la deuxième ligne va lancer le script /usr/lib/udev/bluetooth_remove à la déconnexion (ACTION==”remove”)
Reste à créer les scripts :
1 2 3 4 5 |
sudo mkdir /usr/lib/udev sudo touch /usr/lib/udev/bluetooth_add sudo touch /usr/lib/udev/bluetooth_remove sudo chmod 774 /usr/lib/udev/bluetooth_add sudo chmod 774 /usr/lib/udev/bluetooth_remove |
Contenu de /usr/lib/udev/bluetooth_add :
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash for dev in $(find /sys/devices/virtual/input/ -name input*) do if [ -f "$dev/name" ] then sudo service mpd restart mpc play fi done |
Contenu de /usr/lib/udev/bluetooth_remove :
1 2 3 4 |
#!/bin/bash sudo service mpd restart mpc stop |
Problème réglé.
Petit bonus pour les heureux parents bidouilleurs qui pour des raisons absconses aux yeux de certains ne souhaitent pas lancer la musique trop forte quand leurs enfants dorment (enfin !)
Voici comment modifier le script de connexion /usr/lib/udev/bluetooth_add :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/bin/bash heure24=$(date +%H) for dev in $(find /sys/devices/virtual/input/ -name input*) do if [ -f "$dev/name" ] then sudo service mpd restart if [ $heure24 -ge 8 ] && [ $heure24 -lt 21 ] then mpc volume 70 else mpc volume 30 fi mpc play fi done |
Volume à 70 le jour entre 8h00 et 21h00
Volume à 30 la nuit entre 21h00 et 8h00
Si vous avez aimé, si cela vous a aidé, ou si vous avez un petit script, merci de laisser un commentaire 😉