En PulseAudio, cada tarjeta de sonido tiene un conjunto de perfiles asociado. Un conjunto de perfiles contiene varios perfiles, y esos son los perfiles que ve al enumerar las tarjetas (o al buscar en las diversas GUI de PulseAudio).
Hay un default
perfil, que contiene principalmente cosas útiles para la salida de sonido analógico. También hay un extra-hdmi
perfil que se aplica automáticamente a algunas salidas HDMI y dará opciones hasta 5.1. Desafortunadamente /usr/share/pulseaudio/alsa-mixer/profile-sets
, ambos perfiles están en , y por lo tanto no puede editarlos ( archivé el error de depuración 736708 sobre esto). De acuerdo con la documentación, podría deshabilitar la detección automática basada en udev y configurar todo manualmente, eso le permite especificar el ruta completa a un perfil. Pero resulta que, si bien no está documentado, udev también puede especificar una ruta completa.
Configure una regla de udev para asignar un conjunto de perfiles
Usted asigna un conjunto de perfiles en una regla de udev configurando la PULSE_PROFILE_SET
variable de entorno udev. Está documentado que solo toma un archivo en el /usr
subdirectorio mencionado anteriormente , pero una ruta completa también funciona. En mi caso, creé esta regla:
# cat /etc/udev/rules.d/95-local-pulseaudio.rules
ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="/etc/pulse/my-hdmi.conf"
Deberá utilizar los números de dispositivo y proveedor de PCI apropiados, que puede obtener fácilmente lspci -nn
.
Después de crear la regla udev, puede aplicarla inmediatamente con udevadm trigger -ssound
. Probablemente también desee reconstruir sus initramfs ( update-initramfs -u
)
Confirme que la regla de udev entró en vigencia con udevadm info --query=all --path /sys/class/sound/card0
(use el número de tarjeta apropiado, por supuesto). Deberías ver E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf
en la salida. Si no, no continúes. No va a funcionar Algo está mal con sus reglas de udev (o tal vez no las activó, siempre puede intentar reiniciar).
Cree el archivo /etc/pulse/my-hdmi.conf
Nota: El mapa de canales aparentemente es específico del sistema. Tendrá que experimentar para hacer lo correcto para su sistema. Tuve suerte, mi diseño 7.1 solo implica soltar los elementos finales para compilar 5.1, 4.0, etc. Las instrucciones están a continuación.
Esto es mucho copiar y pegar, principalmente. Cada sección difiere en (a) nombre, (b) descripción, (c) mapa de canales, (d) prioridad [opcional].
[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
Ahora, para probar esto:
- Reinicie PulseAudio:
pulseaudio -k
como su usuario normal, suponiendo que esté usando demonios por usuario (el valor predeterminado). Comience de nuevo, incluso un simple aplay -l
funcionará.
- Cambie al perfil 7.1. Personalmente, solía
pactl set-card-profile 0 "output:hdmi-surround-71"
hacer esto, pero una GUI también funcionará perfectamente bien.
- Ejecutar
speaker-test -c 8 -t w
. Debería comenzar a anunciar los nombres de los oradores, con suerte el nombre correcto de cada orador. Si los nombres no provienen del hablante correcto, tendrá que cambiar el mapa de canales para acertar. Después de cada cambio de mapa de canales, debe reiniciar PulseAudio nuevamente.
¡Prima! Configuraciones más útiles
En /etc/pulse/daemon.conf
, hay algunas configuraciones que es posible que desee cambiar:
enable-remixing
- Si está activado, una señal estéreo tendrá su canal izquierdo reproducido por los tres altavoces izquierdos y su canal derecho por los altavoces derechos. Si está desactivado, solo saldrá entre los dos primeros. Tenga en cuenta que también puede cambiar el perfil a estéreo (para enviar solo sonido estéreo a través del puerto HDMI y dejar que su receptor decida cómo asignarlo a los altavoces).
enable-lfe-remixing
- Similar, pero para remezclar al canal LFE (subwoofer).
default-sample-format
- Si su configuración HDMI admite audio de más de 16 bits, puede aumentar esto a s32le
(de forma predeterminada s16le
).
default-sample-rate
, alternate-sample-rate
- Es posible que desee intercambiar estos (y tal vez incluso deshabilitar 44.1KHz por completo) si utiliza principalmente material de fuente de DVD que generalmente es de 48KHz. O, si su receptor HDMI lo admite, puede llegar hasta 192KHz. Tenga en cuenta que 176KHz tiene la buena propiedad de ser un múltiplo incluso de 44,1 y 48KHz. Consulte a continuación cómo determinar qué admite su receptor
default-sample-channels
- Realmente no parece importar. El perfil probablemente lo anula ...
Naturalmente, tendrá que reiniciar PulseAudio después de cambiar este archivo.
Bono de nuevo! Ver lo que admite su receptor
Hay eld.*
archivos en los /proc/asound
que se informa qué admite el otro extremo de un enlace HDMI. Por ejemplo:
# 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
Entonces puede ver que mi receptor admite LPCM (PCM lineal, es decir, audio sin comprimir) en hasta 8 canales, 192KHz, sonido de 24 bits. También es compatible con AC3, DTS, DSD, DD +, DTS-HD y Dolby TrueHD. Entonces, si tengo archivos codificados en esos, puedo pasar esos formatos (si mi reproductor multimedia lo admite, por supuesto, mpv
probablemente sí).