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

¿Cómo hacer que Alsa elija automáticamente un dispositivo de sonido preferido?

He comprado una tarjeta de sonido USB. Me gustaría configurar mi escritorio Linux para que prefiera el dispositivo USB, si está enchufado y que cambie automáticamente cuando el dispositivo esté (des)enchufado. ¿Es posible, y cómo?

Respuestas (6)

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

Encuentre su tarjeta con

$ cat /proc/asound/cards

Para obtener nombres válidos de tarjetas ALSA, utilice aplay:

$ aplay -l

y luego crea /etc/asound.conf con lo siguiente

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Sustituya “tarjeta 1” por el número o nombre de su tarjeta determinado anteriormente.

Alternativamente, puede cambiar el orden de sus tarjetas para que su tarjeta USB sea la tarjeta 0 y funcione sin editar asound.conf.

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

este es el método para seleccionar la tarjeta de sonido por defecto en Alsa. Es posible que quiera instalar Alsa para que este método funcione si está usando Pulse Audio.

cat /proc/asound/modules

listará sus módulos de sonido. La salida del comando será así (por ejemplo):

0 snd_hda_intel

1 snd_usb_intel

puede entender fácilmente cuál es su tarjeta de sonido usb desde arriba.

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

edite este alsa-base.conf de forma que su tarjeta preferida tenga un índice =-2 / 0 y la otra tarjeta tenga un índice =-1 / 1 (siga con -2 y -1 )

options snd_hda_intel index=-1

options snd_usb_intel index=-2

en este caso el dispositivo usb es el preferido.

si tiene dos tarjetas diferentes con el mismo nombre de la salida, así:

options snd_hda_intel

options snd_hda_intel

emita este comando para saber cual es:

cat /proc/asound/cards

luego edite los módulos de esta manera:

options snd_hda_intel enable=1 index=0

options snd_hda_intel enable=0 index=1

puede que sea necesario reiniciar.

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

La respuesta de Matija Nalis sólo me funcionó a medias (alsamixer cambió el valor por defecto, pero otras cosas como aplay y firefox se mantuvieron obstinadamente con el valor por defecto equivocado). Este ejemplo de la wiki debian me funcionó (en un portátil CentOS-6):

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

Que conste: ALSA está pobremente documentado, y especialmente estas cosas tan simples como seleccionar qué tarjeta usar es demasiado difícil. Peor aún, parece que cambia entre sistemas. Además, obtuve esa etiqueta “Generic_1” de aplay -l donde aparece como “tarjeta 1” en la lista. Otras personas parecían usarlo, así que hice lo mismo… lo que significa no lo puedo decir.

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

Tampoco pude obtener la salida de mi dispositivo USB. Mi salida cat /proc/asound/modules era:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

He intentado las dos respuestas descritas aquí que no ayudaron (con muchas combinaciones de índices y muchos reinicios). Creo que el problema era que mi dispositivo USB se inicializaba después del arranque. Como sea, mi solución de trabajo es la lista negra de otros 2 dispositivos de sonido mediante la actualización de /etc/modprobe.d/blacklist.conf como:

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

Aunque puede cambiar la tarjeta alsa por defecto editando .asoundrc o el asound.conf del sistema, hay un par de problemas importantes con este enfoque.

Es frágil, y requiere reiniciar la aplicación para que se cumpla.

Si quieres cambiar de tarjeta sobre la marcha, necesitas usar un servidor de sonidos que abstraiga las aplicaciones de la tarjeta de sonido correctamente, como pulseaudio.

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

Aquí hay una variante de las respuestas de Matija Nalis y Tel. Esto es lo que me funcionó a mí:

~/.asoundrc defaults.pcm.!card 1 defaults.ctl.!card 1

(Odroid C0, Debian Jessie, audio HDMI como tarjeta 0 y tarjeta de sonido USB como tarjeta 1 según aplay -l)

Nota: los otros métodos no me funcionaron, ya que /proc/asound/modules no existe y no hay ningún módulo de audio hdmi para poner en la lista negra o en baja prioridad, está incrustado en el kernel. Parece que habría tenido que recompilar el kernel sin soporte de audio hdmi para deshabilitarlo completamente.