ALSA e headsets USB: hotplugging

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

[ Hits: 5.298 ]

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

Reproduzindo Playlists do YouTube pelo VLC

Geração automática do menu principal para gerenciadores de janelas

Inicializando uma máquina virtual no VirtualBox via pendrive USB

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

Atualizando Fedora 21 para 22 sem usar FedUp, Yumex ou Fedy

Leitura recomendada

Montando leitor de cartões de câmeras fotográficas no Slackware 10.2

Atualizando as bibliotecas compartilhadas do dispositivo USB

Som no Ubuntu 10.4 Lucid Lynx

Módulo para modem conexant no Ubuntu

Instalando Placa Nvidia no Fedora Core 27

  

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