Según el Wiki de ALSA , bajo el título que dice " Cómo elegir un orden particular para múltiples tarjetas instaladas ", establece lo siguiente:
Qué tarjeta es el número de tarjeta 0, 1 y, por lo tanto, está determinada de manera predeterminada por el orden de carga del módulo. Esto es particularmente útil para elegir qué tarjeta se convierte en la predeterminada.
En teoría, por lo tanto, es posible elegir cuál de varias tarjetas instaladas se convierte en la tarjeta 0, la predeterminada, asegurando que su módulo de controlador se cargue primero. (Nota: esto supone que cada tarjeta de sonido requiere un controlador diferente. Si tiene dos tarjetas de sonido del mismo tipo, pase a la siguiente sección).
Hay dos maneras de lograr esto, la opción "antigua" index = del módulo del controlador de la tarjeta y la opción alternativa (y nueva) slots = del módulo snd.
Documenta dos métodos para hacer esto:
- El antiguo método "index ="
- El nuevo método "slots ="
Lo primero es lo que recomiendan las instrucciones de instalación de Jasper. También es de lo que habla la mayoría de las soluciones. Sin embargo, este es el método más antiguo y puede no funcionar en imágenes Raspbian Jessie más actuales.
Una combinación de ambos métodos es lo que funcionó para mí.
En primer lugar, verifique en qué orden se han cargado sus tarjetas:
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
El recuento de tarjetas comienza de 0
modo que el valor predeterminado bcm2835
se carga primero y mi tarjeta USB que tiene mi micrófono se carga en segundo lugar.
Para reordenar mis tarjetas, primero creo un archivo llamado /etc/modprobe.d/alsa-base.conf
. Se le puede poner el nombre que desee siempre que termine .conf
. Luego agregué lo siguiente:
# This sets the index value of the cards but doesn't reorder.
options snd_usb_audio index=0
options snd_bcm2835 index=1
# Does the reordering.
options snd slots=snd_usb_audio,snd_bcm2835
Los comentarios deben explicar qué hace cada línea. Una vez que hagas eso, parece que tienes que reiniciar tu máquina para que funcione.
Una vez que reinicie, debería poder grabar algo de audio con la tarjeta predeterminada que ahora debería ser su micrófono:
$ arecord temp.wav
y luego reproducirlo, especificando la tarjeta como 1 y el dispositivo como 0, que es donde debe estar la salida de su altavoz:
aplay -D plughw:1,0 temp.wav
Inicialmente solo agregué la línea con slots
ella. Esto funcionó para hacer que mi tarjeta USB sea la tarjeta predeterminada pero se indexó incorrectamente. Por ejemplo, una vez que hice eso, así es /proc/asound/modules
como se veía mi :
$ cat /proc/asound/modules
1 snd_usb_audio
2 snd_bcm2835
Idealmente, debería verse así:
0 snd_usb_audio
1 snd_bcm2835
Y es por eso que también uso el index
método para lograr esto.