In PulseAudio ist jeder Soundkarte ein Profilsatz zugeordnet. Ein Profilsatz enthält mehrere Profile. Dies sind die Profile, die Sie beim Auflisten der Karten (oder beim Betrachten der verschiedenen PulseAudio-GUIs) sehen.
Es gibt ein default
Profil, das hauptsächlich nützliche Elemente für die analoge Tonausgabe enthält. Es gibt auch ein extra-hdmi
Profil, das automatisch auf einige HDMI-Ausgänge angewendet wird und Optionen bis zu 5.1 bietet. Diese beiden Profile befinden sich leider in /usr/share/pulseaudio/alsa-mixer/profile-sets
und können daher nicht wirklich bearbeitet werden (ich habe den Debug-Fehler 736708 dazu angemeldet .) Gemäß der Dokumentation können Sie die udev-basierte automatische Erkennung deaktivieren und alles manuell konfigurieren - damit können Sie das angeben vollständiger Pfad zu einem Profil. Es stellt sich jedoch heraus, dass udev, obwohl dies nicht dokumentiert ist, auch einen vollständigen Pfad angeben kann.
Richten Sie eine udev-Regel ein, um einen Profilsatz zuzuweisen
Sie weisen einen Profilsatz in einer udev-Regel zu, indem Sie die PULSE_PROFILE_SET
udev-Umgebungsvariable festlegen . Es ist dokumentiert, dass nur eine Datei im oben genannten /usr
Unterverzeichnis abgelegt wird , aber ein vollständiger Pfad funktioniert auch. In meinem Fall habe ich diese Regel erstellt:
# cat /etc/udev/rules.d/95-local-pulseaudio.rules
ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="/etc/pulse/my-hdmi.conf"
Sie müssen die entsprechenden PCI-Hersteller- und Gerätenummern verwenden, die Sie leicht erhalten können lspci -nn
.
Nachdem Sie die udev-Regel erstellt haben, können Sie sie sofort mit anwenden udevadm trigger -ssound
. Sie werden wahrscheinlich auch Ihre initramfs neu erstellen wollen ( update-initramfs -u
)
Bestätigen Sie, dass die udev-Regel mit wirksam wurde udevadm info --query=all --path /sys/class/sound/card0
(verwenden Sie natürlich die entsprechende Kartennummer). Sie sollten E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf
in der Ausgabe sehen. Wenn nicht, fahren Sie nicht fort. Es wird nicht funktionieren. Mit Ihren udev-Regeln stimmt etwas nicht (oder Sie haben sie nicht ausgelöst - Sie können jederzeit versuchen, einen Neustart durchzuführen).
Erstellen Sie die Datei /etc/pulse/my-hdmi.conf
Hinweis: Die Kanalkarte ist anscheinend systemspezifisch. Sie müssen experimentieren, um es für Ihr System richtig zu machen. Ich hatte Glück, mein 7.1-Layout beinhaltet nur das Löschen der endgültigen Elemente zum Erstellen von 5.1, 4.0 usw. Anweisungen finden Sie unten.
Dies ist meistens viel Kopieren und Einfügen. Jeder Abschnitt unterscheidet sich in (a) Name, (b) Beschreibung, (c) Kanalkarte, (d) [optional] Priorität.
[General]
auto-profiles = yes
[Mapping hdmi-stereo]
device-strings = hdmi:%f
channel-map = front-left,front-right
description = Digital Stereo (HDMI)
priority = 4
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-40]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right
description = Digital Quadrophonic (HDMI)
priority = 1
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-51]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
description = Digital Surround 5.1 (HDMI)
priority = 2
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-71]
description = Digital Surround 7.1 (HDMI)
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 3
direction = output
paths-output = hdmi-output-0
Um dies zu testen:
- Starten Sie PulseAudio neu: Gehen Sie
pulseaudio -k
als normaler Benutzer davon aus, dass Sie Daemons pro Benutzer verwenden (Standardeinstellung). Starten Sie es erneut, auch ein einfaches aplay -l
wird funktionieren.
- Wechseln Sie zum 7.1-Profil. Persönlich habe ich das gemacht
pactl set-card-profile 0 "output:hdmi-surround-71"
, aber eine GUI wird auch perfekt funktionieren.
- Ausführen
speaker-test -c 8 -t w
. Es sollte anfangen, Sprechernamen anzukündigen, hoffentlich den richtigen Namen von jedem Sprecher. Wenn die Namen nicht vom richtigen Sprecher stammen, müssen Sie die Channel-Map ändern, um sie richtig zu machen. Nach jedem Kanalkartenwechsel müssen Sie PulseAudio erneut starten.
Bonus! Weitere nützliche Einstellungen
In /etc/pulse/daemon.conf
gibt es einige Einstellungen, die Sie möglicherweise ändern möchten:
enable-remixing
- Wenn diese Option aktiviert ist, wird bei einem Stereosignal der linke Kanal aus allen drei linken Lautsprechern und der rechte Kanal aus den rechten Lautsprechern abgespielt. Wenn ausgeschaltet, kommt es nur aus den ersten beiden heraus. Beachten Sie, dass Sie das Profil auch in Stereo ändern können (um nur Stereoton über den HDMI-Anschluss zu senden und Ihren Receiver entscheiden zu lassen, wie er den Lautsprechern zugeordnet werden soll).
enable-lfe-remixing
- Ähnlich, jedoch zum Remixen auf den LFE-Kanal (Subwoofer).
default-sample-format
- Wenn Ihr HDMI-Setup mehr als 16-Bit-Audio unterstützt, können Sie dies auf s32le
(von der Standardeinstellung s16le
) erhöhen .
default-sample-rate
, alternate-sample-rate
- Möglicherweise möchten Sie diese austauschen (und möglicherweise sogar 44,1 kHz vollständig deaktivieren), wenn Sie hauptsächlich DVD-Quellmaterial verwenden, das normalerweise 48 kHz beträgt. Wenn Ihr HDMI-Receiver dies unterstützt, können Sie bis zu 192 kHz erreichen. Beachten Sie, dass 176 kHz die nette Eigenschaft hat, ein gerades Vielfaches von 44,1 und 48 kHz zu sein. Im Folgenden erfahren Sie, wie Sie feststellen können, was Ihr Receiver unterstützt
default-sample-channels
- Scheint nicht wirklich wichtig zu sein. Profil überschreibt es wahrscheinlich ...
Natürlich müssen Sie PulseAudio nach dem Ändern dieser Datei neu starten.
Nochmals Bonus! Sehen, was Ihr Empfänger unterstützt
Es gibt eld.*
Dateien, in /proc/asound
denen Sie erfahren, was das andere Ende eines HDMI-Links zu unterstützen behauptet. Beispielsweise:
# cat /proc/asound/card0/eld#3.0
monitor_present 1
eld_valid 1
monitor_name TX-SR606
connection_type HDMI
eld_version [0x2] CEA-861D or below
edid_version [0x3] CEA-861-B, C or D
manufacture_id 0xcb3d
product_id 0x863
port_id 0x0
support_hdcp 0
support_ai 1
audio_sync_delay 0
speakers [0x4f] FL/FR LFE FC RL/RR RLC/RRC
sad_count 8
sad0_coding_type [0x1] LPCM
sad0_channels 2
sad0_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad0_bits [0xe0000] 16 20 24
sad1_coding_type [0x1] LPCM
sad1_channels 8
sad1_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad1_bits [0xe0000] 16 20 24
sad2_coding_type [0x2] AC-3
sad2_channels 8
sad2_rates [0xe0] 32000 44100 48000
sad2_max_bitrate 640000
sad3_coding_type [0x7] DTS
sad3_channels 8
sad3_rates [0xc0] 44100 48000
sad3_max_bitrate 1536000
sad4_coding_type [0x9] DSD (One Bit Audio)
sad4_channels 6
sad4_rates [0x40] 44100
sad5_coding_type [0xa] E-AC-3/DD+ (Dolby Digital Plus)
sad5_channels 8
sad5_rates [0xc0] 44100 48000
sad6_coding_type [0xb] DTS-HD
sad6_channels 8
sad6_rates [0x1ec0] 44100 48000 88200 96000 176400 192000
sad7_coding_type [0xc] MLP (Dolby TrueHD)
sad7_channels 8
sad7_rates [0x1480] 48000 96000 192000
Sie sehen also, dass mein Receiver LPCM (Linear PCM, dh unkomprimiertes Audio) mit bis zu 8 Kanälen, 192 kHz und 24-Bit-Sound unterstützt. Es unterstützt auch AC3, DTS, DSD, DD +, DTS-HD und Dolby TrueHD. Wenn ich also Dateien in diesen codiert habe, kann ich diese Formate durchlaufen (wenn mein Media Player dies natürlich unterstützt, mpv
wahrscheinlich auch).