Skip to content
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

CDC with MSC on Windows #25

Closed
dhalbert opened this issue Sep 11, 2017 · 3 comments
Closed

CDC with MSC on Windows #25

dhalbert opened this issue Sep 11, 2017 · 3 comments

Comments

@dhalbert
Copy link
Collaborator

@mmoskal Hi, I'm debugging some issues with the Adafruit board drivers on Windows 7 and UF2. For some people, installing the drivers prevents the UF2 MSC xBOOT drives from appearing when the bootloader is enabled. For other people (e.g., @ladyada) they still see the xBOOT drives even with the drivers installed. I've duplicated the problem on a fresh Win7 installation, but it doesn't show up completely consistently.

The README.md says using CDC and MSC together could be an issue:

... On Windows, if you have drivers installed for the USB ID chosen, then CDC might work and MSC will not work; otherwise, if you have no drivers, MSC will work, and CDC will work on Windows 10 only. Thus, it's best to set the USB ID to one for which there are no drivers.

When the drives don't appear, I notice that the composite USB device does not show up, only the CDC device (using Device Manager or http://www.uwe-sieber.de/usbtreeview_e.html to check this). I though this might be due to &MI=0 present or missing for the particular USB PID in the driver .inf file, but that doesn't seem to be it.

Could you expand on your comment above? Do you know the cause of the issue with respect to the drivers? Thanks!

@mmoskal
Copy link
Member

mmoskal commented Sep 13, 2017

Unfortunately, I'm not much of a Windows driver expert. I thought things were working, as reported by @ladyada, but it seems they might not. It's clearly possible to make it all work, as evidenced by ARM MBED drivers, which support both MSC and CDC (and HID), but I'm not quite sure how.

@ladyada
Copy link
Collaborator

ladyada commented Sep 13, 2017

it does work but only if you do a golden path install. deviations dont work. we're not sure whts up but somehow it seems (i think) that the win7 os attaches the CDC driver to the MSC endpoints!

@dhalbert
Copy link
Collaborator Author

dhalbert commented Oct 7, 2017

We fixed this by always specifying MI in the device descriptors in the .inf file. See adafruit/Adafruit_Windows_Drivers#5.
So now we have entries like

"%METRO_M0_EXPRESS% (0013:00)"=DriverInstall, USB\VID_239A&PID_0013&MI_00
"%METRO_M0_EXPRESS% (8013:00)"=DriverInstall, USB\VID_239A&PID_8013&MI_00
"%METRO_M0_EXPRESS% (8014:00)"=DriverInstall, USB\VID_239A&PID_8014&MI_00

Previously, for some drivers, we only had something like:
USB\VID_239A&PID_0013
Composite devices that did not specify MI=00 were being installed and then were hiding and/or confusing the multiple interfaces presented by the devices. So for instance, the MSC device for UF2 was not appearing.

@dhalbert dhalbert closed this as completed Oct 7, 2017
tannewt pushed a commit to tannewt/uf2-samd that referenced this issue Sep 6, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants