Festlegen der Standard-Audioausgabe, wenn nur ein Senke vorhanden ist

Festlegen der Standard-Audioausgabe, wenn nur ein Senke vorhanden ist

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.

Audioausgabemenü

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 sinkslautet:

6   alsa_output.pci-0000_00_0e.0.hdmi-stereo    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED

Auch die Ausgabe aplay -lscheint 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 -leigentlich 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,0oder plughw:0,1mit 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-cardsAusgabe listet eine Karte namens auf, alsa_card.pci-0000_00_0e.0die 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-detectund 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.pain 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.paerneut 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.

verwandte Informationen