USB : USB Classes    A Closer Look at HID Class  

A USB HID Report is the actual data that the device sends or receives.

By contrast, a Report Descriptor is a table of numbers that describes the data.  A Report Descriptor only gets sent to the PC during the Enumeration process. The Report Descriptor tells the PC what kinds of Reports the device will send (i.e. whether any Input, Output, or Feature Reports are present). It also tells the PC all about the data items that are present in each type of Report.

When we say that it tells the PC all about the data items, we really mean ALL about the data items. The Report Descriptor describes each data item in exhaustive detail, telling the PC things like:

  • the item's size in bits
  • whether the item is a simple variable or an array
  • whether the item is a special Keyboard Array,
  • its position in the Report,
  • in what direction the data goes relative to the PC,
  • its minimum and maximum value
  • some standardized numbers called Usage Page and Usage ID that can describe what the data item is actually used for
  • optional information that allows the PC to scale the item to larger values, what its units are, and a whole lot more...

Please note that every USB HID class device has to have at least one Report Descriptor. (Yes, some devices need more than one.)


11 of 17
Copyright Notice and Author Information