USB Keyboard and Mouse Unneeded Write (OUT) Endpoint Descriptors? #250

Open
opened 2026-02-20 08:21:29 -05:00 by deekerman · 2 comments
Owner

Originally created by @rmschooley on GitHub (May 6, 2025).

The usb keyboard, the usb absolute mouse, and the usb relative mouse devices all seem to employ two endpoint descriptors: 1) a read (IN) endpoint descriptor, and 2) a write (OUT) endpoint descriptor. Most if not all usb keyboard and usb mice only employ one read (IN) endpoint descriptor. Unless there is some reason for these write (OUT) endpoint descriptors to exist, it seems like they should be eliminated to simplify host software processing.

Originally created by @rmschooley on GitHub (May 6, 2025). The usb keyboard, the usb absolute mouse, and the usb relative mouse devices all seem to employ two endpoint descriptors: 1) a read (IN) endpoint descriptor, and 2) a write (OUT) endpoint descriptor. Most if not all usb keyboard and usb mice only employ one read (IN) endpoint descriptor. Unless there is some reason for these write (OUT) endpoint descriptors to exist, it seems like they should be eliminated to simplify host software processing.
Author
Owner

@wblondel commented on GitHub (May 6, 2025):

Could this unnecessary OUT endpoint descriptor be the cause of missed key release events / repeated key press states / extreme mouse lags?

@wblondel commented on GitHub (May 6, 2025): Could this unnecessary OUT endpoint descriptor be the cause of missed key release events / repeated key press states / extreme mouse lags?
Author
Owner

@rmschooley commented on GitHub (May 6, 2025):

No, I don't believe so. Unless the device is using these endpoints for some special/unusual reason, I don't think they will ever even be used. With perfect host software, I don't think these extra endpoints would ever cause an issue. But, I think we all know that usb device handling is not always perfect within the bios environment of desktops/notebooks/servers. So, I definitely think they should be removed if at all possible to eliminate any unnecessary complication.

Someday (hopefully soon), I hope to put a software usb bus analyzer or better yet a hardware usb bus analyzer on this device and see what is happening during these crazy key events -- which I have indeed seen as well especially when typing fast. Unfortunately, I don't have access to my hardware analyzer right now.

@rmschooley commented on GitHub (May 6, 2025): No, I don't believe so. Unless the device is using these endpoints for some special/unusual reason, I don't think they will ever even be used. With perfect host software, I don't think these extra endpoints would ever cause an issue. But, I think we all know that usb device handling is not always perfect within the bios environment of desktops/notebooks/servers. So, I definitely think they should be removed if at all possible to eliminate any unnecessary complication. Someday (hopefully soon), I hope to put a software usb bus analyzer or better yet a hardware usb bus analyzer on this device and see what is happening during these crazy key events -- which I have indeed seen as well especially when typing fast. Unfortunately, I don't have access to my hardware analyzer right now.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/kvm#250
No description provided.