Como fazer o Alsa escolher um dispositivo de som preferido automaticamente?

31

Comprei uma placa de som USB. Gostaria de configurar meu desktop Linux para que ele prefira o dispositivo USB, se ele estiver conectado e alternar automaticamente quando o dispositivo estiver (des) conectado. É possível e como?

    
por Petr Pudlák 01.08.2013 / 09:17

7 respostas

24

Encontre seu cartão com

$ cat /proc/asound/cards

Para obter nomes de cartão válidos do ALSA, use aplay :

$ aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq

e, em seguida, crie /etc/asound.conf com o seguinte:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Substitua "cartão 1" pelo número ou nome do cartão determinado acima.

Em alternativa, pode alterar a encomenda das suas cartas , para que o seu cartão USB receba o cartão 0 e funcionará sem editar asound.conf .

    
por 09.08.2013 / 19:47
14

este é o método para selecionar a placa de som padrão no Alsa. Você pode querer instalar o Alsa para este método funcionar se você estiver usando o Pulse Audio.

cat /proc/asound/modules

listará seus módulos de som. A saída do comando será assim (por exemplo):

0 snd_hda_intel

1 snd_usb_intel

você pode facilmente entender qual é a sua placa de som USB acima.

nano /etc/modprobe.d/alsa-base.conf

edite este alsa-base.conf de tal forma que sua placa preferida tenha um índice = -2 / 0 e a outra carta tem índice = -1 / 1 (ficar com -2 e -1)

options snd_hda_intel index=-1

options snd_usb_intel index=-2

neste caso, o dispositivo usb é o dispositivo preferido.

se você tiver dois cartões diferentes com o mesmo nome da saída, assim:

options snd_hda_intel

options snd_hda_intel

emita este comando para descobrir qual é qual:

cat /proc/asound/cards

edite os módulos desta forma:

options snd_hda_intel enable=1 index=0

options snd_hda_intel enable=0 index=1

uma reinicialização pode ser necessária. Portanto, talvez seja necessário alternar manualmente suas placas de som.

    
por 10.08.2013 / 19:54
2

Eu também não consegui a saída do meu dispositivo USB. Minha saída cat /proc/asound/modules foi:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

Eu tentei a resposta descrita aqui que não ajudou (com muitas combinações de índices e muita reinicialização). Eu acho que o problema foi meu dispositivo USB inicializar após o boot. Seja como for, a minha solução de trabalho está na lista negra de outros 2 dispositivos de som, atualizando /etc/modprobe.d/blacklist.conf como:

blacklist snd_hda_intel
    
por 15.12.2015 / 00:55
2

A resposta de Matija Nalis só funcionou para mim (o alsamixer mudou o padrão, mas outras coisas como aplay e firefox ficaram com o padrão errado). Este exemplo do wiki debian funcionou para mim (no laptop CentOS-6):

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

Para o registro: ALSA é mal documentado, e especialmente este material muito simples, como selecionar qual placa usar, é muito difícil. Pior, parece mudar entre sistemas. Além disso, recebi a tag "Generic_1" da aplay -l, onde aparece como "card 1" na lista. Outras pessoas pareciam estar usando, então eu fiz o mesmo ... o que significa que eu não posso dizer.

    
por 28.05.2016 / 05:47
1

Enquanto você pode alterar o cartão alsa padrão editando o .asoundrc ou o system asound.conf, há alguns problemas significativos com esta abordagem.

Ele é frágil e exige que as reinicializações de aplicativos sejam honradas.

Se você quiser trocar cartões imediatamente, você realmente precisa usar um servidor de som que abstraia os aplicativos da placa de som corretamente, como pulseaudio.

    
por 08.01.2016 / 00:45
0

As ferramentas pavucontrol e paprefs também podem ajudar na configuração, mas talvez seja fácil demais :) ou talvez isso estrague tudo o que você já fez.

    
por 03.02.2018 / 16:17
-1

Aqui está uma variante das respostas de Matija Nalis e Tel. Isso é o que funcionou para mim:

~ / .asoundrc

defaults.pcm.!card 1
defaults.ctl.!card 1

(Odroid C0, Debian Jessie, áudio HDMI como cartão 0 e placa de som USB como cartão 1 de acordo com aplay -l)

Nota: outros métodos não funcionaram para mim, como / proc / asound / modules não existe e não há nenhum módulo de áudio hdmi na lista negra ou colocado em baixa prioridade, ele está embutido no kernel. Parece que eu teria que recompilar o kernel sem suporte a áudio HDMI para desativá-lo completamente.

    
por 24.06.2016 / 18:47