О еще одной нише, где линукса нет
Nov. 17th, 2009 10:54 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вот вы таки будете смеяться, но большинство USB-HID микрофонов (и прочих usb-девайсов управления), используемых в системах речевого документооборота, толком не определяются под линуксами.
Под виндой, даже старой - работают без драйверов, автоматически. Т.е. проигрывание, воспроизведение, управление с кнопок и светодиоды для отображения статуса - все работает.
Под убунтой(которую использовали девелоперы линуксового модуля для нашей системы) - не работает, причем в совершенно различных вариациях - у одних не работают(и даже не перечисляются в информации) светодиоды, у других вообще из /dev/input/eventX нихрена не приходит, у третих не работает звук. А у тех, у которых работает - нужно перезагружаться иногда, чтобы заработало.
Я вот еще гламурный беспроводной SpeechMike Air проверю, как он на линуксе будет выглядеть.
С HID устройствами (кнопки и светодиоды), похоже, проблема в разном уровне абстрагирования на винде и линуксе.
На винде мы получаем тупо устройство и возможность читать и писать в него, открыв поток. А что писать и читать - хрен его знает, мы обычно USB снифером родные SDK (которыми пользовать сука невозможно - ActiveX инсталлировать/регистрировать и прочий шлак) сканируем и делаем свои модули, заточенные под устройства.
А на линуксе это дело превращается в /dev/input/eventX, откуда читаются и пишутся struct input_event, c таймстампами и кодами видов устройств и событий. Соответственно, я так понимаю, кернел должен знать про устройство, чтобы вернуть список его кнопок и диодов и уметь преобразовывать его командные последовательности в стандартный input_event вид. Зато прогам достаточно только с этой структурой уметь работать.
Под виндой, даже старой - работают без драйверов, автоматически. Т.е. проигрывание, воспроизведение, управление с кнопок и светодиоды для отображения статуса - все работает.
Под убунтой(которую использовали девелоперы линуксового модуля для нашей системы) - не работает, причем в совершенно различных вариациях - у одних не работают(и даже не перечисляются в информации) светодиоды, у других вообще из /dev/input/eventX нихрена не приходит, у третих не работает звук. А у тех, у которых работает - нужно перезагружаться иногда, чтобы заработало.
Я вот еще гламурный беспроводной SpeechMike Air проверю, как он на линуксе будет выглядеть.
С HID устройствами (кнопки и светодиоды), похоже, проблема в разном уровне абстрагирования на винде и линуксе.
На винде мы получаем тупо устройство и возможность читать и писать в него, открыв поток. А что писать и читать - хрен его знает, мы обычно USB снифером родные SDK (которыми пользовать сука невозможно - ActiveX инсталлировать/регистрировать и прочий шлак) сканируем и делаем свои модули, заточенные под устройства.
А на линуксе это дело превращается в /dev/input/eventX, откуда читаются и пишутся struct input_event, c таймстампами и кодами видов устройств и событий. Соответственно, я так понимаю, кернел должен знать про устройство, чтобы вернуть список его кнопок и диодов и уметь преобразовывать его командные последовательности в стандартный input_event вид. Зато прогам достаточно только с этой структурой уметь работать.
no subject
Date: 2009-11-17 11:52 am (UTC)Подозреваю та же херь и для USB устройств. Единственно дело может усложняться тем, что драйвер для USB может быть как в kernel space так и в user space. Попадался драйвер для Самсунговского WiMAX (aka Yota usb брелок), дык он работал через libusb + hotplug, подымал tun устройство и уютненько на нём устраивался.
no subject
Date: 2009-11-17 02:31 pm (UTC)no subject
Date: 2009-11-17 02:36 pm (UTC)no subject
Date: 2009-11-17 02:44 pm (UTC)no subject
Date: 2009-11-17 02:44 pm (UTC)no subject
Date: 2009-11-17 07:56 pm (UTC)