Solução para Ubuntu sem som

Este sucinto artigo técnico explica porque o Ubuntu com driver "snd_via82xx" pode ficar sem som e mostra como resolver o problema.

[ Hits: 7.229 ]

Por: Eduardo Mozart de Oliveira em 03/11/2015 | Blog: http://www.eduardomozartdeoliveira.wordpress.com/


Introdução



Após a instalação do Ubuntu 12.04, estava sem som em uma placa-mãe ECS P4M800Pro-M. Outra placa-mãe que aparenta apresentar o mesmo comportamento é a ASUS A7V8X. Estranhei devido a este ser o primeiro problema que tive com "drivers" no Ubuntu na empresa onde trabalho.

Ao utilizar o comando "lsmod | grep snd" (sem aspas) no Terminal, o driver de som (snd_via82xx) foi carregado corretamente:

snd_via82xx 33448 3
gameport 17936 1 snd_via82xx
snd_mpu401_uart 11264 1 snd_via82xx
snd_seq_dummy 5764 0
snd_seq_oss 38912 0
snd_seq_midi 10688 0
snd_rawmidi 29856 2 snd_mpu401_uart,snd_seq_midi
snd_seq_midi_event 10112 2 snd_seq_oss,snd_seq_midi
snd_via82xx_modem 18572 0
snd_ac97_codec 123224 2 snd_via82xx,snd_via82xx_modem
ac97_bus 3840 1 snd_ac97_codec
snd_pcm_oss 47648 0
snd_mixer_oss 20224 1 snd_pcm_oss
snd_seq 63232 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_mid i_event
snd_seq_device 10644 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi ,snd_seq
snd_pcm 92168 4 snd_via82xx,snd_via82xx_modem,snd_ac97_codec,snd_p cm_oss
snd_timer 27912 2 snd_seq,snd_pcm
snd_page_alloc 13200 3 snd_via82xx,snd_via82xx_modem,snd_pcm
snd 70856 19 snd_via82xx,snd_mpu401_uart,snd_seq_dummy,snd_seq_ oss,snd_rawmidi,snd_via82xx_modem,snd_ac97_codec,s nd_pcm_oss,snd_mixer_oss,snd_seq,snd_seq_device,sn d_pcm,snd_timer
soundcore 10400 1 snd


Solução

Minha primeira tentativa, após a identificação do problema, foi a atualização do Ubuntu 12.04 para a versão 14.04. Como a interface Unity 2D deixou de existir, a lentidão no sistema tornou-se notável. Alterando para a GNOME Flashback (Metacity), o sistema voltou a ter uma performance aceitável. Mas o som continuou não funcionando.

Algumas pessoas relataram no Launchpad que, ao alterar a "Saída" (Output) nas Configurações de som para "Saída analógica / Sem amplificador" (Analog Output / No Amplifier), o som havia voltado a funcionar normalmente. [1]
Linux: snd_via82xx sem som no Ubuntu
Aqui, a sugestão acima não funcionou. Pesquisando mais a fundo, pude encontrar a solução do problema no Launchpad [1]: O gabinete não possuía saídas frontais, consequentemente não possuía o conector FP_AUDIO ou, na ausência deste, Jumpers nos pinos 5-6 e 9-10 na placa-mãe.

Em placas-mãe antigas, eles são responsáveis por dar continuidade ao sinal recebido para as saídas de som traseiras. Removemos os Jumpers para conectarmos o FP_AUDIO, o que é o procedimento correto. As saídas de áudio frontais enviam o sinal recebido para as saídas traseiras quando não há nada conectado na frente, para que as saídas de som traseiras possam continuar funcionando. Esta função é desempenhada pelos Jumpers na ausência do conector FP_AUDIO. [2]

Para testar esta teoria, removi dois Jumpers de dois HDs IDE condenados e as inseri nas saídas 5-6 e 9-10 da placa-mãe, e o som voltou a funcionar normalmente!
Linux: snd_via82xx sem som no Ubuntu
De acordo com o manual da placa-mãe (ECS P4M800Pro-M), os pinos 5-6 são responsáveis pelos sinal de áudio do canal direito para as saídas frontais, e os pinos 9-10 do canal esquerdo.
Linux: snd_via82xx sem som no Ubuntu
Verifique o manual da sua placa-mãe para verificar o local correto dos pinos na sua placa-mãe.

Caso o som ainda não retorne, você pode tentar adicionar a linha abaixo ao arquivo /etc/modprobe.d/alsa-base [3] (você pode adicionar a linha abaixo a qualquer arquivo dentro de /etc/modprobe.d):

sudo nano /etc/modprobe.d/alsa-base

Obs.: adicione a linha abaixo ao final do arquivo:

options snd_via82xx dxs_support=1

Agora, pressione "Ctrl+x" para salvar as alterações do arquivo e sair do editor Nano. Após a alteração, no terminal, digite o comando:

# update-modules

Reinicie o computador.

Conclusão

O suporte a DXS (Direct Sound Support/Hardware Mixing ou Hardware buffering/Direct Sound hardware acceleration no Windows) permite dois ou mais aplicativos reproduzirem som ao mesmo tempo. [4] No caso do Linux, as fabricantes raramente lançam drivers com suporte a Hardware Mixing e, quando adicionam, distribuem apenas o firmware binário que precisa ser carregado a cada iniciação do sistema.

A presença do Hardware mixing aumenta a performance por não sobrecarregar a CPU com operações de áudio, realizando-as em um hardware dedicado. Operações como Conversão de Sample Rate e Atenuação de áudio que, sem a presença do Hardware mixing, precisam ser realizadas por Software mixing (utilizando a CPU). O alsamix utiliza Hardware mixing de um dispositivo de som quando ele é suportado. [5]

Os valores são:
  • 0 - o valor padrão; suporta apenas o modo 48000 Hz na maioria dos casos, com exceção de algumas placas-mãe (que estão adicionadas a whitelist).
  • 1 - habilita suporte completo ao DXS (a qualquer sample rate suportado).
  • 2 - desabilita o suporte a DXS completamente. Neste caso, ainda que o alsamix suporte Hardware mixing para seu hardware, esta capacidade do chip não será utilizada (no lugar, a CPU será utilizada para operações de áudio).
  • 3 - usa o DXS a 48000 Hz.
  • 4 - habilita o DXS a qualquer sample rate suportada, mas sempre configura o codec para 48000 Hz (aparentemente algumas placas-mãe funcionam melhor do que utilizando este modo do que dxs_support=1).

Primeiro tente 'dxs_support=1'. Verifique a qualidade do som (teste arquivos de áudio com sample rate tanto de 44100 Hz quanto 48000 Hz).

Se a qualidade do som ficar ruim ou ele ainda não funcionar, use 'dxs_support=4' e tente novamente. Se nenhuma destas opções funcionarem, você pode desabilitar o DXS totalmente utilizando 'dxs_support=2'; então o software mixing será utilizado para reproduzir diversos sons simultaneamente. [6]

Referências:
  1. LAUNCHPAD. No Sound with VIA 8237 (snd-via82xx) using pulseaudio s.l., 2008 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/297744 (acessado em 26 outubro 2015)
  2. ANANDTECH. No Rear Audio on ECS P4M800PRO-M s.l., 2007 http://forums.anandtech.com/showthread.php?t=72169 (acessado em 26 outubro 2015)
  3. UBUNTU FORUMS. howto: via8237 sound working - snd_via82xx module - 2.6.10 kernel s.l., 2005 http://ubuntuforums.org/showthread.php?t=10672 (acessado em 26 outubro 2015).
  4. ALSA WIKI. Hardware mixing, software mixing s.l., 2013 http://alsa.opensrc.org/Hardware_mixing,_software_mixing (acessado em 26 outubro 2015)
  5. WIKIPÉDIA, A ENCICLOPÉDIA LIVRE. Hardware mixing s.l., s.d. , https://en.wikipedia.org/wiki/Hardware_mixing (acessado em 26 outubro de 2015)
  6. ALSA WIKI. Via8233 s.l., 2013 http://alsa.opensrc.org/Via8233 (acessado em 26 outubro 2015).

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Traduzindo o Thunderbird para Português

Instalação do Driver ATI Radeon XPRESS 200 no Ubuntu 16.04

Configuração do Ubuntu 16.04 para acesso com cartão ao Banrisul

Desfragmentando partições NTFS no Linux

Como resolver problemas com o pkg-config

Leitura recomendada

Big Linux: A opção ideal para iniciantes

Compilação Kernel Linux no Slackware

Ambiente X-Window, a continuação

Como Rodar Shell Script e Python via Apache no Linux

Interfaces Gráficas no Linux

  
Comentários
[1] Comentário enviado por lcavalheiro em 04/11/2015 - 00:56h

Meus parabéns pelo artigo, apesar da solução ser muito tensa essa para o problema. Sabe dizer se ele só afeta o Ubuntu?
--
Luís Fernando Carvalho Cavalheiro
Public GPG signature: 0x246A590B
Só Slackware é GNU/Linux e Patrick Volkerding é o seu Profeta

[2] Comentário enviado por eduardomozart em 04/11/2015 - 12:51h

Aparentemente, ela afeta todas as distribuições que possuem o snd_via82xx instalado (Tanto na Documentação do alsamix quanto em fóruns que pesquisei na internet que enfrentaram este mesmo problema nem sempre é específico sobre o Ubuntu).
Não pude confirmar se o problema ocorria no Windows também, mas acredito que sim, devido a ser um problema resolvido por Hardware.
Tive um caso da ASUS A7V8X-X que o som funcionava somente quando conectado a entrada do Microfone (Jack Rosa), kkk Achei curioso na época, mas como a Seção do quartel que recebeu o equipamento não usaria caixa de som, decidi não investigar mais a fundo. Acredito que deve ter sido algo relacionado ao conectores FP_AUDIO na placa mãe, assim como o que tive com a ECS deste artigo.
Um abraço!

[3] Comentário enviado por madrugada em 06/11/2015 - 14:28h

Meus parabéns, teve que ir a fundo para resolver. outros teriam desistido no meio do caminho.

Ao que percebi, o sistema não usava alsa e sim OSS. Correto?

[4] Comentário enviado por eduardomozart em 07/11/2015 - 02:04h


[3] Comentário enviado por madrugada em 06/11/2015 - 14:28h

Meus parabéns, teve que ir a fundo para resolver. outros teriam desistido no meio do caminho.

Ao que percebi, o sistema não usava alsa e sim OSS. Correto?


Madrugada, tudo bom?
Na verdade, não. Ele utilizava o PulseAudio, que é uma API para o ALSA. Eu não instalei nenhum outro pacote (mantive o Ubuntu "puro", apesar da distro instalada ser uma modificação do Ubuntu realizada pelo Departamento de Ciência e Tecnologia (DCT) do Exército Brasileiro pelo RemasterSys (foi adicionado o Java ao sistema e uma série de modificações pequenas, como suporte nativo ao Simatex [Sistema de Materiais do Exército] através do Wine, um sistema desenvolvido em Visual Basic 6 há muitos anos que só agora está sendo migrado para uma versão web)).
O OSS na sua versão OpenSource foi descontinuado em 2002. (https://wiki.archlinux.org/index.php/Open_Sound_System) A iniciativa ALSA foi criado para tentar preencher esta lacuna deixada pelo OSS (em 2007, o OSS voltou a ser OpenSource, mas já era "tarde demais"). O Alsa implementa uma biblioteca de compatibilidade OSS, chamada alsa-oss. (http://tuxradar.com/content/how-it-works-linux-audio-explained). O Ubuntu utiliza o PulseAudio (https://wiki.ubuntu.com/PulseAudio), que é uma camada para o alsa, como podemos encontrar na Wiki do Ubuntu: https://wiki.ubuntu.com/Audio/Alsamixer

[5] Comentário enviado por madrugada em 07/11/2015 - 08:15h

Perguntei por causa dos módulos do OSS que estão carregados. Veja:
snd_pcm_oss 47648 0
snd_mixer_oss 20224 1 snd_pcm_oss


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts