WCID is a Windows-only mechanism for automatic driver assignment for USB devices.
The minimal solution consists of
A special string descriptor at index 0xEE
A "Compatible ID" Feature Descriptor that describes the driver type wanted ("WinUSB" is the driver name)
If Windows sees a device manifesting this, it assigns the relevant driver type to it.
The result is that the device can be accessed out of the box (by utilities such as dfu-util). Zadig (for manual installation of driver) is no longer needed to obtain working order.
My setup:
Flash usage with DFU_WCID: 4284
Flash usage without DFU_WCID: 4120
Note 1. WINUSB is always assumed simply because it's the default Windows driver and I think it covers all cases; dfu-util supports thisNote 2. "Vendor Code " is a byte value that theoretically must match bRequest in the control transfer and is set by a byte in the EE string descriptor. Described here. This is kept at 0 and ignored since it has no significance.
WCID is a Windows-only mechanism for automatic driver assignment for USB devices.
The minimal solution consists of
If Windows sees a device manifesting this, it assigns the relevant driver type to it.
The result is that the device can be accessed out of the box (by utilities such as dfu-util). Zadig (for manual installation of driver) is no longer needed to obtain working order.
My setup: Flash usage with DFU_WCID: 4284 Flash usage without DFU_WCID: 4120
Note 1.
WINUSB
is always assumed simply because it's the default Windows driver and I think it covers all cases; dfu-util supports this Note 2. "Vendor Code " is a byte value that theoretically must matchbRequest
in the control transfer and is set by a byte in the EE string descriptor. Described here. This is kept at 0 and ignored since it has no significance.Further description at https://github.com/pbatard/libwdi/wiki/WCID-Devices
Implementation inspired from https://github.com/devanlai/dapboot/blob/01730698e2228605f36d5c77e61e67ea715690c1/src/winusb.c