Как отсоединить драйвер ALSA?

Я работаю над приложением, которое должно использовать более 32 звуковых карт USB. Он написан на python, и я тестирую его на Ubuntu 12.04. Некоторые полезные модули, которые я использую, это pyusb и pyalsaaudio.

Моя проблема заключается в том, что драйвер ALSA может обрабатывать не более 32 звуковых устройств, поэтому, поскольку приложению не нужно одновременно выводить данные на все из них (а также из-за ограничения пропускной способности), я думал об отключении драйвер ALSA с USB-карт и подключение его при необходимости (используя какую-то очередь).

В настоящее время я могу распознать все USB-устройства (после установки ядра 3.6, которое позволяет системе их обрабатывать) и получить представление о них с помощью pyusb. Я попробовал (для теста с 3 картами):

>>> import usb.core
>>> import usb.util
>>> cards = []
>>> cards.append(usb.core.find(idVendor=0x0d8c))
>>> cards.append(usb.core.find(idVendor=0x0c76))
>>> cards.append(usb.core.find(idVendor=0x1130))
>>> len(cards)
3
>>> for c in cards:
...     c.detach_kernel_driver(0)
... 

который успешно удаляет карты из вывода aplay -L, Тем не менее, они все еще отображаются в выводе cat /proc/asound/cardsпоэтому я боюсь, что драйвер ALSA не отключается (если вы могли бы объяснить, почему они исчезают из одного, а не из другого, это также будет полезно).

Могу ли я выполнить какие-либо команды (возможно, из терминала, не обязательно из python), чтобы отсоединить / повторно подключить драйвер ALSA к определенной звуковой карте?

Большое спасибо.

0 ответов

Другие вопросы по тегам