Według Wiki ALSA pod tytułem „ Jak wybrać konkretne zamówienie dla wielu zainstalowanych kart ”, stwierdza:
Która karta ma numer 0, 1, a więc domyślnie zależy od kolejności ładowania modułów. Jest to szczególnie przydatne do wyboru karty, która stanie się domyślną.
Teoretycznie można więc wybrać, która z kilku zainstalowanych kart stanie się kartą 0, domyślną, upewniając się, że moduł sterownika jest ładowany jako pierwszy. (Uwaga: zakłada się, że każda karta dźwiękowa wymaga innego sterownika. Jeśli masz dwie karty dźwiękowe tego samego typu, przejdź do następnej sekcji).
Można to osiągnąć na dwa sposoby: „stary” indeks = moduł modułu karty i alternatywne (i nowe) sloty = opcja modułu snd.
Dokumentuje dwie metody:
- Starsza metoda „index =”
- Nowsza metoda „slots =”
To pierwsze zalecają instrukcje instalacji Jaspera. O tym też mówi większość rozwiązań. Jest to jednak starsza metoda i może nie działać na bardziej aktualnych obrazach Raspbian Jessie.
Połączenie obu metod sprawdziło się dla mnie.
Przede wszystkim sprawdź, w jakiej kolejności zostały załadowane twoje karty:
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
Liczenie kart zaczyna się od, 0
więc domyślnie bcm2835
jest ładowane jako pierwsze, a moja karta USB z moim mikrofonem jest ładowana jako druga.
Aby zmienić kolejność kart, najpierw tworzę plik o nazwie /etc/modprobe.d/alsa-base.conf
. Można go nazwać dowolną nazwą, o ile kończy się .conf
. Następnie dodałem:
# 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
Komentarze powinny wyjaśniać, co robi każda linia. Gdy to zrobisz, wydaje się, że musisz ponownie uruchomić komputer, aby działał.
Po ponownym uruchomieniu powinieneś być w stanie nagrać trochę dźwięku z domyślną kartą, która powinna być teraz Twoim mikrofonem:
$ arecord temp.wav
a następnie zagraj w nią, określając kartę jako 1, a urządzenie jako 0, czyli tam, gdzie powinno być wyjście głośnika:
aplay -D plughw:1,0 temp.wav
Początkowo dodałem tylko linię z slots
nim. To działało, czyniąc moją kartę USB domyślną kartą, ale została źle zindeksowana. Na przykład, kiedy to zrobiłem, /proc/asound/modules
wyglądałem tak:
$ cat /proc/asound/modules
1 snd_usb_audio
2 snd_bcm2835
Idealnie powinno wyglądać tak:
0 snd_usb_audio
1 snd_bcm2835
I dlatego też używam tej index
metody, aby to osiągnąć.
snd_usb_audio
Niestety mam dwa urządzenia .Po próbie debugowania problemów z alsą w tym projekcie i uruchomieniu OBIEKTYW mikrofonu USB i głośników bcm2835 myślę, że istnieje podstawowy problem, z którym WSZYSTKIE otrzymane porady ALSA nie rozwiązują.
Katalog / usr / share / alsa / cards nie ma pliku bcm2835.conf. Plik katalogu / usr / share / alsa alsa.conf pozostawia wiele kodów pośredniczących, które należy określić. O ile nie jest dostarczona karta dla bcm2835, uruchomienie Jasper.py wyświetla wiele rzekomo niekrytycznych komunikatów o błędach. Opracowując plik bcm2835.conf, możesz pozbyć się irytujących wiadomości.
Wydaje mi się, że to błąd Jessie; naprawdę powinien istnieć plik, który rozwiązuje te komunikaty o błędach. Wydaje mi się, że jestem leniwy dla programisty jessie, który zajmuje się ALSA, aby nie stworzył testowanego.
Nie przepracowałem wszystkich komunikatów o błędach, ale podejrzewam, że są to również spowodowane innymi komunikatami.
Innym przypadkiem braku dojrzałej wersji jest brak sprawdzania starego oprogramowania podczas uruchamiania. Stare oprogramowanie układowe na moim jessie spowodowało, że pulpit nie reagowałby na klawiaturę lub mysz, co jest przeszkodą w używaniu jessie ze starym oprogramowaniem, chyba że znasz ssh. Nie naiwna sytuacja użytkownika.
źródło