Using Teensy USB Keyboard with USB High Speed


New member

Teensy seems to have implemented the USB High Speed Protocol given the 480 Mbit/sec device capability.

On the description of the USB Keyboard functionality here - in the section towards the end "Bandwidth - Less Than You Might Expect" it states that:

..."There is nothing you can do about these limits"...

"The HID protocol is used by USB keyboards, and HID uses the USB "interrupt" transfer type, which allocates 1 packet per a configurable number of USB frames. Each USB frame is 1ms, and the Teensyduino USB keyboard code requests the interval to be every frame. If the operating system honors this request, bandwidth is available for 1000 packets per second."

If the Teensy has implemented USB High Speed to achieve 480MBit/sec capability, wouldn't the transfer time for the keyboard packet be transferred every 0.125ms per the USB High Speed protocol? I'm curious if there is a limitation of the HID device drivers where interrupt endpoints can't be sent more frequently than 1ms, and are not able to take advantage of the 0.125ms microframes of USB HS? Or perhaps this USB Keyboard documentation was written before USB High Speed protocol was implemented?
The key part is "the Teensyduino USB keyboard code requests the interval to be every frame".
One microframe = 0.125ms.
One frame = 8 microframes = 1ms.

Most keyboards/mice sold today are still only full speed devices. There's really no need for them to send data faster than 1ms intervals, and doing so reserves time in the periodic schedule that could otherwise be used for other devices.