Lancer un script quand un appareil Bluetooth se connecte et se déconnecte

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 :

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.

et ajouter les deux lignes :

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 :

Contenu de /usr/lib/udev/bluetooth_add :

Contenu de /usr/lib/udev/bluetooth_remove :

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 :

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 😉

5 commentaires

  1. Merci pour cet article, ça m’a bien aidé. Pour éviter le crash de mpd, j’utilise le plugin both dans alsa (asound.cond) entre le bluetooth et la sortie jack. Malheureusement après une deco BT, le son laggait toutes les 10s. Je devais désactiver la sortie BT (mpc disable 1) et relancer le daemon bluetoothd.
    Je me suis inspiré de ta méthode en adaptant les scripts :
    bluetooth_add
    {
    mpc enable 1
    mpc play
    }
    bluetooth_remove
    {
    mpc disable 1
    sleep 2
    bluetoothd reload
    }
    Merci !!!!

  2. Merci pour ton retour. Pour info, j’ai oublié de dire que le script de l’article fonctionne avec cette configuration de asound.conf :

    pcm.!default {
    type bluetooth
    device 88:C6:26:40:AD:B3
    profile « auto »
    }

    Le son sort uniquement par le bluetooth et pas par la prise jack. J’ai souvenir d’avoir vu une plus grosse consommation CPU et RAM en mode « both ». La température du raspberry (modèle B) m’avait alerté.

  3. j’ai regardé avec htop et en effet ça consomme.
    Ma raspberry b+ diffuse principalement sur les RCA du dac Hifiberry (cpu 25%). Quand je connecte mon enceinte Bluetooth le cpu fluctue entre 60 et 80%. Et si en plus je me connecte sur le flux (port 8000 en local), cpu 100% et mpd crash. Avoir les 3 en même temps ne devrait jamais arriver, mais je vais réfléchir à diminuer la conso de la partie Bluetooth. Hier soir j’ai ajouté des boutons d’actions (shutdown, play/pause,next,radios,et shuffle sur tte la bibli), c’est drôlement pratique.

  4. Je diffuse uniquement en bluetooth et la charge cpu varie entre 20 et 40% (ce qui colle avec ton constat)

    J’ai passé commande pour un afficheur LCD (16*2) + boutons de chez adafruit pour contrôler la musique et voir le morceau ou la radio en cours de lecture. (24€ sur amazon)

Laisser un commentaire

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

81 + = 87