USB Class Codes November 17, 2009
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 place is in the Device Descriptor, and the other is in 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 table below shows the currently defined set ofBase
Class values, what the generic usage is, and where that Base Class can
be used (either Device or Interface Descriptors or both).
(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
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
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
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
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
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
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
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
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
01h Hi-speed hub with single TT
02h Hi-speed hub with multiple TTs
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
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
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
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
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
This base class is defined for devices that diagnostic devices. There is currently only one value defined. All other values are reserved.This class code can be used in Device or Interface Descriptors.
Base Class SubClass Protocol Meaning
DCh 01h 01h USB2 Compliance Device.Definition for this device can be found at
USB Class Codes
November 17, 2009
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
place is in the Device Descriptor, and the other is in 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 table below 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).