Speed of High Speed USB HID Device

Continue the discussion from libusb-devel mailing list.

The question is what is the theoretical speed limit for high speed
USB HID Device under Windows? Is it 8MB/sec or 24MB/sec?

Best regards,
Xiaofan

On Wed, Jun 16, 2021 at 2:58 PM Tim Roberts wrote:

On 6/15/21 11:30 PM, Xiaofan Chen wrote:

I have one more question with regard to the Windows driver.

However I read somewhere Windows HID driver will not able
to achieve 24.576MB/s and will only be much slower. Is that correct?

Is it limited to 64KB/s based on the following document?
Input/Output/Feature Report Length: 64KB for In-box minidriver hidusb.
https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/hid-transports

Well, limiting each report to 64KB does not imply a maximum bandwidth
of 64KB/s.

This has never come up for me, so I don’t have the answer. As you know,
the vast majority of HID devices are low-bandwidth devices and typically
run full-speed. Maybe hidusb.sys doesn’t understand
multiple-transaction endpoints?

Even if it understands multiple-transaction endpoints, the max speed is
like the following right?
64KB x 3 /125us = 1536 KB/s

No, not at all. If you have a maximum bandwidth endpoint, you’ll get
3072 bytes per microframe. That means the 64kB transfer is going to be
split up to span 21 microframes, or 3 complete frames. And that would
be 24MB/s. If they don’t support the multiple transactions, you’d get
1024 bytes per microframe, and the 64kB transfer would span 8 complete
frames, at 8MB/s.