Reputation: 413
I was able to compile my Linux device to a composite gadget.(Serial + Mass Storage)
When I plug this device on a Linux PC, The OS was able to detect and use both function. But when I plug it on Windows, it is just detected as a "Multifunction Composite Gadget" and I can't use it as neither a Mass Storage or a Serial Device.
How do I go about making this work in Windows. Is making a customized driver really essential for this task? If so, how is this accomplished the least "painful" way?
Upvotes: 0
Views: 1635
Reputation: 153
It seems as though Windows does not know to treat your device as a serial port or USB Mass storage device because your hardware and vendor IDs are not in its pre-defined tables of said IDs which automatically select the INF file for you. So you just need a simple INF file to tell Windows to treat your hardware as something it already knows how to deal with and use its prebuilt classes for communication.
Your best bet (and most painless way) to achieve this is to just modify an INF template for those device classes (serial port and mass storage device) and add in your Hardware/Vendor ID and other properties you may so desire/require. See here for the documentation from Microsoft about how they handle drivers. It describes the INF Models and acceptable (read: existing) names for each of the fields. As a reference for an MSP430 serial driver's INF generated using the TI USB Descriptor tool, see here and for a generic template that does a decent job for the CDC ACM drivers in Windows, see here.
Upvotes: 3