Согласно 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
метод для достижения этой цели.