Welcome Guest ( Log In | Register )

Outline · [ Standard ] · Linear+

> USB versioning

TSmeenn P
post Jan 14 2022, 06:21 PM, updated 5 months ago

New Member
11 posts

Joined: Jan 2022
So I want to start coding for USB, but I found out so many versions in USB.

In early years, maybe 1994~96, there is UHCI.
Then OHCI,
EHCI - USB 2.0
XHCI - USB 3.0

They even have AHCI, but couldn't find it on official site.

Well, the purpose of this thread is to let coders familiar with USB versioning of different standard or specification.

For example, one can download HID( USB 1.11) spec in PDFs from USB official site:

So, I still haven't figure out UHCI ealier, or OHCI earlier.

Writing a USB driver and HID parser is not easy, and there is also Report Descriptor, example header like this:

This is for wheel mouse: (a bit outdated)
char ReportDescriptor[118] = {
    0x05, 0x01,        // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,        // USAGE (Mouse)
    0xa1, 0x01,        // COLLECTION (Application)
    0x09, 0x02,        //   USAGE (Mouse)
    0xa1, 0x02,        //   COLLECTION (Logical)
    0x09, 0x01,        //     USAGE (Pointer)
    0xa1, 0x00,        //     COLLECTION (Physical)
                       // ------------------------------  Buttons
    0x05, 0x09,        //       USAGE_PAGE (Button)      
    0x19, 0x01,        //       USAGE_MINIMUM (Button 1)
    0x29, 0x05,        //       USAGE_MAXIMUM (Button 5)
    0x15, 0x00,        //       LOGICAL_MINIMUM (0)
    0x25, 0x01,        //       LOGICAL_MAXIMUM (1)
    0x75, 0x01,        //       REPORT_SIZE (1)


Change to:
| Lo-Fi Version
0.0222sec    0.42    6 queries    GZIP Disabled
Time is now: 23rd May 2022 - 11:55 PM