This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

USB string descriptor nRF24LU1+

Hi,

I'm trying to prepare the firmware for a nRF24LU1+ in order to allow automatic driver installation on Windows.

Based on Microsoft documentation during device enumeration, the USB driver stack reads the compatible ID from the device. If the compatible ID is "WINUSB", Windows uses it as the device identifier and finds a match in the updated in-box Winusb.inf, and then loads Winusb.sys as the device's function driver.

On the device side, to identify a USB device as a WinUSB device, the device firmware must have Microsoft OS Descriptors. When a device is connected to the computer, the PC will request the string descriptor that is at index 0xEE. The device must define an OS string descriptor that is stored at string index 0xEE. If the descriptor is present, the driver stack assumes that the device contains one or more OS feature descriptors and the data that is required to retrieve those feature descriptors. In the extended compat ID OS feature descriptor. The compatibleID field of that section must specify "WINUSB" as the field value.

Is it possible to define this string at 0xEE and the required extended property by using functions provided by the nRF HAL or by starting from the bootloader project?

Thanks.

Parents Reply Children
  • Hi Kenneth,

    thanks for support and sorry for the multiple cases, this is the first USB attempt.

    We also found some example and after reading Microsoft documentation we found what 0xEE means and how Windows is expecting to get compatible ID. The link you provide probably is the final answer. I successfully develop a nRF24 firmware starting from your booltoader project that is correctly responding to Windows 0xEE request but the next step doesn't work. A quick look at the usb.c on link you provide looks very similar to what I implemented yesterday that problably needs some tune.

    Hoping to get a solution with that link...

    Best regards.

  • Hi,

    we've finally implemented USB descriptors on the device so it is recognized as a WINUSB compatible device when plugged into a Windows PC and driver is automatically provided by Microsoft.

    The example above from github implements that system on the nRF24LU1+ firmware.

Related