2013-08-01 07:17:57 +0000 2013-08-01 07:17:57 +0000
37
37

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

Comprei uma placa de som USB. Gostaria de configurar o meu ambiente de trabalho Linux para que prefira o dispositivo USB, se este estiver ligado e mudar automaticamente à medida que o dispositivo estiver (des)ligado. Será possível, e como?

Respostas (6)

37
37
37
2013-08-09 17:47:31 +0000

Encontre o seu cartão com

$ cat /proc/asound/cards

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

$ aplay -l

e depois 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 seu cartão determinado acima.

Em alternativa, pode alterar a encomenda dos seus cartões para que o seu cartão USB seja o cartão 0 e funcione sem edição asound.conf.

16
16
16
2013-08-10 17:54:57 +0000

este é o método de selecção da placa de som por defeito na Alsa. Poderá querer instalar Alsa para que este método funcione se estiver a utilizar o Pulse Audio.

cat /proc/asound/modules

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

0 snd_hda_intel

1 snd_usb_intel

pode muito facilmente compreender qual deles é a sua placa de som usb de cima.

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

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

opções snd_hda_intel index=-1

opções snd_usb_intel index=-2

neste caso, o dispositivo usb é o dispositivo preferido.

se tiver dois cartões com o mesmo nome diferentes da saída, como este:

opções snd_hda_intel

opções snd_hda_intel

emitir este comando para descobrir qual é qual:

cat /proc/asound/cards

depois editar módulos desta forma:

opções snd_hda_intel enable=1 index=0

opções snd_hda_intel enable=0 index=1

pode ser necessário reiniciar.por isso poderá ter de mudar manualmente as suas placas de som.

4
4
4
2016-05-28 03:47:19 +0000

A resposta de Matija Nalis apenas metade funcionou para mim (o alsamixer alterou o padrão, mas outras coisas como aplay e firefox teimosamente colados com o padrão errado). Este exemplo do wiki debian funcionou para mim (no portátil CentOS-6):

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

Para que conste: ALSA está mal documentado, e especialmente este material muito simples como seleccionar qual o cartão a utilizar é demasiado difícil. Pior, parece mudar entre sistemas. Além disso, recebi a etiqueta “Generic_1” da aplay -l onde aparece como “cartão 1” na lista. Outras pessoas pareciam estar a usá-la, por isso fiz o mesmo… o que significa que não posso dizer.

4
4
4
2015-12-14 23:55:48 +0000

Também não consegui obter a saída do meu dispositivo USB. A minha saída cat /proc/asound/modules foi:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

Tentei ambas as respostas aqui descritas que não me ajudaram (com muitas combinações de índices e muito reinício). Penso que o problema foi o meu dispositivo USB inicializar após o arranque. Tanto faz, por isso a minha solução de trabalho é colocar na lista negra outros 2 dispositivos de som, actualizando /etc/modprobe.d/blacklist.conf como:

blacklist snd_hda_intel
1
1
1
2016-01-07 23:45:17 +0000

Embora se possa alterar o cartão alsa padrão editando .asoundrc ou o sistema asound.conf, há algumas questões significativas com esta abordagem.

É frágil, e requer que a aplicação seja reiniciada para ser honrada.

Se quiser mudar de placa de som, então precisa realmente de utilizar um servidor de som que abstraia correctamente as aplicações da placa de som, tal como pulseaudio.

-1
-1
-1
2016-06-24 16:47:20 +0000

Aqui está uma variante das respostas de Matija Nalis e Tel. Foi isto que funcionou para mim:

~/.asoundrc

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

(Odroid C0, Debian Jessie, HDMI audio como placa 0 e USB Sound Card como placa 1 de acordo com aplay -l)

Nota: outros métodos não funcionaram para mim, uma vez que /proc/asound/modules não existe e não há nenhum módulo de áudio hdmi para colocar na lista negra ou colocar em baixa prioridade, ele está incorporado no kernel. Parece que teria de recompilar o kernel sem o suporte de áudio hdmi para o desactivar completamente.