6135 links
  • GuiGui's Show
  • Home
  • Login
  • RSS Feed
  • ATOM Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
 
  • Rediriger automatiquement la sortie et l'entrée audio vers un casque audio + micro USB lors de son branchement

    J'ai un ordinateur portable avec une station d'accueil. Sur cette station d'accueil, je branche un casque audio + micro USB. Il m'arrive très souvent de débrancher cet ordinateur portable de sa station d'accueil. À chaque rebranchement, je suis obligé de refaire la configuration PulseAudio afin de définir mon casque et son micro comme périphérique de sortie et d'entrée. Ce n'est plus possible, il faut rendre ça automatique.

    La méthode consistant à utiliser udev pour passer des commandes à PulseAudio via pamcmd ou pactl ne fonctionne plus. Avant, il suffisait de lancer un script udev qui se fork en arrière-plan, ce qui permettait à PulseAudio de continuer son déroulement, donc de détecter le matériel audio puis à notre script de passer des commandes PulseAudio concernant ce matériel. Désormais, au moins dans Debian Stretch, l'implémentation habituelle d'udev est remplacée par celle de systemd-udevd. Ainsi, un fork (+ sleep) est désormais pris en compte par systemd-udevd et bloque la découverte du matériel par PulseAudio. Cela se constate avec sudo systemctl status udev.service (on constate l'arborescence des processus sous systemd-udevd, dont notre sleep).

    Passons à la méthode que j'utilise :

    • On crée le fichier ~/.config/pulse/default.pa avec le contenu suivant :

      .include /etc/pulse/default.pa
      load-module module-switch-on-connect


    • On fait prendre en compte cette modif' par PulseAudio : pactl load-module module-switch-on-connect ;

    • À partir d'ici, PulseAudio basculera automatiquement sur tout nouveau périphérique audio qui sera connecté. Le dernier périphérique audio branché à un instant T sera celui qui sera utilisé. En entrée comme en sortie. Or, mon dock monte aussi un périphérique audio (probablement lié au port HDMI). Si jamais cette interface monte après mon casque, PulseAudio l'utilisera. Nous allons empêcher cela via un script udev dans /usr/local/bin/headset-delay.sh :

      #!/bin/bash
      logger -t /usr/local/bin/headset-delay.sh HEADSET ON
      sleep 2
      logger -t /usr/local/bin/headset-delay.sh HEADSET CONFIGURED


    • On rend ce script exécutable : sudo chmod +x /usr/local/bin/headset-delay.sh ;

    • On ajoute une règle udev qui exécute le script précédent dès que le casque est branché dans /etc/udev/rules.d/01-headset.rules (les ID se trouvent dans /var/log/kern.log quand on branche le casque) :

      ACTION=="add", ATTR{idVendor}=="1395", ATTR{idProduct}=="0029", RUN+="/usr/local/bin/headset-delay.sh"


    • Profit!
    March 30, 2018 at 1:23:07 PM UTC - permalink - http://shaarli.guiguishow.info/?lxMclA
Links per page: 20 50 100
 
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super fast, database-free, bookmarking service by the Shaarli community