Updated 1/27/2014 by Philip Ries to show how to use Message Analyzer and its latest parsers to more easily diagnose the problem.
Updated 7/10/2014 by Vivek Gupta to include the Workaround information.
A few USB devices when connected to a port of an Enhanced Host Controller (EHCI) might not enumerate on Windows 8.1 but work on Windows 8. In Windows 8.1, the failure is reported as error code 43 in Device Manager. One of the reasons is that the device reports itself as supporting a USB version greater than 2.00, but does not provide the required BOS descriptor.
As per the official USB specification, a USB device with version greater than 2.00 must provide a BOS descriptor.
In Windows 8, the USB 2.0 driver stack does not validate that requirement. As a result, a device with version greater than 2.00 and without a BOS descriptor, enumerates successfully when connected to an EHCI controller.
In Windows 8.1, the driver stack has been updated and enumeration fails for such devices.
Note: The USB 3.0 eXtensible Host Controller (xHCI) driver in Windows 8 and 8.1 validates that requirement.
Devices where this issue is worked around by Windows Update
We are investigating a possible workaround for other devices with that problem. If you see code 43 for your device, report the device in the comments section of this post. But first, verify that the problem is due to a missing BOS descriptor by capturing and analyzing a USB ETW trace. Please also share your trace file with us.
How to Verify Your Device Is Affected By This Issue
First, get ready to use Microsoft Message Analyzer with the following one-time steps:
2. After installing Message Analyzer, log out and then log back in to enable its tracing capabilities.
3. Launch Message Analyzer.
4. Select “Update items”.
5. Click Downloads in the upper right, and update your “Devices and Log File” parser to version 1.001 (or the latest).
Alternatively, click “Sync All Displayed Items” to install all the downloads in the list (that are not already installed) and automatically receive updates. Note that new items released in the future will still require manual action to sync.
6. Close Message Analyzer for the parser update to take effect.
To diagnose the BOS descriptor issue:
1. Start Message Analyzer.
2. Go to the File -> Capture / Trace page.
3. Scroll down and select USB 2.
4. Unplug the device you are troubleshooting (if it’s plugged in).
5. Click Start.
6. Plug in the device to a USB 2 port.
7. Wait for the device to appear in Windows.
8. Click Stop.
9. Add column UsbDevice (Home -> View Options -> Column Chooser, search for “UsbDevice” and double-click it).
10. Right-click the UsbDevice column and select Group.
11. Paste in the following filter lines to the Filter location in the ribbon (still in the Home tab). Click Apply Filter.
Note: #DiagnosisTypes by itself simply matches messages that contain an error of any kind.
Do both a “Get Full Device Descriptor” message and a “Get BOS Descriptor” message show up under the same device, as shown above?
If yes—you have successfully diagnosed
that your device has a BOS descriptor issue that Windows 8.1 does not tolerate.
If no—STOP and:
- If you see “Parser Error” in the Summary column: make sure you perform all of the “parser update” steps earlier in this blog post and retry.
- Otherwise, the issue is something else.
13. If you did find both kinds of events (Device and BOS Descriptor) grouped together,
we would like to know about your device. Please save the trace to
or your service of choice, and share it with Microsoft as a link in the comments or in our
. If you use the contact form, be sure to mention this is a BOS descriptor issue. Also, you can use the workaround described in the next section to solve the issue. Please note that please do still send us the trace or the VID PID information of the device.
(Note that this workaround was added in the Windows update that was released on 07/08/2014. If you are applying this update within few weeks of this date, you will need to download and manually install the update from
To apply the workaround for a specific device, add a REG_DWORD value named
that has a value of 1 to the following registry subkey:
is the device's Vendor ID,
is the device's Product ID, and
is the device's Revision number. You can get the VID/PID/REV numbers from the device manager's details tab. This number is encoded in the HardwareIDs of the device)
1. Click Start, click Run, type regedit in the Open box, and then click OK .
2. Locate and then click the following subkey in the registry: