Wie konfiguriere ich meinen Sound für Jasper auf Raspbian Jessie?

19

Ich verwende Raspbian Jessie (2015-11-21) , um Jasper (Master Branch) auf dem Raspberry Pi 2 Model B auszuführen . Die Installationsanweisungen in der Dokumentation scheinen für Wheezy und nicht für Jessie zu sein.

Das Ausführen von Jasper on Wheezy funktioniert einwandfrei. Aber bei Jessie hatte ich Probleme, den Sound zu konfigurieren. Entweder hat mein Mikrofon funktioniert, aber nicht der Lautsprecher oder umgekehrt.

Dazu muss die Standard-Soundkarte auf USB eingestellt sein, da dort mein USB-Mikrofon angeschlossen ist und Jasper dies benötigt. Es gibt eine Menge Antworten , dass das Gerede über die Konfiguration von ALSA über ~/.asoundrc, /etc/asound.confund auch , /usr/share/alsa/alsa.confaber keiner von ihnen für mich gearbeitet.

Wenn ich meinen Mixer über öffne alsamixerund drücke F6, sehe ich immer bcm2835als Standardkarte. Das ist die Standardkarte des Pi2, aber ich möchte meinen USB zur Standardkarte machen.

Wie mache ich das?

Housni
quelle

Antworten:

25

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:

  1. Die ältere Methode "index ="
  2. 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, 0sodass die Standardeinstellung bcm2835zuerst 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/modulessah 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 indexMethode, um dies zu erreichen.

Housni
quelle
Ich bin froh, dass es geholfen hat :) Ich werde in ein paar Tagen ein Bash-Setup-Skript sowie ein Kochbuch haben, um all dies auf meinem Github-Konto zu erledigen (Link in meinem Profil).
Housni
Ich habe snd_usb_audioleider zwei Geräte angerufen .
kleinfreund
@Housni Hast du das Drehbuch schon gemacht?
not2qubit
0

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.

rchoppin
quelle
1
WRT: "Es scheint für den Jessie-Programmierer, der sich mit ALSA befasst, einfach faul zu sein, keinen zu erstellen, der getestet wird", lassen Sie sich nicht davon verwechseln, dass Debian 8, aka. jessie, aus dem Raspbian besteht, ist hauptsächlich für den Raspberry Pi und den BCM2835 SoC gedacht. Letzteres würde weniger als 1% der Debian-Benutzer ausmachen, daher kann es für sie kaum als Priorität angesehen werden. Die Tatsache, dass eine Gruppe von hauptsächlich Freiwilligen nicht 25 Stunden am Tag an einer Tastatur arbeiten möchte, um für jeden etwas zu sein, macht sie nicht faul ...
Goldlöckchen
... Es zeigt nur, dass die Menschen in der Gemeinde, die über das erforderliche technische Fachwissen verfügen, um die Arbeit zu erledigen, nicht genügend Interesse haben.
Goldlöckchen