Project X

Projects Add comments

Each time I start implementing a new USB class demo for my MyUSB project, it usually turns into a mini project in itself. For each class (such as Mass Storage, HID, CDC, etc.) there’s always a mountain of documentation to read, several swear-laden days of debugging and lots and lots of learning. Since I’ve started the MyUSB project it’s been over a year, and in that time I’ve become familiar with much more than just the USB standard — I’ve experimented with TCP/IP protocols including making my own basic TCP/IP stack from the ground up (RNDIS demo), I’ve learned how to write HID report protocols to create custom HID devices with all sorts of attributes (Mouse, Keyboard, Joystick demos), learned SCSI (Mass Storage), MIDI, PIMA (StillImage) and PWM Audio just to name a few. Looking back, I never expected such a simple sounding project to result in so many months of development and learning.

I’ve also become quite familiarized with Microsoft’s technique of throwing a new proprietary specification at any problem which they can’t easily solve with current standards. Actually, scratch that - they create new protocols and specifications for the sheer hell of it. Case in point the latest demo I’m working on, which makes use of “Microsoft OS Descriptors“. These are a complete abomination to the USB specification, “extending” the USB descriptors so that compatible functional IDs can be added to devices so that the host can use generic drivers for devices made by several vendors. Sound familiar? Yep, they’ve managed to re-implement the Class/Subclass/Protocol value fields of the standard descriptors, with the added “benefits” of being OS-tied and rather difficult to implement on both the host and device sides.

So far, this wonderful innovation has been used for only a (very) small handful of devices, most of which already have a defined Class/Subclass/Protocol codes which can be used instead, with the remainder being Microsoft proprietary classes. That’s fantastic - now the platform-agnostic USB has been extended to be completely OS dependant! If only Microsoft would implement the standard classes properly and completely rather than spending their days finding new tortures for me to code up, I’d be a much happier man.

All this brings me to the new demo I’m busy with as of today. While I won’t say what exactly it is at the moment (due to not being certain whether I will be able to finish it or not) I can say that it is a Vista-only innovation, but one of the few Microsoft innovations I do approve of. Well, the idea anyway, as the specification sucks harder than Epic Movie. Should I finish it I expect there will be a rather large interest from the home computer modder community in my project…

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in