ALSA e headsets USB: hotplugging

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

[ Hits: 5.134 ]

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

Alterando o gerenciador de login no openSUSE

Habilitando dicionários para correção ortográfica para o Claws Mail no Gentoo

Extraindo referências de artigos acadêmicos ou científicos de arquivo .pdf para .txt

Alterando plano de fundo da tela de login do Fedora (GNOME)

Plugin Pipelight no Fedora 20

Leitura recomendada

Instalação do scanner HP Scanjet 2400 no Ubuntu 10.04 LTS

Configurando as teclas WakeUp, Power e Sleep

Multifuncional HP C3180 (e outros modelos da HP) no Linux

Pendrive queimou?

TouchPad inteligente (só liga quando o mouse está desplugado) - udev (Debian Lenny)

  

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