ALSA e headsets USB: hotplugging

Publicado por Luís Fernando C. Cavalheiro em 02/10/2015

[ Hits: 5.167 ]

Blog: https://github.com/lcavalheiro/

 


ALSA e headsets USB: hotplugging



Ubunteiros, clicadores e respeitável público do Viva o Linux, aqui começa mais uma Dica do Dino® ensinando para todos vocês como usar as ferramentas e programas que funcionam de verdade no GNU/Linux. Hoje no palco ALSA temos uma dica para resolver um velho problema que donos de headsets USB (tipo o Microsoft LX-3000). Para quem não sabe, o ALSA não faz o hotplugging dos dispositivos USB, isto é, ele não muda a saída de som padrão automaticamente quando você espeta o USB no computador. Inspirado em muita furingagem na wiki do Arch Linux e chupinhando a dica do usuário w0ng (às vezes fica fora do ar), cheguei a uma solução para esse problema. Aos trabalhos?

1 - Procedimentos

Adicione as seguintes linhas ao arquivo /etc/udev/rules.d/00-local.rules:

# Set USB headset as default sound card when plugged in
KERNEL=="pcmC[D0-9cp]*", ACTION=="add", PROGRAM="/bin/sh -c 'K=%k; K=$${K#pcmC}; K=$${K%%D*}; echo defaults.ctl.card $$K > /etc/asound.conf; echo defaults.pcm.card $$K >>/etc/asound.conf'"

# Restore default sound card when USB headset unplugged
KERNEL=="pcmC[D0-9cp]*", ACTION=="remove", PROGRAM="/bin/sh -c 'echo defaults.ctl.card 0 > /etc/asound.conf; echo defaults.pcm.card 0 >>/etc/asound.conf'"

E está pronto!

2 - Caveats

Com esse procedimento oriundo da engenharia de foguetes você já pode espetar e desespetar o fone USB à vontade que o ALSA vai mudar automaticamente o dispositivo padrão de reprodução de áudio do sistema. Entretanto, os programas que estiverem reproduzindo áudio não farão a troca do dispositivo. Será preciso reiniciar o programa para que ele reconheça o novo dispositivo padrão de reprodução de áudio.

Com isso o Dino® termina essa rapidinha com uma pergunta: foi bom pra vocês?

Atualização: sobre essa regra de udev e o Pulseaudio

Recentemente o Slackware adotou o Pulseaudio (PA para os íntimos), e eu descobri um pequeno problema. Ao espetar meu headset USB no sistema com essa regra de udev ativa, eu mandei para o espaço o arquivo /etc/asound.conf necessário para o bom funcionamento do PA. A solução foi simples: reinstalar o pacote que provê o arquivo em questão. No caso do Slackware, o alsa-lib faz esse trabalho, então um:
# slackpkg reinstall alsa-lib

Resolve o problema.
Outras dicas deste autor

Criando pacote nvidia-legacy340-driver no Slackware -current após update de 10/03/2016

Removendo os daemons do Evolution e do Tracker (o indexador de arquivos) da inicialização automática do GNOME 3.x

Alterando o gerenciador de sessão no Fedora 21

Utilizando as configurações do GNOME em outros gerenciadores de janelas

Use o Vim no Slackware

Leitura recomendada

Winmodem SMARTLINK em kernel 2.6.13 e mais novos

CentOS 6.X - Instalando driver Broadcom wl.ko

Configurando scanner HP PSC 1315 no Debian Lenny

Linux no AMD64 com SATA

Loop na placa de rede

  

Comentários
[1] Comentário enviado por Lucas_Mariano em 12/11/2015 - 20:18h

Muito bom Cavalheiro! Estou usando Arch linux, ou seja, estou usando systemd, saberia em qual arquivo eu devo colocar essas linhas?

“O mundo nunca sofrerá com a falta de maravilhas, mas apenas com a falta da capacidade de se maravilhar.” G.K. Chesterton

[2] Comentário enviado por lcavalheiro em 14/01/2016 - 20:08h

Lucas, só vi seu comentário agora. O arquivo no qual você coloca essas linhas é o mesmo.
--
Luís Fernando Carvalho Cavalheiro
Professor de Filosofia por paixão, halterocopista por gosto e moderador do VOL
Public GPG signature: 0x246A590B
Só Slackware é GNU/Linux e Patrick Volkerding é o seu Profeta

[3] Comentário enviado por Lucas_Mariano em 08/04/2016 - 15:25h

Só estou com um problema, funciona perfeitamente no chromium, mas não funciona no spotify e no skype. Já excluí as configurações dos dois mas eles simplesmente não aceitam o fone de ouvido. Será que o fato de eu estar usando o apulse influencia?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts