El sonido no funciona cuando la tarjeta de sonido y HDMI utilizan el controlador Intel HDA. ¿Cómo intercambiar el orden de carga de su dispositivo?


10

Tengo un netbook Acer Aspire One 522 que tiene una tarjeta de sonido Intel HDA basada en el chipset Conexant CX20584. Aunque KDE emite sonido cuando se inicia, flash y probablemente muchas otras aplicaciones que buscan un /dev/dspdispositivo simplemente no pueden emitir sonido a través de él, lo que brinda una experiencia multimedia prácticamente inútil.

Cuando revisé mis dispositivos de reproducción ALSA con aplay -l, pude ver que el dispositivo de audio principal estaba siendo reconocido como tarjeta 1 en lugar de 0, que en su lugar estaba conectado a HDMI:

**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

De esa manera obtengo un /dev/dsp1, pero parece que la mayoría de las aplicaciones están codificadas para usar /dev/dsp, así que busqué alguna forma de intercambiar los índices de las tarjetas. Después de investigar un poco a través de la documentación de ALSA, intenté asignar índices a los módulos de controlador utilizados por HDMI e Intel HDA con este /etc/modprobe.d/asound.confarchivo:

options snd cards_limit=2
options snd-hda-codec-conexant index=0
options snd-hda-codec-hdmi index=1
options snd slots=snd-hda-codec-conexant,snd-hda-codec-hdmi

Sin embargo, eso no funcionó, y según un enlace olvidado en mi búsqueda interminable de una respuesta, parece ser porque indexse supone que estas directivas coordinan el orden de carga del módulo, pero ambos códecs Conexant y HDMI utilizan el mismo Intel HDA módulo controlador, por lo que parece no aplicarse en este caso.

Dicho esto, ¿hay alguna forma de definir índices de tarjeta correctos cuando los dispositivos usan el mismo módulo de controlador ALSA (Intel HDA en este caso)?

Respuestas:


10

Finalmente encontré una respuesta a este problema en base a esta publicación de otro foro (ver "Intento 1b" para referencia). Según esto, se puede especificar la identificación del módulo, incluso si el controlador utilizado es el mismo:

alias char-major-116 snd
alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-hda-intel

options snd cards_limit=2

options snd-hda-intel id=SB index=0
options snd-hda-intel id=HDMI index=1

gritando así el orden correcto de la tarjeta y haciendo que el sonido funcione como se esperaba:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Para aplicar a otros casos similares, se puede inspeccionar /proc/asoundpara enlaces a sus tarjetas, que serán sus identificadores de módulos deseados:

$ ls -l /proc/asound/
total 0
lrwxrwxrwx 1 root root 5 Jan 26 19:19 HDMI -> card1
lrwxrwxrwx 1 root root 5 Jan 26 19:19 SB -> card0
dr-xr-xr-x 4 root root 0 Jan 26 19:19 card0
dr-xr-xr-x 3 root root 0 Jan 26 19:19 card1
-r--r--r-- 1 root root 0 Jan 26 19:19 cards
-r--r--r-- 1 root root 0 Jan 26 19:19 devices
-r--r--r-- 1 root root 0 Jan 26 19:19 hwdep
-r--r--r-- 1 root root 0 Jan 26 19:19 modules
dr-xr-xr-x 2 root root 0 Jan 26 19:19 oss
-r--r--r-- 1 root root 0 Jan 26 19:19 pcm
dr-xr-xr-x 2 root root 0 Jan 26 19:19 seq
-r--r--r-- 1 root root 0 Jan 26 19:19 timers
-r--r--r-- 1 root root 0 Jan 26 19:19 version
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.