Fedora: Falscher Port bei Pulseaudio gesetzt

Wer beim Wechsel zu Fedora 34 auch plötzlich seine oder ihre Musik aus dem Kopfhörer hören mußte, dem kann wohl doch helfen.

Fedora: Falscher Port bei Pulseaudio gesetzt

Die Ursache habe ich zwar nicht finden können, aber es gibt eine automatische Lösung das Problem: Den Port beim Desktopstart umstellen.

Wir brauchen:

  1. Eine Desktopdatei für den Autostart
  2. ein kleines Bashscript
  3. eine dynamische Anpassung an sich verändernde PulseAudio Sinks.

~/.config/autostart/fixpipewire.desktop
[Desktop Entry]
Version=1.0
Name=Fixpipewire
GenericName=Fixpipewire
Comment=fixes audio port selection
Exec=/home/<username>/.local/bin/fixpipewire
Icon=pva
Terminal=false
Type=Application
StartupNotify=false
Categories=extras
Keywords=tools
X-Desktop-File-Install-Version=0.21
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=5

Das hier angegebene Script sieht dann so aus:

~/.local/bin/fixpipewire

#!/bin/bash

pactl list sinks | grep -B2 „Name: alsa_output.pci-0000_0a_00.4.analog-stereo“ | grep Ziel | sed -e „s/^.* #//g“ | awk ‚{print „pactl set-sink-port „$1″ analog-output-lineout“;}’| bash

Wie man an die Details kommt

Mehrere Details müssen wir erwähnen. Mit

$ pactl list sinks | less

bekommen wir eine Liste mit allen Sinks. Auf Deutsch heißen die Sinks leider „Ziel“.. keine Ahnung welches Genie da eine Übersetzung angebracht hat 🙁

Wir schauen nach folgenden Angaben:  Sink #, Name und .. Portid

Beispiel:

Ziel #48

Name: alsa_output.pci-0000_0a_00.4.analog-stereo
Beschreibung: Starship/Matisse HD Audio Controller Analog Stereo

Ports:
analog-output-lineout: Line-Ausgang (type: Line, priority: 9000, availability group: Legacy 4, not available)
analog-output-headphones: Kopfhörer (type: Kopfhörer, priority: 9900, availability group: Legacy 5, availability unknown)
Aktiver Port: analog-output-headphones

Der aktive Port ist die Stellung, die das Ausgabegeräte gerade hat. Im Beispiel oben ist das z.Z. „analog-output-headphones“, also wird der Ton auf den Kopfhörern ausgegeben. Das beheben wir so:

$ pactl set-sink-port 48 analog-output-lineout

Da wir das Script per Desktopdatei in den Autostart gebracht haben, mit einer Verzögerung von 5 Sekunden, wird der Port jetzt bei Desktoplogin umgestellt, egal wie oft man ein- und ausloggt.