USB HID Transfer speeds


I am working on project, where a FEZ Panda II is connected to a Windows PC using a USB cable.

The device works as a HID, with a fixed input buffer length, and a fixed output buffer length.

All works great - but at the most, I am able to transfer 4 KB/sec - this is by transmitting a byte array directly from memory, so there is no “generate” overhead.

Anybody got tips on performance optimizing for USB HID? I tried changing the output buffer size, and higher seems to be better for bulk data.
Although, anything above 32 bytes/frame throws an error when starting the device.

I know HID was not built for transfer speed, and I am not expecting 480 Mbps - or even 12 Mbps, but I was hoping for more than 0.03 Mbps.

I think this is normal fro HID and CDC. On USB FS, which is 12mbps, you get one transfer per millisecond. That transfer can be up to 64bytes. So, if you use them all and the system send data in every single frame, you get 64Kbytes/sec, which will never be the case.

You will need your own driver on windows side to utilize the bus to its potential.