Primeiro, vamos lidar com os índices dos dispositivos Alsa. Conecte seu alto-falante USB e invoque sudo alsa force-reload
para que Alsa o encontre.
Indique os índices dos cartões e seus drivers:
$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_usb_audio
Mostrar informações mais detalhadas:
$ cat /proc/asound/cards
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0x80000000 irq 16
1 [Speaker ]: USB-Audio - uBoom Q Speaker
uBoom Q Speaker at usb-0000:00:1d.0-1, full speed
Queremos ter 'Speaker' com índice = 0.
Adicione estas linhas a /etc/modprobe.d/alsa-base.conf
para tornar o USB Speaker o dispositivo padrão, se presente:
options snd_hda_intel index=-2
options snd_usb_audio index=-1
Isso torna o USB-Speaker mais preferível do que o cartão Builtin. Problema sudo alsa force-reload
, voila! Agora você pode ver com cat /proc/asound/cards
como os cards aparecem & desaparece quando liga / desliga o seu altifalante USB.
Aqui está outro recibo como escolher qual dos dois cartões disponíveis o próximo aplicativo lançado usará.
Adicione estas linhas ao /etc/asound.conf:
$ cat /etc/asound.conf.switch
# CARD DEFINITIONS
#=== CARD 'card0'
pcm.card0-hw { type hw ; card 0 ; }
ctl.card0-hw { type hw ; card 0 ; }
pcm.card0 { type dmix ;
ipc_key 4109 ; ipc_perm 0660 ;
slave { pcm "hw:0,0"
channels 2 ; period_size 1024 ; buffer_size 4096 ; rate 44100 ; period_time 0 ;
}
bindings { 0 0 ; 1 1 ; }
}
#=== CARD 'card1'
pcm.card1-hw { type hw ; card 1 ; }
ctl.card1-hw { type hw ; card 1 ; }
pcm.card1 { type dmix ;
ipc_key 1949 ; ipc_perm 0660 ;
slave { pcm "hw:1,0"
channels 2 ; period_size 1024 ; buffer_size 4096 ; rate 44100 ; period_time 0 ;
}
bindings { 0 0 ; 1 1 ; }
}
Isso criará dois dispositivos de reprodução 'dmix': 'card0' & 'card1'. Eles permitirão alternar entre eles sem problemas.
Agora, coloque isso em ~ / .asoundrc:
# Define new virtual devices
pcm.this { type plug ; slave.pcm "card1" ; }
ctl.this ctl.card1-hw
# Set default device
pcm.!default pcm.this
ctl.!default ctl.this
para mudar para o segundo cartão. Substitua todos os '1's por' 0 para voltar. Um pequeno script será útil:)
NOTA: Neste manual, criamos vários novos dispositivos Alsa: 'this', 'card0-hw', 'card0', 'card1-hw', 'card1'. Você pode se referir a eles:
$ amixer -D 'this' scontrols
Simple mixer control 'PCM',0
P.S. Eu não estou em comum com a forma como o Alsa realmente funciona e pode ter cometido erros terríveis :) Por favor, corrija-me se houver uma maneira melhor. Mas ainda assim, isso funciona:)