USB Descriptor Test
This test verifies that the device responds properly to all standard descriptor requests and returns accurate and consistent descriptor data.
Note
The USB Descriptor test is required only for USB peripheral devices and hubs. It verifies the correct response of a USB device to standard descriptor requests.
Test details
Associated requirements |
Device.Connectivity.UsbDevices.CompliesWithChap9 Device.Connectivity.UsbDevices.RespondAllStringRequests Device.Connectivity.UsbDevices.ResponsesLimitedByWlengthField |
Platforms |
Windows RT (ARM-based) Windows 8 (x64) Windows 8 (x86) Windows Server 2012 (x64) Windows RT 8.1 Windows 8.1 x64 Windows 8.1 x86 Windows Server 2012 R2 |
Expected run time |
~2 minutes |
Categories |
Certification |
Type |
Automated |
Running the test
Before you run the test, complete the test setup as described in the test requirements: USB Device.Connectivity Testing Prerequisites.
Troubleshooting
For troubleshooting information, see Troubleshooting Device.Connectivity Testing.
More information
This test requests both the device descriptor and configuration descriptor with varying lengths. The test calculates the upper limit to be at least two maximum packet sizes larger than the actual size of the descriptor. If this calculated upper limit is less than 255 bytes, the test increases the upper limit to 255 bytes. The test expects the USB test device to return valid descriptor information. However, the amount of information that the device returns must be no larger than the length that the test requests. If the requested length is greater than the size of the descriptor, the device must return the whole descriptor with no additional data.
The test includes the following parts:
Initialization
Descriptor test
Initialization
Gather the following initial information:
Device descriptor
Configuration descriptor
String descriptors (if the device and the test support them)
Device qualifier descriptor (if this is a USB 2.0 high-speed-capable device)
Descriptor test
Repeat Get Descriptor requests for the device, starting with a descriptor length of one up to the calculated upper bound in 1-byte increments.
Repeat Get Descriptor requests for the configuration, starting with a descriptor length of one up to the calculated upper bound in 1-byte increments.
Set the address to 2.
Repeat Get Descriptor requests for the device, starting with a descriptor length of one up to the calculated upper bound in 1-byte increments.
Repeat Get Descriptor requests for the configuration, starting with a length of one up to the calculated upper bound in 1-byte increments.