ALSA e headsets USB: hotplugging

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

[ Hits: 3.114 ]

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

Guia pós-instalação do Fedora 21 Xfce Spin

Guia pós-instalação do Fedora 22 Xfce Spin

Ativando a verificação em duas etapas no login sob LightDM ou GDM

Ubuntu e derivados não querem atualizar? Resolva na marra!

Xfce 4.12 no OpenSUSE 13.2

Leitura recomendada

Instalando o modem Lucent/Agere V.92 no Conectiva

Fazendo o kernel reconhecer o modem 3G MF6222

Lançada a versão alpha do driver para Softmodems Lucent/Agere SV92

Placa wireless USB Multilaser Atheros Communications, Inc. AR9271 802.11n no Linux

Wireless ralink no Slackware 10.2 com kernel 2.6.15.3

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts