Замена в горячем режиме Аудио USB Alsa

Мой новый динамик USB появился как второе устройство в Alsa. Мне удалось сделать это основным:

$ cat /proc/asound/modules 
 0 snd_usb_audio
 1 snd_hda_intel
$ cat /proc/asound/cards
 0 [Speaker        ]: USB-Audio - uBoom Q Speaker
                      uBoom Q Speaker at usb-0000:00:1d.1-1, full speed
 1 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0x80000000 irq 16

путем добавления этих строк к /etc/modprobe.d/alsa-base.conf:

options snd_hda_intel index=1
options snd_usb_audio index=0

Теперь, когда я загружаю Аудио USB работы по умолчанию везде. Проблема — когда я разъединяю ее (или начальная загрузка без него), я вижу

$ cat /proc/asound/modules 
 1 snd_hda_intel

и ничто не работает, потому что существует нет 0- устройство th:

$ aplay
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'

Вещью, которую я хочу, является способ повторно присвоить индексы устройства. Если решением является сценарий — я собираюсь создать правило udev с ним.

В настоящее время я изменяю 'индекс =?' назад к значению по умолчанию '0,1', вызвать alsa force-reload и это помогает. Какой-либо лучший путь?

Примечание: существует нет asoundconf в моем дистрибутиве (KUbuntu Lucid) :(

2
задан 07.01.2016, 06:33

2 ответа

Во-первых, давайте иметь дело с индексами устройств Alsa. Включите свой Динамик USB и вызовите sudo alsa force-reload таким образом, Alsa находит его.

Индексы карт списка и их драйверы:

$ cat /proc/asound/modules 
 0 snd_hda_intel
 1 snd_usb_audio

Покажите более подробную информацию:

$ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0x80000000 irq 16
 1 [Speaker        ]: USB-Audio - uBoom Q Speaker
                      uBoom Q Speaker at usb-0000:00:1d.0-1, full speed

Мы хотим иметь 'Динамик' с index=0.

Добавьте эти строки к /etc/modprobe.d/alsa-base.conf сделать Динамик USB устройством по умолчанию, если существующий:

options snd_hda_intel index=-2
options snd_usb_audio index=-1

Это делает Динамик USB более предпочтительным, чем Встроенная карта. Проблема sudo alsa force-reload, вуаля! Теперь Вы видите с cat /proc/asound/cards как карты появляются и исчезают, когда Вы включаетесь в/от своем Динамике USB.


Вот другое получение, как выбрать, какая из 2 доступных карт будет следующее запущенное использование приложения.

Добавьте эти строки к/etc/asound.conf:

$ cat /etc/asound.conf.switch 
# CARD DEFINITIONS
#=== CARD 'card0'
pcm.card0-hw { type hw ; card 0 ; }
ctl.card0-hw { type hw ; card 0 ; }

pcm.card0 { type dmix ;
    ipc_key 4109 ; ipc_perm 0660 ;
    slave { pcm "hw:0,0"
        channels 2 ; period_size 1024 ; buffer_size 4096 ; rate 44100 ; period_time 0 ;
        }
    bindings { 0 0 ; 1 1 ; }
    }

#=== CARD 'card1'
pcm.card1-hw { type hw ; card 1 ; }
ctl.card1-hw { type hw ; card 1 ; }

pcm.card1 { type dmix ;
    ipc_key 1949 ; ipc_perm 0660 ;
    slave { pcm "hw:1,0"
        channels 2 ; period_size 1024 ; buffer_size 4096 ; rate 44100 ; period_time 0 ;
        }
    bindings { 0 0 ; 1 1 ; }
    }

Это создаст два 'dmix' устройства воспроизведения: 'card0' и 'card1'. Они позволят Вам переключаться между ними без проблем.

Теперь, поместите это в ~/.asoundrc:

# Define new virtual devices
pcm.this                { type plug ; slave.pcm "card1" ; }
ctl.this                ctl.card1-hw
# Set default device
pcm.!default    pcm.this
ctl.!default    ctl.this

переключаться на вторую карту. Замените все '1's '0 для переключения назад. Маленький сценарий будет удобен :)

Примечание: В этом руководстве мы создали несколько новых устройств Alsa: 'это', 'card0-hw', 'card0', 'card1-hw', 'card1'. Можно обратиться к ним:

$ amixer -D 'this' scontrols
Simple mixer control 'PCM',0

P.S. Я не вместе с тем, как Alsa действительно работает и, возможно, сделал ужасные ошибки :) Исправьте меня, если существует лучший путь. Но тем не менее, это работает :)

1
ответ дан 08.12.2019, 07:32

попытайтесь установить asoundconf-gtk, но заботьтесь о https://bugs.launchpad.net/ubuntu / + source/asoundconf-gtk / + ошибка/575058

2
ответ дан 08.12.2019, 07:32

Теги

Похожие вопросы