trouvé une meilleure option
L'utilisation de systemd comme décrit ci-dessous a fonctionné au démarrage mais pas lors du branchement de périphériques sur un système déjà en fonctionnement.
Pour ignorer le son lors du branchement à chaud et au démarrage, les règles udev sont la meilleure option.
Adapté de Dites à PulseAudio d'ignorer un périphérique USB en utilisant udev :
-
utiliser lsusb
pour identifier l'identifiant du vendeur/produit du dispositif que vous voulez ignorer.
$ lsusb
Bus 006 Device 003: ID 17e9:4307 DisplayLink LAPDOCK
# <other devices I don't care about>
le site ID
partie qui nous donne les chiffres magiques
-
créer un fichier de règles udev, par exemple /etc/udev/rules.d/80-ignore-audio-cards.rules
qui définit une variable d'environnement pour l'impulsion audio.
Pour moi, ça ressemblait à ça :
ATTRS{idVendor}=="17e9", ATTRS{idProduct}=="4307", ENV{PULSE_IGNORE}="1"
J'ai choisi le 80-
pour le nom du fichier de façon arbitraire. Si vous avez des règles liées à pulseaudio, assurez-vous que votre nouveau fichier commence par un numéro plus bas
-
redémarrez pour vous assurer qu'elle prend effet
Avec la règle udev en place, pulseaudio ignore complètement le périphérique.
réponse précédente :
J'ai rencontré le même problème, et les réponses données n'ont pas fonctionné pour moi à travers les redémarrages. Je pense que mon problème était une détection tardive des cartes ; lorsque pulseaudio a démarré, il n'a pas vu toutes les cartes, et une combinaison de module-switch-on-connect
y module-switch-on-port-available
était toujours en train de réinitialiser mes choix.
J'ai résolu ce problème en créant un unité utilisateur systemd à exécuter pactl set_card_profile "$MY_CARD_NAME" off
quand je me suis connecté.
-
trouvez le nom de la carte que vous ne voulez pas ; avec un peu de chance, le nom devrait suffire pour savoir laquelle :
$ pactl list cards | grep -E '(Card|Name:)'
Card #0
Name: alsa_card.usb-DisplayLink_LAPDOCK_U3D2338486250-02
Card #1
Name: alsa_card.pci-0000_01_00.1
Card #2
Name: alsa_card.usb-Plantronics_Plantronics_Blackwire_5220_Series_2961D11C621649939CED8BF57E910BA5-00
Card #3
Name: alsa_card.usb-HD_Web_Camera_HD_Web_Camera_Ucamera001-02
Card #4
Name: alsa_card.pci-0000_00_1f.3
Pour moi, c'était le "LAPDOCK" qui me volait mon audio.
-
créer l'unité systemd, pour appeler pactl
et désactiver la carte :
$ mkdir -p ~/.config/systemd/user
$ nano ~/.config/systemd/user/disable-cards.service
Ajoutez ces contenus, en modifiant le ExecStart
pour faire référence à la carte que vous voulez déposer :
[Unit]
Description=Disable card
[Service]
Type=simple
Restart=on-failure
ExecStart=pactl set-card-profile "alsa_card.usb-DisplayLink_LAPDOCK_U3D2338486250-02" off
[Install]
WantedBy=default.target
-
activer le service : systemctl --user enable disable-cards
Maintenant, lorsque vous redémarrez, Systemd va continuer à essayer de déconnecter cette carte jusqu'à ce qu'il réussisse. Il y a probablement de meilleures systemd
pour le faire fonctionner après le branchement du moniteur ; chaque appareil apparaît comme une "unité" (par exemple, dans la sortie de la commande systemctl --user
), ce qui pourrait être amélioré pour fonctionner lorsque vous branchez/débranchez des appareils.
L'autre solution consiste à modifier votre /etc/pulse/default.pa
à utiliser module-switch-on-connect blacklist="REGEX_MATCHING_THE_CARD_NAME"
mais cela n'a pas fonctionné pour moi ; il n'y a aucun moyen de personnaliser module-switch-on-port-available
et je pense que c'est ce qui l'a sélectionné pour moi.