Ich nutze eine USB-C-Dockingstation von DisplayLink, die eine eigene Soundkarte beinhaltet. Das ist natürlich wahnsinnig komfortabel. Doch ich nutze sie nicht und ständig ist diese Karte die voreingestellte Sound-Ausgabe. Um dem Nerven ein Ende zu setzen habe ich mal recherchiert, wie ich in PulseAudio eine Soundkarte deaktivieren kann.
Spoiler: In meinem Fall musste ich zu härteren Maßnahmen greifen.
Mein erster Versuch führte mich zum Tool ‚pavucontrol‘, dem PulseAudio-Lautstärkeregler. Im Tab ‚Konfiguration‘ konnte ich das Profil einfach auf ‚Aus‘ stellen (siehe Bild) und weg war der nervende Dämon. Das war allerdings nur von kurzer Dauer, da die Einstellung weder einem Neustart noch einem Screen-Lock standhielt.
Also suchte ich auf der Kommandozeile danach, was das Tool denn eigentlich macht. Das Kommando ‚pacmd‘ hilft hier weiter. Nachdem ich die Änderung in ‚pavucontrol‘ durchgeführt hatte, habe ich den folgenden Befehl aufgerufen (Ausgabe gekürzt):
1 2 3 4 5 6 7 |
andreas@tuxedoGuin:~$ pacmd list-cards [...] index: 1 name: <alsa_card.usb-DisplayLink_USB-C_Triple-4K_Dock_DGWC00110013583-02> [...] active profile: <off> [...] |
Der ewig lange Name ist das, wonach ich gesucht habe. Und das aktive Profil ‚off‘ hat mir geholfen, die richtige Karte zu identifizieren. Per Kommandozeile könnte ich nun die Karte wie folgt deaktivieren:
1 |
andreas@tuxedoGuin:~$ pacmd set-card-profile alsa_card.usb-DisplayLink_USB-C_Triple-4K_Dock_DGWC00110013583-02 off |
Das funktionier auch sehr gut. Nun muss die Änderung noch irgendwie persistent gemacht werden.
Die Konfiguration von PulseAudio befindet sich systemweit im Ordner ‚/etc/pulse‘ und für jeden Benutzer noch einmal unter ‚~/.config/pulse‘. Die wichtige Datei heißt ‚default.pa‘. Wie sich die komplette Konfiguration zusammensetzt, zeigt der folgende Befehl an. Diesen habe ich immer wieder zum Testen genutzt:
1 |
andreas@tuxedoGuin:~$ pacmd dump |
Erstmal musste ich den Voodoo hinter dem Ordner ‚~/.config/pulse‘ verstehen. Hier liegen einige Datenbank-Dateien, die bei jedem Start von PulseAudio neu generiert werden. Und hier kann auch eine eigene ~/.config/pulse/default.pa-Datei angelegt werden. Diese sah bei mir wie folgt aus:
1 2 |
.include /etc/pulse/default.pa set-card-profile alsa_card.usb-DisplayLink_USB-C_Triple-4K_Dock_DGWC00110013583-02 off |
Alle anderen Dateien im Ordner beginnen bei mir mit dem Buchstaben ‚c‘. Das macht das Löschen in folgender Befehlsreihenfolge relativ einfach:
1 2 3 4 |
andreas@tuxedoGuin:~$ pulseaudio -k andreas@tuxedoGuin:~$ rm ~/.config/pulse/c* andreas@tuxedoGuin:~$ pulseaudio --start andreas@tuxedoGuin:~$ pacmd dump |
Wenn ich es so gemacht habe, dann zeigte der letzte Befehl die Konfiguration so an, wie ich sie haben wollte. Ich glaube, das wäre denn im Normalfall auch schon alles. Nur in meinem Fall mit DisplayLink ging es nicht.
DisplayLink bringt einen eigenen Treiber mit, der auch für den Betrieb notwendig ist. Dieses kleine Biest macht die Arbeit des vorherigen Absatzes jedoch immer wieder zunichte. Sobald das Gerät eingebunden wird (beim Neustart, nach einem Screen-Lock, beim Aufwachen aus dem Suspend-Mode, …), scheint es eigenes Voodoo auf PulseAudio auszuüben. Meine Konfiguration wurde also regelmäßig überschrieben. Also musste ich härtere Bandagen auffahren, und das Ding schon vorher abschalten. Dafür brauchte ich die IDs des Gerätes:
1 2 3 4 5 6 7 8 9 10 |
andreas@tuxedoGuin:~$ pacmd list-cards [...] index: 1 name: <alsa_card.usb-DisplayLink_USB-C_Triple-4K_Dock_DGWC00110013583-02> [...] properties: [...] device.vendor.id = "17e9" device.product.id = "6000" [...] |
Bewaffnet mit den beiden IDs habe ich mich dann auf ins udev-System gemacht, um die Karte gleich beim Einbinden wieder zu entfernen. Dazu habe ich die Datei ‚/etc/udev/rules.d/89-pulseaudio-usb.rules‚ angelegt, die noch vor der ’99-displaylink.rules‘ ausgeführt wird. Mit folgendem Einzeiler habe ich dann dafür gesorgt, dass ein Nutzen des Geräts unterbunden wird:
1 |
`ATTRS{idVendor}=="17e9", ATTRS{idProduct}=="6000", ENV{PULSE_IGNORE}="1"` |
Voilà!
Keine Antworten