Дело такое, есть веб-камера, работает как uvcvideo.
Естественно под венду у её софта больше фенек, всякие там скриншоты по кнопке и т.д.
Так вот, от ревиверсинженерил я её малость, поймал нужные байты. Соорудил утиль на libusb.
Естественно функция работает только тогда когда камера включена, но после обращения через
эту утиль отваливается интерфейс.Камере пофигу, она работает с /dev/video0, утиль же работает через /dev/bus/usb/001/004
---
#define DATA "\x00\x00\x12\xb5\x11\x00\x00\0x00"
memcpy(buf, DATA, 8);
usb_control_msg(devh, USB_TYPE_CLASS + USB_RECIP_INTERFACE, 1, 0x600, 0x400, buf, 8, 1000);
/* В венде этот пакет летит три раза :) */По отладке в венде видно, что видео и команды идут на разные EP.
---
Как в libusb правильно отправить этот пакет?
libusb вообще умеет работать с уже занятыми устройствами?!---
Иль, блин опять в ведро лезть?! %)
> Как в libusb правильно отправить этот пакет?
> libusb вообще умеет работать с уже занятыми устройствами?!
> Иль, блин опять в ведро лезть?! %)В общем так, libusb - говно, и годиться разве только для включения светомузыки на утюге.
ушёл в ядро.... :)---
За то у неё есть две интересные функции, deatach_kernel и reset_device,
собственно первая - отключение текущего драйвера от устройства, ну а вторая понятно.
Утилитку с этими функциями можно запихать в крон на ежеминутный запуск,
и наблюдать как сисадмин мучается :)