Как отсоединить драйвер 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 к определенной звуковой карте?
Большое спасибо.