Laut ALSA-Wiki heißt es unter dem Titel " So wählen Sie eine bestimmte Reihenfolge für mehrere installierte Karten aus ":
Welche Karte die Kartennummer 0, 1 ist, wird standardmäßig durch die Ladereihenfolge des Moduls bestimmt. Dies ist besonders nützlich, um auszuwählen, welche Karte die Standardkarte wird.
Theoretisch ist es daher möglich zu wählen, welche von mehreren installierten Karten die Standardkarte 0 wird, indem sichergestellt wird, dass zuerst das Treibermodul geladen wird. (Hinweis: Dies setzt voraus, dass für jede Soundkarte ein anderer Treiber erforderlich ist. Wenn Sie zwei Soundkarten desselben Typs haben, fahren Sie mit dem nächsten Abschnitt fort.)
Dies kann auf zwei Arten erreicht werden: mit der Option "old" index = des Kartentreibermoduls und mit der Option "alternative (und neue) Steckplätze = des snd-Moduls.
Es dokumentiert zwei Methoden, um dies zu tun:
- Die ältere Methode "index ="
- Die neuere Methode "slots ="
Ersteres wird in den Jasper-Installationsanweisungen empfohlen. Darüber sprechen auch die meisten Lösungen. Dies ist jedoch die ältere Methode und funktioniert möglicherweise nicht mit aktuelleren Raspbian Jessie-Bildern.
Eine Kombination beider Methoden hat bei mir funktioniert.
Überprüfen Sie zunächst, in welcher Reihenfolge Ihre Karten geladen wurden:
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
Das Zählen der Karten beginnt ab, 0
sodass die Standardeinstellung bcm2835
zuerst geladen wird und meine USB-Karte mit meinem Mikrofon an zweiter Stelle geladen wird.
Um meine Karten neu zu ordnen, erstelle ich eine Datei mit dem Namen /etc/modprobe.d/alsa-base.conf
. Es kann beliebig benannt werden, solange es endet .conf
. Ich habe dann folgendes hinzugefügt:
# 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
Die Kommentare sollten erklären, was jede Zeile tut. Danach müssen Sie Ihren Computer anscheinend neu starten, damit er funktioniert.
Nach dem Neustart sollten Sie in der Lage sein, Audio mit der Standardkarte aufzunehmen, die jetzt Ihr Mikrofon sein sollte:
$ arecord temp.wav
und spielen Sie es dann ab, indem Sie die Karte als 1 und das Gerät als 0 angeben, wo Ihre Lautsprecherausgabe sein sollte:
aplay -D plughw:1,0 temp.wav
Ich habe anfangs nur die Zeile mit hinzugefügt slots
. Dadurch wurde meine USB-Karte zur Standardkarte, aber sie wurde falsch indiziert. Wenn ich das getan habe, /proc/asound/modules
sah ich zum Beispiel so aus:
$ cat /proc/asound/modules
1 snd_usb_audio
2 snd_bcm2835
Im Idealfall sollte es so aussehen:
0 snd_usb_audio
1 snd_bcm2835
Und deshalb benutze ich auch die index
Methode, um dies zu erreichen.