metaclass: (Default)
[personal profile] metaclass
Вот вы таки будете смеяться, но большинство USB-HID микрофонов (и прочих usb-девайсов управления), используемых в системах речевого документооборота, толком не определяются под линуксами.

Под виндой, даже старой - работают без драйверов, автоматически. Т.е. проигрывание, воспроизведение, управление с кнопок и светодиоды для отображения статуса - все работает.

Под убунтой(которую использовали девелоперы линуксового модуля для нашей системы) - не работает, причем в совершенно различных вариациях - у одних не работают(и даже не перечисляются в информации) светодиоды, у других вообще из /dev/input/eventX нихрена не приходит, у третих не работает звук. А у тех, у которых работает - нужно перезагружаться иногда, чтобы заработало.

Я вот еще гламурный беспроводной SpeechMike Air проверю, как он на линуксе будет выглядеть.

С HID устройствами (кнопки и светодиоды), похоже, проблема в разном уровне абстрагирования на винде и линуксе.
На винде мы получаем тупо устройство и возможность читать и писать в него, открыв поток. А что писать и читать - хрен его знает, мы обычно USB снифером родные SDK (которыми пользовать сука невозможно - ActiveX инсталлировать/регистрировать и прочий шлак) сканируем и делаем свои модули, заточенные под устройства.

А на линуксе это дело превращается в /dev/input/eventX, откуда читаются и пишутся struct input_event, c таймстампами и кодами видов устройств и событий. Соответственно, я так понимаю, кернел должен знать про устройство, чтобы вернуть список его кнопок и диодов и уметь преобразовывать его командные последовательности в стандартный input_event вид. Зато прогам достаточно только с этой структурой уметь работать.

Date: 2009-11-17 11:52 am (UTC)
From: [identity profile] mend0za.livejournal.com
Сталкивался с похожей штукой (кнопки повешенные на аппаратные GPIO). Действительно, чтобы события появились (через драйвер gpio_keys и соотвественно через /dev/input/*) нужно просто сделать простенький setup в board setup соотвествующей платы (глубокая была эмбедщина, да) и привязать "GPIO22 -> KEY_DOWN, GPIO23-> KEY_UP, GPIO24 -> ENTER" и т.д.

Подозреваю та же херь и для USB устройств. Единственно дело может усложняться тем, что драйвер для USB может быть как в kernel space так и в user space. Попадался драйвер для Самсунговского WiMAX (aka Yota usb брелок), дык он работал через libusb + hotplug, подымал tun устройство и уютненько на нём устраивался.

Date: 2009-11-17 02:31 pm (UTC)
From: [identity profile] theiced.livejournal.com
Ребе, вы таки гоните и троллите. Никто, повторяю - никто, не мешает вам получить доступ к raw usb и срать туда всё что угодно, хоть тору постранично.

Date: 2009-11-17 02:36 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Кстате, как к нему доступ получить? Я хотя бы проверю, работает ли это вообще.

Date: 2009-11-17 02:44 pm (UTC)
From: [identity profile] theiced.livejournal.com
ну - или совсем тупо - пишем модуль и получаем доступ из него :)

Date: 2009-11-17 07:56 pm (UTC)
From: [identity profile] jek-hor.livejournal.com
libusb, да. А по теме --- я как-то расковыривал то, чем прикидывается китайская USB-трубка "для скайпа", валяющаяся тут дома. Там вообще ад и израиль, сплошь и рядом неадекват относительно стандарта.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 5th, 2025 08:35 am
Powered by Dreamwidth Studios