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.
snd_usb_audio
leider zwei Geräte angerufen .Nachdem ich versucht habe, alsa-Probleme für dieses Projekt zu debuggen und beide USB-Mikrofone und bcm2835-Lautsprecher in Betrieb zu nehmen, gibt es meines Erachtens ein Grundproblem, mit dem sich ALLE ALSA-Ratschläge, die ich erhalten habe, nicht befassen.
Das Verzeichnis / usr / share / alsa / cards enthält keine Datei bcm2835.conf. Die / usr / share / alsa-Verzeichnisdatei alsa.conf hinterlässt VIELE Stubs, die angegeben werden müssen. Wenn keine Karte für bcm2835 mitgeliefert wird, werden beim Starten von Jasper.py viele vermeintlich nicht schwerwiegende Fehlermeldungen angezeigt. Wenn Sie eine bcm2835.conf-Datei bearbeiten, können Sie die irritierenden Meldungen entfernen.
Es scheint mir, dass dies ein Jessie-Bug ist; Es sollte wirklich eine Datei geben, die diese Fehlermeldungen behebt. Ich finde es einfach faul für den Jessie-Programmierer, der sich mit ALSA befasst, keinen zu erstellen, der getestet wird.
Ich habe nicht alle Fehlermeldungen durchgearbeitet, aber ich vermute, dass auch andere Meldungen dadurch verursacht werden.
Ein weiterer Fall, bei dem keine ausgereifte Version verfügbar ist, besteht darin, dass während des Startvorgangs nicht nach alter Firmware gesucht wird. Alte Firmware auf meinem jessie hat zu einem Desktop geführt, der nicht auf Tastatur oder Maus reagiert. Dies ist ein Showstopper für die Verwendung von jessie mit alter Firmware, es sei denn, Sie kennen ssh. Keine naive Benutzersituation.
quelle