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.428 ]

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

Instalação e Configuração do Zabbix 3 e Agentes (Linux/Windows)

Instalação do OpenJDK e Oracle JDK 11 no Ubuntu e Debian

Traduzindo o Thunderbird para Português

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

Como resolver problemas com o pkg-config

Leitura recomendada

Transformando seu Windows em um quase Linux

GoboLinux? Que distribuição é essa? (Parte 1- Primeiros contatos)

Instalando o Fedora 10

Mageia Linux 8

Lendo as permissões dos arquivos 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