Keil Logo

Technical Support

On-Line Manuals

RL-ARM User's Guide (MDK v4)

RL-RTX RL-FlashFS RL-TCPnet RL-CAN RL-USB RL-USB for USB Device Applications RL-USB Device Library RL-USB Device Features RL-USB Device Software Stack RL-USB Device Functions RL-USB Device Source Files RL-USB Device Configuration Audio Device (ADC) Options Communication Device (CDC) - ACM Options Human Interface Device (HID) Options Mass Storage Device (MSC) Options Create USB Device Applications Create ADC Applications Create CDC ACM Applications Create HID Applications Create MSC Applications Create Composite Applications Test USB Device Applications Compliance Tests Test HID Client Application RL-USB for USB Host Applications RL-USB Host Library RL-USB Host Features RL-USB Host Software Stack RL-USB Host Functions RL-USB Host Source Files RL-USB Host Configuration Host Controller Driver Selection Host Controller Driver Configuration Host Class Driver Selection Create USB Host Applications Create USB Host HID Applications HID_Kbd Example Create USB Host MSC Applications Create USB Host Class Driver RL-USB Host Constants and Structures Error constants Speed constants Transaction Packet Type constants Transaction Error Type constants USB Request Block structure (USBH_URB) Endpoint structure (USBH_EP) Driver Capabilites structure (USBH_HCI_CAP) Device Class Instance structure (USBH_DCI) Host Controller Instance structure (USBH_HCI) Host Controller Driver structure (USBH_HCD) USB Concepts USB Transfer Rates USB Network Basic Communication Model USB Protocol Control Transfer Interrupt Transfer Isochronous Transfer Bulk Transfer Descriptors Device Configuration Device Descriptor Configuration Descriptor Interface Descriptor Endpoint Descriptor Device Qualifier Descriptor Example Programs Library Reference Appendix

Device Descriptor

The Device Descriptor is the root of the descriptor tree and contains basic device information. The unique numbers, idVendor and idProduct, identify the connected device. The Windows operating system uses these numbers to determine which device driver to load.

idVendor is the number assigned to each company producing USB-based devices. The USB Implementers’ Forum is responsible for administering the assignment of Vendor IDs.

The idProduct is another 16-bit field containing a number assigned by the manufacturer to identify a specific product.

Offset Field Size Value Description
0 bLength 1 Number Size of this descriptor in bytes.
1 bDescriptorType 1 Constant Device Descriptor Type.
2 bcdUSB 2 BCD USB Specification Release Number in Binary-Coded Decimal (i.e., 2.10 is 210H). This field identifies the release of the USB Specification with which the device and its descriptors are compliant.
4 bDeviceClass 1 Class Class code (assigned by the USB-IF).

If this field is reset to zero, each interface within a configuration specifies its own class information and the various interfaces operate independently.

If this field is set to a value between 1 and FEH, the device supports different class specifications on different interfaces and the interfaces may not operate independently. This value identifies the class definition used for the aggregate interfaces.

If this field is set to FFH, the device class is vendor-specific.
5 bDeviceSubClass 1 SubClass Subclass code (assigned by the USB-IF).

These codes are qualified by the value of the bDeviceClass field.

If the bDeviceClass field is reset to zero, this field must also be reset to zero.

If the bDeviceClass field is not set to FFH, all values are reserved for assignment by the USB-IF.
6 bDeviceProtocol 1 Protocol Protocol code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass and the bDeviceSubClass fields. If a device supports class-specific protocols on a device basis as opposed to an interface basis, this code identifies the protocols that the device uses as defined by the specification of the device class.

If this field is reset to zero, the device does not use class specific protocols on a device basis. However, it may use class specific protocols on an interface basis.

If this field is set to FFH, the device uses a vendor-specific protocol on a device basis.
7 bMaxPacketSize0 1 Number Maximum packet size for Endpoint zero (only 8, 16, 32, or 64 are valid).
8 idVendor 2 ID Vendor ID (assigned by the USB-IF).
10 idProduct 2 ID Product ID (assigned by the manufacturer).
12 bcdDevice 2 BCD Device release number in binary-coded decimal.
14 iManufacturer 1 Index Index of string descriptor describing manufacturer.
15 iProduct 1 Index Index of string descriptor describing product.
16 iSerialNumber 1 Index Index of string descriptor describing the device's serial number.
17 bNumConfigurations 1 Number Number of possible configurations.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.