问题
I'm working with a custom USB firmware written in C utilizing the libusb API. The goal is to have this firmware compatible with Linux, Mac, and Windows. Thus far, testing w/a Beaglebone Black with debug probe on Ubuntu & Mac has yielded proper USB enumeration and operations with the respective OS's host application. However, trying to connect the board to Windows 10 results in 'This device cannot start. (Code 10) An invalid parameter was passed to a service or function.'
I have primarily been relying on the WCID wiki and libusb wiki regarding porting libusb over to Windows. I've added the MS OS String Descriptor and MS OS CID Feature Descriptor for WINUSB; Zadig shows that the device is now WCID-compliant and is recognized as a WinUSB device.
Using USB Device Tree Viewer 3.6, problem code CM_PROB_FAILED_START appears to be the primary issue.
----------------- Device Qualifier Descriptor -----------------
Error : ERROR_GEN_FAILURE
-------------------- String Descriptors -------------------
String descriptors are not available (because the device has problem code CM_PROB_FAILED_START)
Notably, the device qualifier exists in the firmware and is properly displayed when utilizing libusb0, but I've heard that it has been deprecated and am thus trying to get compatibility with WinUSB.
Are there any particular descriptor issues or other firmware requirements that are more strict in Windows 10 vs. Linux? Since the device is failing to even start, I'm guessing that the firmware is not properly set up for Windows specifically.
来源:https://stackoverflow.com/questions/57581061/issues-porting-libusb-usb-firmware-over-to-windows-10