O som não funciona quando a placa de som e o HDMI usam o driver Intel HDA. Como trocar a ordem de carregamento do dispositivo?

8

Eu tenho um netbook Acer Aspire One 522 que possui uma placa de som Intel HDA baseada no chipset Conexant CX20584. Embora o KDE produza som ao inicializar, o flash e provavelmente muitos outros aplicativos que procuram por um dispositivo /dev/dsp simplesmente não conseguem produzir som através dele, tornando uma experiência multimídia praticamente inútil.

Quando verifiquei meus dispositivos de reprodução ALSA com aplay -l , percebi que o dispositivo de áudio principal estava sendo reconhecido como cartão 1 em vez de 0, que estava sendo 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

Dessa forma, eu recebo um /dev/dsp1 , mas parece que a maioria dos aplicativos são apenas codificados para usar /dev/dsp , então eu procurei por uma maneira de trocar os índices de cartão. Após algumas pesquisas através da documentação do ALSA, tentei atribuir índices aos módulos do driver usados pelo HDMI e pelo Intel HDA com esse arquivo /etc/modprobe.d/asound.conf :

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

Isso não funcionou, e com base em algum link esquecido na minha busca incessante por uma resposta, parece que essas diretivas index devem coordenar a ordem de carregamento do módulo, mas ambos os codecs Conexant e HDMI acontecem para usar o mesmo módulo de driver Intel HDA, por isso, parece não se aplicar neste caso.

Dito isto, existe alguma maneira de definir os índices de cartões corretos quando os dispositivos usam o mesmo módulo de driver ALSA (Intel HDA, neste caso)?

    
por Claudio 26.01.2013 / 21:52

1 resposta

8

Eu finalmente encontrei uma resposta para esse problema com base em esta postagem de outro fórum (veja "Tentativa 1b" para referência). De acordo com ele, pode-se especificar o id do módulo, mesmo que o driver utilizado seja o mesmo:

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

Assim, anotar a ordem correta das placas e fazer o som funcionar como esperado:

$ 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 se inscrever em outros casos semelhantes, você pode inspecionar /proc/asound de links simbólicos para seus cartões, eles serão seus IDs de módulos desejados:

$ 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
    
por 26.01.2013 / 22:24