Re: USB firmware programming



Your device descriptor would need to look something like:

Device class 0
Device subclass 0
Device protocol 0


Then you'd have three interface descriptors:

(CDC Abstract Control)
Interface class 0x02
Interface subclass 0x02
Interface protocol 0xff
(CDC Data)
Interface class 0x0a
Interface subclass 0x00
Intterface protocol 0x00
(MSC - not values depend on your implementation)
Interface class 0x08
Interface subclass 0x06
Interface protocol 0x50


That should work, but on xp at least it doesn't. I've tried everything I
can think of, and it seems that if the DeviceClass is not 0x02 then the
RNDIS driver will fail to start.

If you change the DeviceClass to 0x02 then RNDIS starts but windows
doesn't try to load the mass storage driver.

If you then move your ms interface descriptor to be first, then mass
storage works but windows doesn't try to load the RNDIS driver.

So it seems that on XP your choice is RNDIS or mass storage, but not both.
I'd sure like to find a way to get around that (without writing a custom
driver).


.