Defined Class Codes
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).
Last Update: June 15, 2016
Base Class | Descriptor Usage | Description |
00h | Device | |
01h | Interface | |
02h | Both | |
03h | Interface | |
05h | Interface | |
06h | Interface | |
07h | Interface | |
08h | Interface | |
09h | Device | |
0Ah | Interface | |
0Bh | Interface | |
0Dh | Interface | |
0Eh | Interface | |
0Fh | Interface | |
10h | Interface | |
11h | Device | |
12h | Interface | |
DCh | Both | |
E0h | Interface | |
EFh | Both | |
FEh | Interface | |
FFh | Both |
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 11h (Billboard Device)
Base Class 12h (USB Type-C Bridge Device)
This base class is defined for devices that conform to the USB Type-C Bridge 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 |
12h | 00h | 00h | USB Type-C Bridge Device |
support (E.g. via Test Access Port (TAP)).
DvC: Debug Capability on the USB device (Device Capability)
Base Class | SubClass | Protocol | Meaning | |
EFh | 01h | 01h | Active Sync device. This class code can be used in either Device or Interface Descriptors. Contact Microsoft for more information on this class. | |
02h | Palm Sync. This class code can be used in either Device or Interface Descriptors. | |||
02h | 01h | Interface Association Descriptor. The usage of this class code triple is defined in the Interface Association Descriptor ECN that is provided on www.usb.org . This class code may only be used in Device Descriptors. | ||
02h | Wire Adapter Multifunction Peripheral programming interface. Definition can be found in the Wireless USB Specification in Chapter 8. This class code may only be used in Device Descriptors | |||
03h | 01h | Cable Based Association Framework. This is defined in the Association Model addendum to the Wireless USB specification. This class code may only be used in Interface Descriptors. | ||
04h | 01h | RNDIS over Ethernet. Connecting a host to the Internet via Ethernet mobile device. The device appears to the host as an Ethernet gateway device. This class code may only be used in Interface Descriptors. | ||
02h | RNDIS over WiFi. Connecting a host to the Internet via WiFi enabled mobile device. The device represents itself to the host as an 802.11 compliant network device. This class code may only be used in Interface Descriptors. | |||
03h | RNDIS over WiMAX Connecting a host to the Internet via WiMAX enabled mobile device. The device is represented to the host as an 802.16 network device. This class code may only be used in Interface Descriptors. | |||
04h | RNDIS over WWAN Connecting a host to the Internet via a device using mobile broadband, i.e. WWAN (GSM/CDMA). This class code may only be used in Interface Descriptors. | |||
05h | RNDIS for Raw IPv4 Connecting a host to the Internet using raw IPv4 via non-Ethernet mobile device. Devices that provide raw IPv4, not in an Ethernet packet, may use this form to in lieu of other stock types. This class code may only be used in Interface Descriptors. | |||
06h | RNDIS for Raw IPv6 Connecting a host to the Internet using raw IPv6 via non-Ethernet mobile device. Devices that provide raw IPv6, not in an Ethernet packet, may use this form to in lieu of other stock types. This class code may only be used in Interface Descriptors. | |||
07h | RNDIS for GPRS Connecting a host to the Internet over GPRS mobile device using the device’s cellular radio | |||
05h | 00h | USB3 Vision Control Interface | Machine Vision Device conforming to the USB3 Vision specification. This standard covers cameras and other related devices that are typically used in machine vision, industrial, and embedded applications. Reference: http://visiononline.org/ This class code may only be used in Interface Descriptors. | |
01h | USB3 Vision Event Interface | |||
02h | USB3 Vision Streaming Interface | |||
06h | 01h | STEP. Stream Transport Efficient Protocol for content protection. | ||
02h | STEP RAW. Stream Transport Efficient Protocol for Raw content protection. | |||
07h | 01h | Command Interface in IAD | The DVB Common Interface (DVB-CI) specification describes a system whereby a removable CI Conditional Access Module (CICAM), given the appropriate usage rights, unscrambles protected pay-TV content and routes it over the same interface back to a TV receiver for display. An interface association for a DVB-CI function will contain a DVB-CI Command Interface for command, control, and status information, it may contain a DVB-CI Media Interface for audiovisual data streams, and it may also contain a CDC EEM interface to provide bridged networking to the CICAM. Reference: https://www.dvb.org/standards/dvb-ci-plus | |
01h | Command Interface in Interface Descriptor | |||
02h | Media Interface in Interface Descriptor | |||
Base Class FEh (Application Specific)
This base class is defined for devices that conform to several class specifications 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.
This base class is defined for vendors to use as they please. These class codes can be used in both Device and Interface Descriptors.




