HID Transports

HID transports supported in current and previous versions of Windows.

TransportIn-box minidriverWindows 7Windows 8Windows 10Notes
USBHidusb.sysYesYesYesSupport for USB HID 1.11+ is provided on Windows operating systems dating back to Windows 2000.
BluetoothHidbth.sysYesYesYesSupport for Bluetooth HID 1.1+ is provided on Windows operating systems dating back to Windows Vista.
Bluetooth LEHidBthLE.dllNoYesYesWindows 8 introduces support for HID over Bluetooth LE.
I²CHidi2c.sysNoYesYesWindows 8 introduces support for HID over I2C.
GPIOHidinterrupt.sysNoNoYesWindows Windows 10 introduces support for general-purpose I/O (GPIO) buttons.


Microsoft recommends that whenever possible, you use in-box drivers for the transports listed in the preceding table.

If your device requires a transport other than USB, Bluetooth, Bluetooth LE, or I²C, you can develop a miniport driver which is described in the Transport Minidrivers topic

HID transport limits

  • Report Descriptor Length

    A transport minidriver submits report descriptors to Hidclass in a HID_DESCRIPTOR structure. Regardless of the size defined by the transport protocol for transferring HID report descriptor with their devices, the actual report descriptor size is limited during the communication between Hidclass and HID minidrivers.

  • TLCs in a Report Descriptor

    The Hidclass/Hidparse driver pair is aware of the number of TLCs in a Report Descriptor. HID miniport drivers do not know that information. Each TLC has at least 2 bytes to start a collection and 1 byte to end the collection.

  • Input/Output/Feature Report Length

    The Hidclass/Hidparse driver pair defines lengths of HID Input, Output, and Feature Reports. The limit is 8 KB (minus 1 bit). Even if a HID minidriver can request a transfer of more than 8 KB for a report, only reports smaller than 8 KB are successfully transferred.

In-box minidriverReport Descriptor LengthTLCs in One Report DescriptorInput/Output/Feature Report Length
Hidclass/Hidparse65535 bytes218458 KB - 1 bit
Hidusb65535 bytesN/A64 KB
Hidbth65535 bytesN/A64 KB
HidBthLE65535 bytesN/A64 KB
Hidi2c65535 bytesN/A64 KB




Send comments about this topic to Microsoft