Всем привет. Кто-нибудь сталкивался с такой проблемой, что когда отправляешь пакет данных в /dev/hidraw*
в N байт (т. е. столько, сколько указано в Endpoint Descriptor, значение wMaxPacketSize), а потом смотришь в Wireshark, там почему-то только N-1 байт передано.
Так оно в Linux, под Windows же всё работает прекрасно. Использовал библиотеку hidapi.
Пробовал также для приёма и передачи данных использовать обычные функции read, write из unistd.h
, но проблема не устранилась.
Вот какие дескрипторы показывает lsusb, если это поможет:
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1