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

Come fare in modo che Alsa scelga automaticamente un dispositivo audio preferito?

Ho comprato una scheda audio USB. Vorrei impostare il mio desktop Linux in modo che preferisca il dispositivo USB, se è collegato, e cambi automaticamente quando il dispositivo è (dis)collegato. È possibile, e come?

Risposte (6)

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

Trova la tua scheda con

$ cat /proc/asound/cards

Per ottenere nomi di schede ALSA validi, usa aplay:

$ aplay -l

e poi crea /etc/asound.conf con il seguente:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Sostituisci “carta 1” con il numero o il nome della tua carta determinato sopra.

In alternativa, puoi cambiare l'ordine delle tue schede così la tua scheda USB sarà la scheda 0 e funzionerà senza modificare asound.conf.

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

questo è il metodo per selezionare la scheda audio predefinita in Alsa. Potresti voler installare Alsa per far funzionare questo metodo se stai usando Pulse Audio.

cat /proc/asound/modules

elencherà i vostri moduli audio. L'output del comando sarà come questo (ad esempio):

0 snd_hda_intel

1 snd_usb_intel

si può capire abbastanza facilmente quale sia la vostra scheda audio usb da quanto sopra.

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

modifica questo alsa-base.conf in modo tale che la tua scheda preferita abbia un indice =-2 / 0 e l'altra scheda abbia un indice =-1 / 1 (tieni per -2 e -1 )

opzioni snd_hda_intel index=-1

opzioni snd_usb_intel index=-2

in questo caso il dispositivo usb è quello preferito.

se hai due schede diverse con lo stesso nome dall'uscita, come questa:

opzioni snd_hda_intel

opzioni snd_hda_intel

emetti questo comando per scoprire qual è:

cat /proc/asound/cards

poi modificate i moduli in questo modo:

options snd_hda_intel enable=1 index=0

options snd_hda_intel enable=0 index=1

un riavvio potrebbe essere necessario.

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

La risposta di Matija Nalis ha funzionato solo a metà per me (alsamixer ha cambiato il default, ma altre cose come aplay e firefox si sono ostinate a mantenere il default sbagliato). Questo esempio dal wiki debian ha funzionato per me (su un portatile CentOS-6):

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

Per la cronaca: ALSA è mal documentato, e specialmente questa roba molto semplice come selezionare quale scheda usare è troppo difficile. Peggio ancora, sembra cambiare da un sistema all'altro. Inoltre, ho ottenuto quel tag “Generic_1” da aplay -l dove appare come “scheda 1” nella lista. Altre persone sembravano usarlo, così ho fatto lo stesso… cosa significhi non posso dirlo.

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

Non ho anche potuto ottenere l'output dal mio dispositivo USB. Il mio output cat /proc/asound/modules era:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

Ho provato entrambe le risposte descritte qui che non hanno aiutato (con molte combinazioni di indici e molti riavvii). Penso che il problema sia stato il mio dispositivo USB inizializzato dopo l'avvio. Comunque sia, la mia soluzione di lavoro è mettere in lista nera altri 2 dispositivi audio aggiornando /etc/modprobe.d/blacklist.conf come:

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

Mentre è possibile cambiare la scheda alsa di default modificando .asoundrc o il file di sistema asound.conf, ci sono un paio di problemi significativi con questo approccio.

È fragile, e richiede il riavvio dell'applicazione per essere onorato.

Se vuoi cambiare scheda al volo allora hai davvero bisogno di usare un soundserver che astragga correttamente le applicazioni dalla scheda audio, come pulseaudio.

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

Ecco una variante delle risposte di Matija Nalis e Tel. Questo è quello che ha funzionato per me:

~/.asoundrc

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

(Odroid C0, Debian Jessie, HDMI audio come scheda 0 e USB Sound Card come scheda 1 secondo aplay -l)

Nota: altri metodi non hanno funzionato per me, poiché /proc/asound/modules non esiste e non c'è nessun modulo audio hdmi da mettere in blacklist o a bassa priorità, è integrato nel kernel. Sembra che avrei dovuto ricompilare il kernel senza il supporto audio hdmi per disabilitarlo completamente.