![Festlegen der Standard-Audioausgabe, wenn nur ein Senke vorhanden ist](https://rvso.com/image/1072915/Festlegen%20der%20Standard-Audioausgabe%2C%20wenn%20nur%20ein%20Senke%20vorhanden%20ist.png)
Ich habe Ubuntu 22.04.1 LTS neu installiert (nachdem ich zuvor 18.04 verwendet hatte). Das Soundkonfigurationsmenü bietet diese Ausgabeoptionen, von denen ich die zweite Option (S/PDIF) verwende, und wenn ich sie auswähle, funktioniert der Ton einwandfrei.
Aber nach jedem Neustart wird der Audioausgang auf den HDMI-Ausgang zurückgesetzt, und ich muss ihn standardmäßig auf S/PDIF setzen. Die Lösungen, die ich gefunden (und bei früheren Installationen verwendet) habe, beinhalten die Auswahl des richtigen Sinks für Pulseaudio, aber ich scheine jetzt nur noch einen Sink zu haben! Die Ausgabe von pactl list short sinks
lautet:
6 alsa_output.pci-0000_00_0e.0.hdmi-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
Auch die Ausgabe aplay -l
scheint keine Spur von S/PDIF zu enthalten:
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC283 Analog [ALC283 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC283 Digital [ALC283 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
Subdevices: 1/1
Subdevice #0: subdevice #0
Wo ist es also?! Woher kommen die Menüalternativen? Und wie kann ich S/PDIF als Standard festlegen?
Antwort1
Ich habe tiefer gegraben und zwei funktionierende Lösungen gefunden, von denen ich mit Nummer 2 vollkommen zufrieden bin.
Lösung 1: Explizites Alsa-Sink
Mir fiel auf, dass die ersten beiden Subgeräte, die ich aufgelistet habe, aplay -l
eigentlich beide S/PDIF sind, denn das Abspielen von Sounds aus Java (wie ich es inmein eigener Musikplayer) funktioniert mit dem auf entweder „+“ eingestellten Ausgabegerät plughw:0,0
oder plughw:0,1
mit den LEDs auf meinem DAC, die sich entsprechend der Abtastrate ändern.
Um einen davon standardmäßig auszuwählen, fügen Sie hinzu
load-module module-alsa-sink
load-module module-alsa-source device=hw:0,1
zu meinem ~/.config/pulse/default.pa
(kopiert von /etc/pulse/
). Dies fügt dem Tonausgabemenü eine Option „Integriertes Audio“ hinzu, die standardmäßig ausgewählt wird. Dies ist dann effektiv ein Alias für die S/PDIF-Option (was ich bei dieser Lösung etwas ärgerlich finde).
Lösung 2: set-card-profile
Der Pulseaudio-BefehlListenkartenenthüllt einige interessante Informationen. Die pacmd list-cards
Ausgabe listet eine Karte namens auf, alsa_card.pci-0000_00_0e.0
die eineHäfenAbschnitt, der die folgende Zeile enthält:
iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
Dies wird von erzeugt module-udev-detect
und muss dort sein, wo die Soundeinstellungen die Informationen über den Ausgang erhalten, den sie als S/PDIF auflisten. Indem Sie sich dieListenkartenAusgabe mit verschiedenen Ausgabeoptionen im Toneinstellungsmenü, stellte ich fest, dass der Unterschied darin bestand, was als „aktives Profil“ eingestellt war. Dies,ich fand, kann mit geändert werden set-card-profile
. Hinzufügen
set-card-profile alsa_card.pci-0000_00_0e.0 output:iec958-stereo+input:analog-stereo
funktionierte ~/.config/pulse/default.pa
in dem Sinne, dass ich die S/PDIF-Ausgabe nach bekam pulsaudio -k
, aber nach dem Neustart und der Anmeldung wurde die TonausgabeTrotzdemauf HDMI eingestellt werden. (Offenbar ändert etwas anderes als die Pulseaudio-Initialisierung die Kartenprofileinstellung.) Also habe ich stattdessen meine lokale Datei default.pa
erneut gelöscht und den Befehl hinzugefügt
pacmd set-card-profile alsa_card.pci-0000_00_0e.0 output:iec958-stereo+input:analog-stereo
Als einStartanwendung. Das schien der Trick zu sein, bis der Bildschirmschoner einsetzte… Wenn der Bildschirm aus dem Bildschirmschoner geweckt wird, ist das Kartenprofilwiederin etwas anderes geändert! Die Lösung, die ich dafür gefunden habe, war, ein Skript zu erstellen, das auf Bildschirmschonerereignisse wartet, die Kartenprofileinstellung überprüft, wenn der Bildschirmschoner aktiviert wird, und sie auf diese zurücksetzt, wenn der Bildschirmschoner ausgeschaltet wird. Das Skript ist eine modifizierte Version des Skripts indiese Antwort (in der es eher um das Einstellen der Senke als um das Kartenprofil geht)und sieht folgendermaßen aus:
#!/bin/bash
my_card="alsa_card.pci-0000_00_0e.0"
watch="type=signal,interface=org.gnome.ScreenSaver"
screen_locked_signal="boolean true"
screen_unlocked_signal="boolean false"
_get_active_profile() {
pacmd list-cards | sed -n 's/^\s*[Aa]ctive\s\s*[Pp]rofile:\s*<\([^>]*\)>/\1/p'
}
last_profile=$(_get_active_profile)
# Watch for screensaver D-Bus signals
dbus-monitor --session "$watch" | ( \
while read signal; do
if [[ "$signal" =~ "$screen_locked_signal" ]]; then
# Screen locked: remember the current profile
last_profile=$(_get_active_profile)
elif [[ "$signal" =~ "$screen_unlocked_signal" ]]; then
# Screen unlocked: restore the last profile
pacmd set-card-profile "$my_card $last_profile"
fi
done)
Durch Hinzufügen dieses Skripts zu den Startanwendungen wird das Bildschirmschonerproblem behoben.