alsa и две звуковые карты

Примерно такое:


С выходом проще: современная звучка минимум шестиканальная и может спокойно воспроизводить три стереофонических потока.
Virkom
надо в рабочий комп втыкать устройство и смотреть по dmesg, какой ему id выдался.
Много чего посмотреть можно и задним числом.
Скажем, у меня так:
lspci | grep -i audio
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA)
01:05.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] RS880 HDMI Audio [Radeon HD 4200 Series]
Смотрю имена карт:
~ # ls /sys/bus/pci/devices/0000:00:14.2/sound/
card0
~ # ls /sys/bus/pci/devices/0000:01:05.1/sound/
card1
Алса использует именно эти имена карт:
~ # aplay -l                                                                        [127]
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC889 Analog [ALC889 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: SB [HDA ATI SB], device 1: ALC889 Digital [ALC889 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Анализируя такую информацию, можно хоть и не управлять назначением имён, но хотя бы узнать, как легла карта при этой загрузке.
akorop,
по ходу дела у него будет как то так, карты то одинаковые )))
card 0: SB [HDA ATI SB], device 0: ALC889 Analog [ALC889 Analog]
...
card 1: SB [HDA ATI SB], device 0: ALC889 Analog [ALC889 Analog]
...
card 2: SB [HDA ATI SB], device 0: ALC889 Analog [ALC889 Analog]
...
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
карты то одинаковые
Ну да, если б разные, и говорить было бы не о чем. Я предложил способ, как по PCI-адресам (которые у них разные и фиксированные) узнать имена карт. А дальше надо соорудить скрипт, который на основании этих данных будет запускать три программы захвата, указывая им alsa-адреса, сложившиеся при этой загрузке.
akorop
nafanja
карты то одинаковые
А дальше надо соорудить скрипт, который на основании этих данных будет запускать три программы захвата, указывая им alsa-адреса, сложившиеся при этой загрузке.
Не совсем так просто. На сервере стоит написанное мной ПО (демон), который занимается трансляциями.
Пользователь при настройке выбирает с какой звуковой карты какой канал транслировать. Т.е. можно, например, с третьей карты транслировать в сеть на IP первого канала. Штука в том, чтобы эта же конфигурация осталась после перезагрузки. Она и остается, только карты тусуются.
Поэтому скриптами не обойдешься.
ПО написано на Java. Там есть функция, которая возвращает Mixer.Info. Там никакой информации для жесткой привязки к карте нет. Из этой информации я выдираю только номер карты (hw:0, hw:1, hw:2) и с нее захватываю. Так как из программы не достучаться до жесткой привязки, приходится думать, как это сделать через драйвер.

Но за информацию спасибо. В UDEV вроде бы в правилах прописываются как раз числа из пути к файлу: /sys/bus/pci/devices/0000:00:14.2/sound/. Вроде бы это номер шины PCI. Попробую соорудить правила.
Virkom
Но за информацию спасибо. В UDEV вроде бы в правилах прописываются как раз числа из пути к файлу: /sys/bus/pci/devices/0000:00:14.2/sound/. Вроде бы это номер шины PCI. Попробую соорудить правила.
поделиться не забудь правилом ))
тоже интересно... а одинаковых саундов нет.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Virkom
Пользователь при настройке выбирает с какой звуковой карты
Э... а надо ли от пользователю требовать сделать выбор из неизвестно чего?
Ну а уж если предоставлять выбор, то надо предъявлять для выбора не динамически сложившиеся системные имена карт, а некие виртуальные имена, привязанные к PCI-адресам в порядке возрастания этих адресов (набор адресов можно получить, например, пропарсив вывод lspci).

Virkom
Из этой информации я выдираю только номер карты (hw:0, hw:1, hw:2)
А вместо этого номер карты надо взять из "имени файла" card* в каталоге, соответствующем PCI-адресу выбранной карты.

Virkom
Попробую соорудить правила.
Отпишите о результатах пожалуйста.
.......... DEL .......
(удалил свою написанную чушь - прочитал утром и стало не посебе, а потому решил удалить)
Ошибки не исчезают с опытом - они просто умнеют
Virkom
из программы не достучаться до жесткой привязки
Можно отключать шины PCI на которых сидят не нужные и не задействованные карты, оставив нужную, а после того как она будет задействована, пересканировать шины, чтобы можно было задействовать другие карты.
Ошибки не исчезают с опытом - они просто умнеют
akorop
Э... а надо ли от пользователю требовать сделать выбор из неизвестно чего?
Ну а уж если предоставлять выбор, то надо предъявлять для выбора не динамически сложившиеся системные имена карт, а некие виртуальные имена, привязанные к PCI-адресам в порядке возрастания этих адресов (набор адресов можно получить, например, пропарсив вывод lspci).
Да, надо. Это не простые пользователи, а очень крупная российская компания. И им нужно иметь выбор, чтобы можно было поменять источник очень быстро.
Выглядит в веб-интерфейсе это примерно так:
http://www.picshare.ru/uploads/170720/bu0EeDF323.jpg
 
Зарегистрироваться или войдите чтобы оставить сообщение.