-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
missing vendor, product strings on windows 10. #24
Comments
Do not ignore devices without product string, still try to check whether they have an interface with "CMSIS-DAP" in the name. It seems the root cause is a `nusb` issue (kevinmehall/nusb#24), which makes `product_string()` always return None on Windows. Even when that's fixed, I still think it's good to not bail out if there's no product string, it can help with compatibility with weird probes.
Related: #22 (comment) Yeah, I recently discovered that the device properties As far as I can tell, Windows isn't reading these string descriptors at enumeration time, so if we want to retain the property that Note that You can try out the I am hopeful that there is a non-blocking way to get the serial string (with correct casing) on Windows, so if that works out, that one can stay. A lot of use cases locate a device by VID + PID + Serial, so that is nice to have when listing devices. |
#27 fixes the product string, seems Windows does cache it.
It'd be helpful if there was a built-in way to do "just give me the manufacturer string, do IO if needed". If you tell the user "to be cross-platform, |
Do you have a concrete use case for manufacturer string? I'm inclined to change (and document) I want to fix this for the sake of completeness, but now that you've fixed the product string, manufacturer seems like the least useful of the three device strings, so may not be a priority right now. I'd assume that I get your point that if you want the value, you want it the most efficient way if possible, but otherwise you want to do what it takes to get it. I'd accept a PR adding |
not really, no. so no objection to always returning None from me 👍 |
version: bump to 0.3.0
There's something strange going on with vendor/product strings on Windows.
Example 1: with a picoprobe, running the
list
example on Linux gives:on Windows:
No product string, manufacturer string is wrong, driver is wrong.
it's a composite device, and it applies the winusb descriptor to one function only, because it has another function which is standard CDC-ACM and it wants windows to use the standard cdc-acm driver for it so it shows up as a COM port.
Example 2: I'm writing a debug probe firmware from scratch. I have both a bootloader and an application firmware.
The bootloader puts the winusb descriptors on the entire device . It shows up as this:
Product and driver are fine, manufacturer is still wrong.
The application is composite, and puts the winusb descriptors on the function (because I'll likely add CDC-ACM in the future too), and shows up the same as picoprobe: wrong manufacturer, product string, driver.
So it seems something about composite devices is strange that confuses
nusb
? seems Windows treats them almost like separate devices. For the non-composite case, however, themanufacturer_string
is still wrong.also interesting: For the
eprobe
bootloader, Device Manager does show the product string as the device name. However, forpicoprobe
andeprobe
application, it shows the interface string instead!The text was updated successfully, but these errors were encountered: