Resolvendo problema do som ter parado de funcionar após instalar outros dispositivos de áudio no Linux

Publicado por Cláudio Henrique Fortes Félix em 15/11/2007

[ Hits: 14.291 ]

Blog: http://www.helpo.com.br

 


Resolvendo problema do som ter parado de funcionar após instalar outros dispositivos de áudio no Linux



Após instalarmos um segundo dispositivo de áudio no Linux, é bastante comum acontecer da ordem de carregamento dos drivers de dispositivo mudar, podendo inclusive ser diferente a cada boot. Com isso, programas que esperavam achar a placa de som principal em /dev/dsp, por exemplo, acabam achando a placa secundária e pronto... nada mais de som. Como num passe de mágica, após um reboot o som pode voltar a funcionar se a ordem de carregamento do driver for invertida novamente, dificultando ainda mais o entendimento do problema.

Com essa dica pretendo mostrar uma forma simples de forçarmos a ordem de carregamento dos drivers de áudio, de forma que não tenhamos mais essas surpresas desagradáveis. Estou utilizando o Slackware com kernel 2.6, sendo que os módulos são carregados automaticamente pelo UDEV. Em outras distros o procedimento pode ser ligeiramente diferente, mas creio que o método seja geral o bastante.

No meu caso específico tenho 3 dispositivos de áudio: uma placa de som onboard, o microfone de minha webcam USB e a entrada de áudio de uma placa de captura de vídeo. Os respectivos drivers são os seguintes:
  • placa de som: hda_intel
  • webcam USB: usb_audio
  • placa de captura: cx88_alsa

Você pode descobrir quais são seus drivers com o comando lsmod (normalmente é necessário que você esteja como usuário root). Geralmente os drivers de som ALSA começam com o prefixo snd_ - os meus por exemplo aparecem como: snd_hda_intel, snd_usb_audio e cx88_alsa (este caiu na exceção :P).

Descobertos os nomes dos drivers, basta especificar a ordem de carregamento dos mesmos no arquivo /etc/modprobe.conf através da diretiva "index":
options hda_intel index=0
options usb_audio index=1
options cx88_alsa index=2

Dessa forma, após o próximo reboot, /dev/dsp será a placa de som, /dev/dsp1 o áudio da webcam e /dev/dsp2 o dispositivo de áudio da placa de captura. Esses são os nomes de dispositivos compatíveis com o sistema de som antigo (OSS). Você pode verificar que a ordem de carregamento dos drivers ALSA também é a mesma com o seguinte comando:

$ cat /proc/asound/cards

Resultado no meu sistema:
O [NVidia          ]: HDA-Intel - HDA NVidia
                          HDA NVidia at 0xddff8000 irq 11
1 [U0x46d0x8b2 ]: USB-Audio - USB Device 0x46d:0x8b2
                           USB Device 0x46d:0x8b2 at usb-0000:00:02.0-1, full speed
2 [CX8801         ]: CX88x - Conexant CX8801
                           Conexant CX8801 at 0xde000000

Se você quiser alterar a ordem de carregamento, basta reordenar os "index" conforme desejado no arquivo /etc/modprobe.conf.

Bom, é isso aí. Dê boas vindas ao som perdido!

Referências:
Outras dicas deste autor

Corrigindo problema do Acrobat Reader 7.0 no Slackware 12

Leitura recomendada

Quando a placa 82845G não funciona (driver i810)

Como checar se sua placa possui sinal físico de rede

Infográfico: do Mainframe ao Cloud Computing

Instalando o Fedora 12 (kernel panic - not syncing: DMAR hardware is malfunctioning)

Configurando o modem smartlink no Mandriva One Linux

  

Comentários
[1] Comentário enviado por removido em 18/11/2007 - 00:13h

Parabéns.
Apesar do modprobe.conf do mandriva ser diferente do seu exemplo, pude resolver um bug no meu desktop tendo por base sua dica...
Valew!!!
;-))

[2] Comentário enviado por flavioc em 15/08/2008 - 19:33h

Oi Cláudio. To com um problema, quem sabe pode me ajudar. Tenho uma placa de TV USB Pixelview prolink usb 2 (módulo em28xx). Quando uso o tv time, pra pegar a tv, faça a conexão dos tres cabos RCA (amarelo, branco e vermelho) do decodificador da tv a cabo nessa placa que possui tres entradas RCA. No programa TvTime, coloco a configuração de entrada no composite1(video composto). A imagem é perfeita, mas não tem som. Tenho dos os módulos rodando normalmente (snd-usb-audio, em28xx_alsa). No diretório /dev tenho /dsp1 /dsp2. Dando o comando cat /proc/asound/cards aparece o seguinte:
[root@localhost flavio]# cat /proc/asound/cards
0 [Intel]: HDA-Intel - HDA Intel
HDA Intel at 0xf0000000 irq 21
1 [Video]: USB-Audio - USB 2821 Video
USB 2821 Video at usb-0000:00:1d.7-5, high speed
2 [Em28xx Audio]: Empia Em28xx AudEm28xx Audio - Em28xx Audio
Empia Em28xx Audio
[root@localhost flavio]#
O que será que ta acontecendo que o som não sai? No windows funciona normalmente. Obrigado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts