Hi everybody!
I am working on MSC bulk only device that will run on ARM SAMD21 SOC (Adafruit Feather M0).
I use USB stack from Arduino, using pluggableUSB class. I've implemented MSC and SCSI layers.
All looks quite good in Linux. It is Full Speed, not High, but it works. I plug the device, drivers detect it and create block device, which I can mount as FAT32.
However this does not happen in Windows. I tried Win2008, Win7, Win10. All same.
Error is 10 CM_PROB_FAIL_START. I've reinstalled driver (standard USBSTOR.SYS) but it does not load. Windows detects the device as Mass Storage Device, but shows as invalid.
I've captured USB traffic in Linux using Wireshark while the USB device is passed into Windows VM.
I've captured USB traffic of my device and a working USB flash drive. The latter works.
Messages are pretty much identical to the point where USBMS protocol should kick in.
For the good drive Windows proceeds with GET MAX LUN and further. For my drive it does not.
Last request is "GET DESCRIPTOR Request CONFIGURATION" after that all conversations stop.
However it does this couple of times, starts from "GET DESCRIPTOR Request DEVICE", then GET DESCRIPTOR Request CONFIGURATION, then gets vendor strings.... but then it stops.
My descriptors look identical with the good drive's ones, except vendor/product/serial numbers.
One more difference, the good drive uses High speed, mine is Full speed.
But both are USB 2.0. I tried to set USB 1.10 in descriptor - does not help.
Please give me some hint how to please Windows.