USB Device Classes

Last modified by Microchip on 2023/11/09 08:55

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 ClassDescriptor
Usage
Description
00hDeviceUse class information in the Interface Descriptors
01hInterfaceAudio
02hBothCommunications and Communications Device Class (CDC) Control
03hInterfaceHuman Interface Device (HID)
05hInterfacePhysical
06hInterfaceImage
07hInterfacePrinter
08hInterfaceMass Storage (MSD)
09hDevice8Hub
0AhInterfaceCDC-Data
0BhInterfaceSmart Card
0DhInterfaceContent Security
0EhInterfaceVideo
0FhInterfacePersonal Healthcare
10hInterfaceAudio/Video Devices
11hDeviceBillboard Device Class
DChBothDiagnostic Device
0EhInterfaceWireless Controller
EFhBothMiscellaneous
FEhInterfaceApplication Specific
FFhBothVendor Specific

Back to Top

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 ClassSubClassProtocolMeaning
00h00h00hUse class code info from Interface Descriptors

Back to Top

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 specification are reserved. These class codes may only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
01hxxhxxhAudio device

Back to Top

Base Class 02h (Communications and CDC Control)

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

Base ClassSubClassProtocolMeaning
02hxxhxxhCommunication device class (CDC) control

Back to Top

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 specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
03hxxhxxhHID device class

Back to Top

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 specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
05hxxhxxhPhysical device class

Back to Top

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 specification are reserved.

Base ClassSubClassProtocolMeaning
06h01h01hStill Imaging device

Back to Top

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 specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
07hxxhxxhPrinter device

Back to Top

Base Class 08h (Mass Storage)

This Base Class is defined for devices that conform to the MSD Class specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
08hxxhxxhMass Storage device

Back to Top

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 ClassSubClassProtocolMeaning
09h00h00hFull Speed Hub
09h00h01hHigh Speed Hub with single TT
09h00h02hHigh Speed Hub with single TTs

Back to Top

Base Class 0Ah (CDC-Data)

This Base Class is defined for devices that conform to the CDC specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
0AhxxhxxhCDC data device

Back to Top

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 specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
0BhxxhxxhSmart Card device

Back to Top

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 specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
0Dh00h00hContent Security device

Back to Top

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 specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
0EhxxhxxhVideo device

Back to Top

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 specification are reserved. These class codes should only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
0FhxxhxxhPersonal Healthcare device

Back to Top

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 specification are reserved. These class codes can only be used in interface descriptors.

Base ClassSubClassProtocolMeaning
10h01h00hAudio/Video Device – AVControl Interface
10h02h00hAudio/Video Device – AVData Video Streaming Interface
10h03h00hAudio/Video Device – AVData Audio Streaming Interface

Back to Top

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 specification are reserved. These class codes can only be used in device descriptors.

Base ClassSubClassProtocolMeaning
11h00h00hBillboard Device

Back to Top

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 ClassSubClassProtocolMeaning
FFhxxhxxhVendor specific

Back to Top