The proxy currently always uses USB_SPEED_HIGH for emulating devices.
We need to dynamically figure out the actual speed of the device via libusb_get_device_speed and use that for usb_raw_init.
We then also need to improve #10 to patch in the right bMaxPacketSize0 depending on the used speed. Note that the speed provided to usb_raw_init is merely a hint, and the UDC might decide to use a different one. To find out which speed UDC decided to use, we need to resolve https://github.com/xairy/raw-gadget/issues/41 first.
Thanks for opening this issue, I was aware of the speed issue when I was drafting the code 2 years ago. However, it was not recoreded anywhere so apparently I forgot it, thanks for reminding me!
The proxy currently always uses
USB_SPEED_HIGH
for emulating devices.We need to dynamically figure out the actual speed of the device via
libusb_get_device_speed
and use that forusb_raw_init
.We then also need to improve #10 to patch in the right
bMaxPacketSize0
depending on the used speed. Note that the speed provided tousb_raw_init
is merely a hint, and the UDC might decide to use a different one. To find out which speed UDC decided to use, we need to resolve https://github.com/xairy/raw-gadget/issues/41 first.Not a critical issue, filing to not forget.