USB Device Classes

USB defines class code information that is used to identify a device’s functionality and to nominally load a device driver based on that functionality. The information is contained in three bytes with the names Base Class, SubClass, and Protocol. (Note that ‘Base Class’ is used in this description to identify the first byte of the Class Code triple. That terminology is not used in the USB specification).

There are two places on a device where class code information can be placed. One is in the Device Descriptor, and the other is in the Interface Descriptors. Some defined class codes are allowed to be used only in a Device Descriptor, others can be used in both Device and Interface Descriptors, and some can only be used in Interface Descriptors. The following table shows the currently defined set of Base Class values, what the generic usage is, and where that Base Class can be used (either Device or Interface Descriptors, or both).

Base Class Table

Base Class Descriptor
Usage
Description
00h Device Use class information in the Interface Descriptors
01h Interface Audio
02h Both Communications and CDC Control
03h Interface Human Interface Device (HID)
05h Interface Physical
06h Interface Image
07h Interface Printer
08h Interface Mass Storage (MSD)
09h Device 8Hub
0Ah Interface CDC-Data
0Bh Interface Smart Card
0Dh Interface Content Security
0Eh Interface Video
0Fh Interface Personal Healthcare
10h Interface Audio/Video Devices
11h Device Billboard Device Class
DCh Both Diagnostic Device
0Eh Interface Wireless Controller
EFh Both Miscellaneous
FEh Interface Application Specific
FFh Both Vendor Specific

Base Class 00h (Device)

This base class is defined to be used in Device Descriptors to indicate that class information should be determined from the Interface Descriptors in the device. There is one class code definition in this base class. All other values are reserved.

This value is also used in Interface Descriptors to indicate a null class code triple.

Base Class SubClass Protocol Meaning
00h 00h 00h Use class code info from Interface Descriptors

Base Class 01h (Audio)

This base class is defined for Audio capable devices that conform to the Audio Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes may only be used in Interface Descriptors.
Base Class SubClass Protocol Meaning
01h xxh xxh Audio device

Base Class 02h (Communications and CDC Control)

This base class is defined for devices that conform to the Communications Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. Note that the Communication Device Class spec requires some class code values (triples) to be used in Device Descriptors and some to be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
02h xxh xxh communication device class (CDC) control

Base Class 03h (HID – Human Interface Device)

This base class is defined for devices that conform to the HID Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
03h xxh xxh HID device class

Base Class 05h (Physical)

This base class is defined for devices that conform to the Physical Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
05h xxh xxh Physical device class

Base Class 06h (Still Imaging)

This base class is defined for devices that conform to the Imaging Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved.

Base Class SubClass Protocol Meaning
06h 01h 01h Still Imaging device

Base Class 07h (Printer)

This base class is defined for devices that conform to the Printer Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
07h xxh xxh Printer device

Base Class 08h (Mass Storage)

This base class is defined for devices that conform to the Mass Storage Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
08h xxh xxh Mass Storage device

Base Class 09h (Hub)

This base class is defined for devices that are USB hubs and conform to the definition in the USB specification. That specification defines the complete triples as shown below. All other values are reserved. These class codes can only be used in Device Descriptors.

Base Class SubClass Protocol Meaning
09h 00h 00h Full Speed Hub
09h 00h 01h High Speed Hub with single TT
09h 00h 02h High Speed Hub with single TTs

Base Class 0Ah (CDC-Data)

This base class is defined for devices that conform to the Communications Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values.Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.
Base Class SubClass Protocol Meaning
0Ah xxh xxh CDC data device

Base Class 0Bh (Smart Card)

This base class is defined for devices that conform to the Smart Card Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values.Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
0Bh xxh xxh Smart Card device

Base Class 0Dh (Content Security)

This base class is defined for devices that conform to the Content Security Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
0Dh 00h 00h Content Security device

Base Class 0Eh (Video)

This base class is defined for devices that conform to the Video Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
0Eh xxh xxh Video device

Base Class 0Fh (Personal Healthcare)

This base class is defined for devices that conform to the Personal Healthcare Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes should only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
0Fh xxh xxh Personal Healthcare device

Base Class 10h (Audio/Video Devices)

The USB Audio/Video (AV) Device Class Definition describes the methods used to communicate with devices or functions embedded in composite devices that are used to manipulate audio, video, voice, and all image- and sound-related functionality. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base Class SubClass Protocol Meaning
10h 01h 00h Audio/Video Device – AVControl Interface
10h 02h 00h Audio/Video Device – AVData Video Streaming Interface
10h 03h 00h [[include :xsi:box:c]]

Base Class 11h (Billboard Device)

This base class is defined for devices that conform to the Billboard Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Device Descriptors.

Base Class SubClass Protocol Meaning
11h 00h 00h Billboard Device

Base Class FFh (Vendor Specific)

This base class is defined for vendors to use as they please. These class codes can be used in both Device and Interface Descriptors.

Base Class SubClass Protocol Meaning
FFh xxh xxh Vendor specific

20th Annual
Microchip MASTERs Conference 2016

JW Marriott Desert Ridge Resort-Phoenix, AZ

© 2016 Microchip Technology, Inc.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.