Согласно ALSA Wiki , под заголовком, который гласит « Как выбрать определенный заказ для нескольких установленных карт », говорится следующее:
Какая карта имеет номер карты 0, 1 и т. Д. По умолчанию определяется порядком загрузки модуля. Это особенно полезно, чтобы выбрать, какая карта станет картой по умолчанию.
Поэтому теоретически можно выбрать, какая из нескольких установленных карт станет картой 0, по умолчанию, гарантируя, что ее модуль драйвера загружается первым. (Примечание. Предполагается, что для каждой звуковой карты требуется свой драйвер. Если у вас две звуковые карты одного типа, перейдите к следующему разделу.)
Для этого есть два способа: «старый» параметр index = модуля драйвера карты и альтернативный (и новый) параметр slots = модуля snd.
Он документирует два способа сделать это:
- Более старый метод "index ="
- Более новый метод "slots ="
Первый - это то, что рекомендуют инструкции по установке Jasper. Это также то, о чем говорят большинство решений. Тем не менее, это более старый метод, и он может не работать с более современными изображениями Распби Джесси.
Комбинация обоих методов - вот что сработало для меня.
Прежде всего, проверьте, в каком порядке загружены ваши карты:
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
Отсчет карт начинается с 0
того, что bcm2835
сначала загружается значение по умолчанию , а вторая - моя USB-карта с микрофоном.
Чтобы изменить порядок моих карт, я сначала создаю файл с именем /etc/modprobe.d/alsa-base.conf
. Оно может быть названо как угодно, если оно заканчивается .conf
. Затем я добавил следующее:
# 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
Комментарии должны объяснить, что делает каждая строка. Как только вы это сделаете, похоже, вам придется перезагрузить компьютер, чтобы он заработал.
После перезагрузки вы сможете записать звук на карту по умолчанию, которая теперь должна быть вашим микрофоном:
$ arecord temp.wav
и затем воспроизведите его, указав карту как 1 и устройство как 0, где должен быть выход вашего динамика:
aplay -D plughw:1,0 temp.wav
Я изначально только добавил строку с slots
в нем. Это помогло сделать мою USB-карту картой по умолчанию, но она была проиндексирована неправильно. Например, как только я это сделал, вот как /proc/asound/modules
выглядел мой :
$ cat /proc/asound/modules
1 snd_usb_audio
2 snd_bcm2835
В идеале это должно выглядеть так:
0 snd_usb_audio
1 snd_bcm2835
И именно поэтому я также использую index
метод для достижения этой цели.
snd_usb_audio
, к сожалению.После попытки отладить проблемы alsa для этого проекта и заставить работать ОБА usb mic и bcm2835, я думаю, что есть основная проблема, с которой ВСЕ советы ALSA, которые я получил, не касаются.
В каталоге / usr / share / alsa / cards отсутствует файл bcm2835.conf. Файл каталога / usr / share / alsa alsa.conf оставляет много заглушек, которые необходимо указать. Если карта для bcm2835 не поставлена, запуск Jasper.py отображает много предположительно нефатальных сообщений об ошибках. Работая с файлом bcm2835.conf, вы можете избавиться от раздражающих сообщений.
Мне кажется, что это ошибка Джесси; там действительно должен быть файл, который разрешает эти сообщения об ошибках. Мне кажется, просто лениво, что программист Джесси, который занимается ALSA, не создал тестируемого.
Я не обработал все сообщения об ошибках, но я подозреваю, что другие сообщения также вызваны этим.
Другим случаем отсутствия зрелого выпуска является сбой при проверке старых прошивок. Старые прошивки на моем jessie привели к тому, что рабочий стол не реагировал на клавиатуру или мышь, что является показателем того, как использовать jessie со старыми прошивками, если вы не знаете ssh. Не наивная пользовательская ситуация.
источник