Soapbox: Microsoft, Make Windows 8 More Maker Friendly

This week’s Soapbox is a little different. At Maker Faire I got a chance to meet a lot of people that I’ve only known via mailing lists or their work; one of them was Paul Stoffregen from PJRC. He’s the designer and developer behind the Teensy, one of my favorite USB-based microcontroller development systems. While chatting with Paul he mentioned there’s something pretty big Microsoft could do for the maker community, especially now, as Microsoft is working on Windows 8. It’s a little insider-baseball, but anyone who has tried to install drivers on Windows 7 will know it’s not easy, more so if you’re doing something with USB or microcontrollers. It involves CDC. What’s CDC? CDC stands for “Communication Device Class” — it’s one of the default built-in USB interfaces provided by USB host drivers sitting on a computer. The fact that CDC is standardized means that you can plug any CDC devices into your Mac/Windows/Linux computer and they’ll know what to do. With Mac/Linux, they don’t even need a driver at all. For Windows, you don’t need a formal driver program but you do need an “INF” file — this is a little text description giving Windows a hint about the name and ID# of the CDC device you want to plug in. The CDC spec actually defines many types of communication devices. This conversation is specific to CDC’s “Abstract Control Model.”

The reason this is so important is that nearly all hobby microcontrollers with USB use the CDC standard to send serial data back and forth, and it allows microcontrollers to be backwards compatible — just like the Arduino Uno looks pretty much the same to a computer as the Duemilanove. Same with the new Leonardo.

The following is an overview from Paul, with notes from myself. Please post in the comments if you want to add more. And if you’re at Microsoft (there are tons of makers there!), please help us find the person who can make this happen.

The goal of this conversation is a high-quality user experience on Windows with CDC installation. For that to happen, someone within Microsoft, with the authority to add an INF which matches the USB class/subclass/protocol or a Microsoft-defined OS Descriptor, needs to understand this new developing trend towards CDC devices.

Recently the “Maker Community” has experienced tremendous growth. Driven by the culture of innovation and sharing, it has become an ecosystem that is giving rise to numerous independent hardware vendors (IHVs).

Windows currently has a poor initial user experience when installing these new hardware products. The vast majority are based on the USB Communications Class Abstract Control Model. Windows provides an “inbox” driver, but each IHV must provide an INF file to associate the driver with specific vendor and product IDs. Loading the INF file is an extra step with poor usability. By contrast, Mac OS X and Linux offer seamless installation, because those systems automatically load their drivers based on standard USB class/subclass/protocol ID numbers.

On Windows 8 Customer Preview, the typical user experience is even worse, due to new INF signature requirements.

There are two possible solutions:

  1. Windows could provide an INF to automatically load its inbox driver. The “Compatible ID” is “USBClass_02&SubClass_02&Prot_01”. This is the approach used by OS X and Linux.
  2. Microsoft could define an “OS Descriptor” for devices wishing to seamlessly associate with the inbox driver. OS Descriptors are documented here.

The specification from that page states in Appendix 1, “Microsoft reserves all other compatible and subcompatible ID values for future use. If you need an ID that is not on the current list, do not create one without prior approval from Microsoft.”

I would love to see Windows users gain the same seamless installation experience currently enjoyed on Mac OS X and Linux when using these devices. I would be happy to assist with either approach. I can answer questions, provide INF files, provide actual hardware devices, and/or assist with testing. Please contact me by email,, if I can be of any assistance.
— Paul Stoffregen

Unfortunately, there is a decade of not supporting driverless CDC in Windows. I’m sure there are reasons behind this, but the way that Mac and Linux handle CDC natively similar to HID is pretty nice. I asked a few people who are tinkering with the Windows 8 Release Preview to see what’s changed. Here’s one example of how the drivers are still handled: “Nvidia didn’t have drivers for my display, but I was able to reboot in ‘disable driver signing’ mode and install unsigned drivers instead. And when I re-rebooted, they stuck: Windows 8 appeared to actually be more lenient about driver signing than Windows 7 was, curiously enough.” So it’s a little better, but for makers doing work with microcontrollers, Mac and Linux are a better experience. If the maker movement was small, I would say it’s not in Microsoft’s best interest, but I can personally say having makers use your products can change an entire company. Just look at the Kinect — hackers and makers completely changed how Microsoft is selling and using one of their most important products. I’ve read that the new versions of Windows may not allow other operating system to run on the same hardware as Window 8 unless it’s a Microsoft OS. If that happens we’ll see more and more of an exodus to Linux and Macs. This CDC driver issue is another reason to consider a move as well. I’m hoping this gets the attention of the makers at Microsoft who want to embrace the engineering and hobbyist communities.

Here’s where we could use everyone’s help. Post in the comments to show you’re interested in this change in Windows 8, and if you’re at Microsoft, help us talk to the person and group who could make this happen. Windows 7 provides a poor user experience, especially when compared to Mac and Linux automatic installation. Windows 8 is even worse when the INF is unsigned, requiring a special reboot to allow the INF installation, even though it only associates with an inbox driver. It’s not too late — Windows 8 isn’t shipping. Thanks!

72 thoughts on “Soapbox: Microsoft, Make Windows 8 More Maker Friendly

  1. I think they are interested in these types of compatibility issues, here is an older “Building Windows 8” blog post on the matter,

    When Microsoft started the blog they said they wanted feedback and provided @BuildWindows8 for feedback. I tweeted this blogs URL there, if others do as well it may bubble up to someone with visibility to take action or understand the need better.

    1. Interesting read. It seems like they focused on being compatible with 1000 selected devices for development. Maybe we should send them an Arduino Uno ?

      1. At 60 I am very disappointed in Microsoft I had windows 7 then up graded to 8. Nothing but trouble since, on both Lap top and PC. I have UNO and 2560 Mega I have just started getting into Electronic as a hobby but neither of my two modules does windows like so it was a waste of time upgrading to 8 and buying UNO and Mega. This being send from my I-pad ?

  2. I work at Microsoft and am also a fan of the Teensy, we are using it in our robotics prototyping. I’ve forwarded the blog posting to people I know working on USB device support in Windows 8 and will get back to Paul directly with a response.

    Thanks for bringing the proposal to our attention.

    – Jay Beavers

  3. Seriously, your point shouldn’t be to make Windows more maker-friendly, but to make Makers more Linux friendly.
    There’s so much more that can be done with an open system; Microsoft’s policy will always be about controlling the user, not enabling them.

    1. Hear, hear. Why on Earth would a maker ever use WIndows or MacOS? Giving money to Microsoft or Apple just encourages them to keep doing what they do, which is control our lives by controlling the gadgets and software we use to live them. Free software isn’t just about cost–it’s about the freedom to tinker, which is what we’re all about. I for one have not allowed a Microsoft or Apple product in my house since 1995, and I’ve never missed them for a moment.

      1. Hang on a second… Why on earth would one maker repudiate another maker for using a system he/she is familiar with? I for one use what I am familiar with, because it allows me to work on my project instead of spending my time trying to compile and build tools and find all the dependencies just to be able to work on my project! Linux is great, don’t get me wrong, but I use windows because it ‘works’ for me. I also use Linux for certain things too, but when I want to just sit down and work on my project, it is easier to have a tool that just ‘works’, and I don’t have to edit three config files, check my dependencies and build a binary from source to get it to work before I can even start writing any code for my micro! So it works both ways: Linux could be made more ‘Maker’ and ‘Everyday User’ friendly, and that would go a VERY long way towards making Makers and Average users more Linux friendly, and then everybody wins!

        1. Of course every one can use the OS that wants, the thing is that when you use windows you loose freedom(in the sence of transparency and control over the tool). So I agree with maker there is more need of linux or other opensource OS for making than the oposite, but of course every one can put the effort to write an article that they consider important or interesting.

    2. @maker and @lee – not everyone has the luxury of choosing what OS they can use all the time (work, school, etc). this article is to raise awareness of an issue that can be addressed by the folks at microsoft if they want to make their experience better, it’s really up to them.

      i think after the recent interaction with the open source community and kinect microsoft will be very interested in considering this.

    3. I must respectfully disagree, not so much with the unhelpful Windows vs Linux rhetoric, but on this “make Makers more Linux friendly” concept.

      Machines can and should be adapted to work better with people, not the other way around.

      1. Couldn’t agree more, so long as the adaptation of machines is towards people, generally, and not “average people.”

      2. Indeed. I love my Linux rig — it gives me control of every little thing. But not everybody wants (or needs) that kind of control. They have big ideas that they wanna get done, and they just want something that works.

      3. Paul this has been apple way of life from day one.
        To make the OS, hardware and software more user friendly.
        To this day the only device I have that did not work right out of the box.
        is a cheap camera that was a give away.
        Everything other than that cam has worked as soon as I plugged it in.
        Even a purpose built joystick controller for a volcano vascular imaging
        Communicating with all my arduino boards from the first one to my Mega 2600 V3
        The only time I use windows is for work and to communicate with an older weather station that the software was only written in windows DOS.
        But I plan on trying using a wine bottle to see if I can get rid of the one and only windows box I have that is a pain to keep running.

        Now with that said I will agree that you should use what ever OS you are comfortable with.
        I will be astonished if MS will change a business strategy for the hacker community
        since the profit margins for doing so will be almost nonexistent.
        MS has never been about the user it has always been about the $$$$
        They have bent the user and industry to the machine and to the OS.

        People are waking up and more importantly so are the corps.

  4. I always wondered why Microsoft didn’t make the USB support in Windows as plug and play as possible. Like you said there must be a mysterious reason we mere mortals just can’t grasp. I fully support your demand for more driverless functionality !

  5. I’ve made my living writing MS apps for almost as long as this type of Windows driver has existed, and installation/troubleshooting has always been a pain. Have you ever talked to a (non-MS) dev who has had to write a Windows driver? Not a pleasant experience. Things have improved, but that’s essentially saying “it’s better than it was in Windows 95”. I agree 110% with your points and wholeheartedly endorse your request.

  6. Please do appeal to chipmakers, ADA & IDE-makers , i.e. Atmel, for better support in Linux and OSX to.
    Most of theire and open source tools to lacks decent graphical userinterfaces in Linux and OSX (except from Eagle).

    Let me get rid of Windows at all.
    Tried M$Windows often since Windows 3.1, but It does not appeal to me any more. In my case XP hosts some Windows only tools and survives in a box (VM) for now.

  7. I believe its not only fair for Windows users to have a poor user experience but is needed. Otherwise, we have nothing to be jealous about when we try out our friend’s Mac. Also, if you never experience a poor user experience, you’ll never know what a good experience is. Thank you Microsoft for understanding this. By the way, my next PC will be a Mac. They’re so much easier to use.

  8. You now have to reboot to install an unsigned driver? Microsoft, when are you EVER going to figure out that rebooting a computer is a ~WASTE OF TIME~ and you should avoid it unless absolutely inevitable (i.e. the kernel has been patched and needs to be reloaded). This includes updates too. I’m not going to reboot the computer every 5 minutes. You should have to reboot at MOST once per week, including while installing new hardware and updates. GET THAT IN YOUR HEAD!

  9. We have developed a complete HID serial emulation Arduino core for the ATMega32U4, because we were tired of the driver installation problems, specially in the schools where our DuinoBot boards are used. The core and its sources are deployed with the last version of the free Minibloq environment ( The HID bootloader has been developed too and will be published soon (with the next DuinoBot production batch, since the current one is still CDC). It not only reduced the installation problems, but also nearly eliminates the virtual port losts by Windows, which is a common problem when a CDC Mega32U4 resets (shutting down for a while the integrated USB controller).

  10. Easier CDC support on Windows would be excellent. The key point, as others have stated, is that unexpected uses of one’s products is often where breakthroughs come from. If MS makes as easy as possible for a LOT of other minds to find new uses of their products, they will benefit substantially.

Comments are closed.


current: @adafruit - previous: MAKE, popular science, hackaday, engadget, fallon, braincraft ... howtoons, 2600...

View more articles by Phillip Torrone