Supporting a USB HID device interface that is missing a interrupt input endpoint

Matt Silva msilva-dev at
Thu May 26 16:06:46 EDT 2022

Hey, Greg.

I went ahead and started implementing the changes in libusb as per your recommendation. But I'm following up cause you asked about the usbhid-dump output.

> But this really is not a HID device, right?

Well, Windows does decide to recognize it as a HID device. I captured some packets send to the device's control endpoint of unknown transfer type with URB function: URB Function: URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR (0x002a). Perhaps that has something to do with this as my research says that MS OS Descriptors indicate which driver Windows should use.

> What is the HID descriptor that it prints out? Can you use the
> 'usbhid-dump' program that is part of the usbutils package to show the
> report descriptors?
usbhid-dump unfortunately wouldn't dump the endpoint of the device, even in my test environment with the changes I made to the kernel. iface_list.c:140 shows that usbhid-dump also checks for an INTERRUPT IN endpoint.

However, via Wireshark, I grabbed the HID descriptor for that endpoint and here are the results:

0000   06 90 ff 0a 00 ff a1 01 15 00 26 ff 00 75 08 95
0010   40 09 02 81 02 09 03 91 02 0a 00 ff b1 02 c0

HID Report
    Usage Page (Vendor)
        Usage Page: Vendor (0xff90)
    Usage (Vendor)
        Usage: Vendor (0xff)
    Collection (Application)
        Collection type: Application (0x01)
        Logical Minimum (0)
        Logical Maximum (255)
        Report Size (8)
        Report Count (64)
        Usage (Vendor)
        Input (Data,Var,Abs)
        Usage (Vendor)
        Output (Data,Var,Abs)
        Usage (Vendor)
        Feature (Data,Var,Abs)
        End Collection

No pressure for a quick response. Things are going quite smoothly with libusb in OpenRGB, so your help isn't imperative for this.

Thanks again :)

More information about the Kernelnewbies mailing list