
Bei Verwendung von Laptop-Lautsprechern wird beim Einstecken von Kopfhörern die Ausgabe automatisch von den Lautsprechern auf die Kopfhörer umgeschaltet und beim Abziehen umgekehrt. Bei Verwendung der Monitorlautsprecher über HDMI erfolgt keine automatische Umschaltung:
Kann die Audioausgabe zwischen Geräten automatisch umgeschaltet werden, wenn Kopfhörer ein- oder ausgesteckt werden?
Debian 12 (Bookworm), Kernelversion 6.7.9-2, Pipewire 1.0.5.
Antwort1
Die automatische Audioumschaltung zwischen Laptop-Lautsprechern und analogen Kopfhörern erfolgt zwischen verschiedenen Ausgängen eines einzelnen Audiochips. Der Chip kann sogar Hardware-Unterstützung dafür haben: Mit HD-Audio-Audiobuchsen an der Vorderseite ist es eine umschaltbare Funktion innerhalb des Soundchips, die, wenn aktiviert, andere Ausgänge automatisch stummschaltet, wenn sie erkennt, dass Kopfhörer angeschlossen sind.
(Wenn Sie zB verwenden alsamixer
und den tatsächlichen Hardware-Mixer Ihres Soundchips anstelle der vereinfachten Lautstärkeregelung von Pipewire auswählen, wird es möglicherweise als Auto-Mute
Umschalter angezeigt.)
Bei älteren Audiobuchsen auf der Vorderseite im AC97-Stil handelt es sich tatsächlich um einen mechanischen Schalter in der Audiobuchse selbst, der die Ausgangssignale zum Lautsprecher-/Line-Ausgang unterbricht, wenn ein Kopfhörerstecker eingesteckt wird.
Beim Umschalten zwischen HDMI und Kopfhörern jeglicher Art oder zwischen Laptop-Lautsprechern und einem USB-Headset muss der Audiodatenstrom auf einen anderen Audiochip umgeschaltet werden. Pipewire kann das, aber nur, wenn die Prioritäten der Ausgabesenke richtig eingestellt sind und die automatische Umschaltung aktiviert ist.
Sehendieser Blogeintragwireplumber
: Es beschreibt, wie Audio-Sink-Prioritäten in der 0.4-Serie, die in Debian 12 enthalten ist, überprüft und angepasst werden .Dieser Hinweis ist nicht direkt anwendbar, wenn Sie wireplumber
0.5 oder höher haben, da sich die Konfigurationsmethode in Version 0.5 geändert hat.
Kurz gesagt: Der erste Schritt besteht darin, die automatische Umschaltung zu aktivieren, wenn ein neues Soundgerät angeschlossen wird. Sie können dies vorübergehend tun, indem Sie ausführen pactl load-module module-switch-on-connect
.
Diese AskUbuntu.SE-Frageenthält auch den Vorschlag zum Ausführen pactl load-module module-switch-on-port-available
: Ich verstehe, dass das Umschalten ermöglicht wird, wenn auf einem vorhandenen Audiogerät ein neuer Port verfügbar wird.
Um die obigen Befehle dauerhaft zu machen, lesen Sie /usr/share/pipewire/pipewire-pulse.conf
die Beispiele und fügen Sie den entsprechenden Teil einer *.conf
Datei in Ihrem ~/.config/pipewire/pipewire-pulse.conf.d/
Verzeichnis hinzu (erstellen Sie sie, falls sie noch nicht existiert). Beispiel:
pulse.cmd = [
{ cmd = "load-module" args = "module-always-sink" flags = [ ] } #default
{ cmd = "load-module" args = "module-switch-on-connect" } #uncommented
{ cmd = "load-module" args = "module-switch-on-port-available" } #added
#{ cmd = "load-module" args = "module-gsettings" flags = [ "nofail" ] }
]
Der zweite Schritt besteht darin, sicherzustellen, dass Ihren Soundgeräten die entsprechenden Prioritäten zugewiesen werden.
Sie können wpctl status
die Identifikationsnummern aller Geräte anzeigen, die Pipewire wichtig sind, und dann wpctl inspect <number> | grep -e node -e priority
den/die Namen, die Beschreibung und die Priorität eines bestimmten Audiogeräts anzeigen. Wenn die standardmäßige Prioritätsreihenfolge nicht die gewünschte ist, können Sie eine ~/.config/wireplumber/main.lua.d/60-*.lua
Datei erstellen, um sie anzupassen. Der Inhalt sollte ungefähr wie folgt aussehen:
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.usb-MOTU_M4_M4MC0570FU-00.Direct__hw_M4__sink" },
},
},
apply_properties = {
["priority.driver"] = 1050,
["priority.session"] = 1050,
},
}
Die Standardpriorität für das „erwartete“ primäre Soundgerät sollte bei etwa 1009 liegen. Wenn Sie also einem anderen Soundgerät einen höheren Wert zuweisen, wird pipewire
es gegenüber anderen bevorzugt, sofern es verfügbar ist. Sie sollten jedoch keinen höheren Wert als 1500 zuweisen, da die höheren Werte für Monitorgeräte reserviert sind.
Es gibt anscheinend auch Prioritätswerte für einzelne Ports, leider weiß ich derzeit nicht, wie ich diese anpassen kann. Sie können sie anzeigen, pactl list cards
obwohl die Ausgabe ziemlich lang ist.
Wenn jemand eine gute Möglichkeit zum Anpassen der Pipewire-Portprioritäten kennt, können Sie diese gerne bearbeiten, wenn Sie nicht selbst eine vollständige Antwort schreiben möchten.