This is of course not strictly a hobby electronics feature request, but deals with how a lot of USB devices are treated by the upcoming operating system. Specifically the Communications Device Class, which is a protocol used by most hobby projects (and boards like the Arduino) that take advantage of the Universal Serial Bus. The way communications are handled by OSX and Linux makes this a snap, but not with Windows 7. [Phil] post specifics about how the former two operating systems handle these communications, and how Windows 8 could be tweaked to fall in line with them.

It means not installing drivers. Drivers…. for a USB device. Think about that for a while and then ask yourself which decade Windows 8 is being developed in. Thanks for pointing this out [PT]. We often get spoiled using a Linux box and don’t realize the hassles sometimes found on other systems.

I have no problem with Microsoft making money. I’m not necessarily a linux fanboy, nor am I a redneck who’ll get in fist fight over Ford vs Chevy. Different operating systems serve different purposes. The question is what am I getting for my money? Let me give you an example:

I bought a new computer. It came with Win 7. I set it up to dual boot Linux. Great. Everything worked fine.

I’m not a real big fan of touch pads, I prefer a mouse. So I buy a Microsoft USB optical mouse. I boot under Linux and plug in the mouse…no problems…

I boot under Microsoft Win7 and plug in the same mouse… a MICROSOFT mouse mind you, and Win7 forces me to connect to the web to download a driver! What? Win7 has the greater footprint, so if MS can’t even include a stinking mouse driver in its base install, what’s all that disk space being used for?

I pretty much stopped using Win7 after that. One day, however, I decided to boot back into it, I forget exactly why. Big mistake…Windows’ boot crashes. Fine, screw it… I’ll just go back to Linux…whoa! Now that doesn’t work either. The entire Linux partition is now GONE.

So let me summarize. The operating system I PAID for, this “productivity software,” as Microsoft likes to call it, is so immature that it fails to recognize a MICROSOFT mouse, it’s so buggy it crashes for no apparent reason, and so hostile toward paying customers that it’s empowered to delete partitions containing competing operating systems… along with MY data. Customer satisfaction? Epic FAIL.

I believe strongly in free enterprise. I don’t begrudge Microsoft making a buck on a decent product or service.

I do take issue when they sell buggy alphas as finished software, with absurd licensing stipulations, and employ strategies that intentionally screw paying customers in a failed attempt to prevent the spread of competing (particularly free) operating systems.

When I occasionally write Micro$oft with the “$” sign– it’s not because of the hundreds of dollars I’ve spent paying for legitimate Windows licenses. I’m fine with that. The dollar sign stands for the thousands of man-hours of lost work and labor wasted restoring corrupted data and fixing Win OS problems that should never have occurred in the first place.

People who invest millions of dollars into a demanded product and try to at least cover their investment are greedy..

Make everything free and have government funding for everything.. It’s kewl, and even though I barely achieved a basic education I know this works better..

MS doesn’t care about usability and flexibility I guess that’s why they dominate the markets and compromise security out of the box for the sake of a few less prompts.. drastically at their own expense..

@Ohms Law:
Great write up of an answer. I agree 100%. That said, you mentioned that you “paid for” Windows 7 and you are tired of their agreements, etc. That is a BIG problem I have with corporations in general. I.E: buy a dvd. They false advertise by saying “own” your movie today! in TV commercials when you don’t “own” it at all. The concept of ownership means that you can do anything with your property, which is not the case for a movie.

Same goes with software, where you don’t OWN anything, you are “licensing” the right to use it, yet they insist on advertising BUY such and such. A more appropriate word to use would be RENT, but they wouldn’t want to attract the view of the majority if they did by pointing out the real rights you have when you hand them your money.

It will undoubtedly hurt a lot of people in the short term, but in the long term everyone is better off if Microsoft shows it’s true color.

Microsoft is like an abusive spouse, you may gain something if it stops beating you or even starts doing you a few favors – not to mention all the gifts it buys you with and that you may depend on it for food, but deep inside it will always be an abusive spouse and the sooner you get the hell out of there the better.

Stopping the beating will only make people more lax about running away from it, until one day it is too late and they’re all trapped. It already is too late for many things (see example: office formats). Many people are already trapped.

jordaanm’s point, which everyone seemed to miss, is that abbreviating Microsoft as M$ is like calling democrats demoncrats or republicans republicunts. It’s the kind of jab third graders use on the playground, and it contributes absolutely nothing to the discussion besides poisoning the well and precluding reasoned, civil discussion.

There are reasons that Microsoft does things the way it does. We could discuss them, or we could masturbate over how superior we are for using Linux. Which shall it be?

well yes it’s connected to the internet, but aren’t most computers? Potentially risky, although I’ve never heard of getting a virus that way, and haven’t had any personal problems.
Even if there’s no need for USB drivers, I will still continue to auto download drivers for everything else for the convenience, even with the risks.

You probably had an older Arduino with an FTDI chip. Windows has access to FTDI drivers, either included with the OS or accessed through the online update feature. FTDI does not use the USB CDC standard. The newer Arduino UNO devices use a microcontroller with CDC implemented, instead of the FTDI chip. Those require an INF to be installed in order for Windows to recognize it as a CDC.

So you have a situation where a single vendor’s proprietary solution is recognized and handled by Windows, in a more transparent and user friendly way than an actual USB standard. Imagine if you had to install a special file every time you replaced an ordinary USB mouse or keyboard. Windows actually supports those protocols correctly, so you don’t need to do anything, but that’s exactly the situation with CDC.

On Linux or OSX you plug in any CDC device and it’s immediately available.

That face when I have a computer that I have never used to program any IC of any sort that has INF drivers installed. For some reason, I also have IIS on this computer that is defiantly not a web server.

Actually INF files are not actually drivers. They are driver information files, similar to termcap and printer definition files in linux and unix. INF contain parameters to add info to the registry that associates a drive with a hardware identifier reported by plug and play devices.

What I find odd about Windows’ use of INFs is that often the MS PnP require an inf for mass storage devices such as thumb drives which use the same driver and identify themselves as such.

Microsoft makes no assumptions that the user understands or even cares about the difference between an inf and a driver.

That is why I stay with my good n’ old n’ trusty *NIX systems. I have Linux and BSD machines in my home.

But, “fanboyness” appart I feel a lack of gaming support in these systems. I also miss good speech recognition and synthesis in most *NIX systems (festival is the only good thing I’ve found). Another thing that I feel lack is Ham Radio support. Most large-scale consumer SDRs have their software strictly for Windows. And finally I hate the fact that I have to use my brothers computer (which runs Windows) just to copy music to my $$Apple$$iPod$$. That’s why I’m planning to build an M$ Windows machine just for these kind things.

Now in the other hand we have M$ Windows. In the starting of 2011 my HD with Linux just stopped working. The machine that it was in was also an old machine (2003), so I just stored it on the closet until I find a solution (I eventually fixed it and now it is my server machine). I bought new parts, very good brand new computer parts (core i3, RAM 4GB, HD 500GB, GPU 8400GS…). Then I installed M$ Windows 7 just to give it a try. And for my surprise it was kinda of a good OS. For the first time in life I had an Windows machine. For some time it was good, I could play my favorite games, use my iPod, etc. But I missed the command line, the coding support, the non-need for antivirus software, the endless possibilities of hacking of *NIX systems. Windows’ CMD is, let’s say, bull***t, when compared to bash.
Coding in Windows is a very hard task. And you will be always bothered by viruses or by the fear of having them in your computer. And many other things.
That’s why I changed back to *NIX. But now I feel a lack of that Windows features I talked before.
@_@ Damn it.

So my final word is buy an iMac have a Windows machine and a *NIX machine, or use dual boot.
Oh, and sorry for my long speech.

Have you tried Powershell? A few people I know have complained about CMD being out of date but don’t know about powershell. Seems like someone at microsoft had the great idea of basically implementing the *nix prompt with all the *nix commands and windows commands linked to the same things, so you can easily just jump from linux.

Yes, I tried powershell, and it was pretty good. But, no make, no vim, no /dev…sad. Before switching back to *NIX I tried to still using Windows with Linux in a virtual machine, but I could not get used to it.

But the APIs and options… they make my eyes bleeeed. The freaking help is so bad – it’s like someone decided to write zen koans instead of provide useful examples. A few powershell commands avoid this, but those are all just microsoft executables that have been around since XP.

But I guess I’m grateful that they got almost 90% of the OS to be accessible by scripting. It has made my life easier, even if I have to write batch files and .vbs to keep it all going at times.

I have tried powershell. As with VBscript before it, Microsoft simply doesn’t get the whole concept of scripting.
I once had to rewrite a vbscript program into perl when implementing a GIS related app on a unix system.
A 200 line block of vbscript code that translated an arcane hexidecimal waypoint format to standard decimal degrees pairs took only 6 lines of perl code.

I like to be able to throw a script together quickly to address a problem at hand, rather that type tons of code to achieve simple results. The real value in the command line is in this.

Admittedly, part of the problem is in Microsoft’s interfacing standards. The MS concept of security focuses on hiding the “business” logic of an application, and favors a complex object oriented apis into compiled apps, while the ‘nix philosophy embraces the idea of script-able apps and small tools, where even graphics oriented programs can have some functionality without using a gui.

If one is familiar with vbscrip, they would be better off to code in VB.net and use the command line compiler.

I think a must have is OSX (on a mac or not, if you pay the os, why pay the computer?) with VM for windows and a linux OS (ArchLinux for me). I don’t know if one is better but i’m lost in windows architectur i think UNIX is easier to custom and access to components.

I agree with this. Unless your device implements a console that accepts commands in ASCII or similar then you’ll likely need to write a dedicated piece of software to communicate with it anyway, at which point using HID feature reports is easier to work with for both the programmer and the end-user (no faffing around picking the correct serial port number, and it also avoids the mentioned driver issue).

“We often get spoiled using a Linux box and don’t realize the hassles sometimes found on other systems.”

Linux is a dream to work with, I don’t know why I kept using Windows for so lon- wait a sec, I’ll finish my post in a bit. Sorry, I need to go trawling the Internet for the exact address to add to my repository list, since I can’t play half of the media in my collection. But wait, I can’t connect to the Internet, it didn’t detect my Wi-Fi chipset! Well, darn, now I’ve got to find a LAN cable and connect a hard line to my router so that I can get online. Oh, wait, the desktop environment is all laggy for some reason, it looks like I need to go download the NVidia binary drivers and rebuild my kernel…

Sorry, what was I saying? Oh, right – Windows is such a drag, I can’t imagine why anyone would want to use it!

Try debian. You should download a DVD image and install from that. I also hate the bloat in current linux distributions, and I hate grabbing data from slow repositories.

Linux has some structural problems at the moment – the people calling the shots are trying to make it ready for future supercomputers, and it’s making it very hard for those of us for whom it just works.

It can be frustrating even for the experts, but I’d rather run linux than anything past XP.

Yep. Drivers on Linux are a bitch.
I spent literally months trying to get a HP printer playing nicely with CUPS.
Partially due to slackware (get part way through a build only for it to fail ‘cos dependencies were missing), partially because it was building on a bifferboard (roughly equivalent to a P90 with no FPU = s…l…o…w) and mainly down to the fact that HP, in their infinite wisdom, decided to give no clues as to what switches need to be set to for that particular printer. The link that purported to give you that information just sent you back to the same page (?!).
In the end I had to just use trial and error to get it to work. I must have had to build it a hundred times (no shit) with different settings, each build taking about 12 hours, until it worked.
Since then I’ve tried to get a couple of other devices connected (scanner of same printer, voip phone, usb camera) but decided my sanity was in danger so gave up. I now leave well alone.

I just spend sometime checking if the hardware is supported before buying it. That means I usually have no problem at all. But when these things happen to other people and I have o help them then I feel the same despair.

@Erik,
That is kind of hard for a Luddite/bottom feeder like me, I mean, a bunch of stuff I’ve acquired at second hand stores, i.e. no manuals, sometimes no cables or power supply. Being a bottom feeder, I don’t use the Internet capabilities on my cell phone to check right away because of the data fees of my wireless company (not to drop names, but it is spelled something like Veri$on Wirele$$) charges.

I thought this was a hacker’s website, consider this a challenge, I’m sure once Win8 is out someone will write a driver in a week. Besides Microsoft is Microsoft, they don’t have to give a **** about users because there are just so many of them.

There are so many of them, as it is has always been the easiest to install and use. M$ gives loads of money away each year. Bill Gates came up with the idea to give away billions of dollars to people, and got loads of other billionares signed up to that same program… I dont mind supporting that!

@Larry…
Setting up a large benevolent foundation and using it to shed taxes and funnel money into smaller wholly owned multinational companies is just good business practice. Scratch a little deeper. I wish I was .000000001 as good at the game as these guys are.

uh, where did they get those billions they are “giving away?” It’s sad/pathetic/amazing the business models followed by those companies, where the idea is not to sell a product, but build dependency. The weirdest thing is how the poorest countries on earth happen to be also the most M$ dependent – and not because of software donations.
They do pay full price for licenses. I simply don’t understand it… (of course, that has NOTHING to do with the poorest countries often being the most corrupt, no, not at all) Yes, M$ does donate software, to schools – valid for one year. THEN, they carefully monitor how many stations are installed, and bill their Ed Departments for the “renewals”. Can you say “clever”? (we had so much fun liberating computers in Bolivia! Of course, the hardest to convince are Universities, and the Teacher Unions)

Since most PC have Windows pre installed, the majority of pc users have no idea of how difficult and buggy windows installations are.

And since new iterations of the OS usually require a new pc, most use upgrading as an excuse to buy a new box.

I had to reinstall windows xp on a computer when , after it reformatted the drive and chugged along for over an hour, on a quad core processor, It suddenly choked because it was unable to recognize a dll that was right where it was supposed to be.
Newer versions of Windows will not recognize older hardware, and the 64 bit versions of windows 7 has incompatibilities not found in the 32 bit version.

I’m with ya Larry. I suppose Oliver gives to Flying Spaghetti Monster. Guess how many kids linux saved last year? I suppose that one that didn’t fall into a hole using his OLPC as a flashlight is one, but still…

Oliver, care to provide any kind of info for that or are ya just hatin’?
You seem fairly angry at something.

I can understand Microsofts stance on this. The CDC driver system isn’t a complete solution.

When I plug in a USB flash disk, it loads up a driver, shows up in windows explorer and I can use it.

When I plug in a mouse, again I can use it.

When I plug in a printer, I can use it through any printing app.

Under this proposal, when I plug in a CDC arduino, I still can’t use it. A virtual COM port isn’t a user solution. It needs specific software to use it, and that software is hardware specific.

The real solution is to allow non-admin loading of the Microsoft provided driver *at the request of a user app*. That way, the arduino IDE can load the driver if it needs it, but additionally a different driver could be loaded if we were using some other unregistered CDC device, which wanted different software.

“Drivers…. for a USB device.” Yup, every device needs drivers or it doesn’t work.

The difference is in what *type* of driver. The USB driver model is essentially the same as what was used for the first removable device standard, PCMCIA.

Back in ye olde DOS days, PCMCIA had three branches to its driver tree. First was Card and Socket Services, which provided the software interface to the controller.

Second was the class driver. A class driver supported many different devices of the same type. If you were using RAM cards you loaded the RAM card class driver.

Third was the point driver. A point driver supported a single device, or possibly a small number of similar devices from the same manufacturer.

Loading C&S Services, a class driver or two and some point drivers in DOS took up a lot of memory, even when much of it could be shoehorned into high RAM space.

Windows 95 made it much easier, as long as there were 32bit Windows drivers available for all your cards.

USB’s driver structure is similar in that it has class drivers like Mass Storage and HID. A USB device that needs to do things not already covered by an existing class needs its own unique driver, which could still be called a point driver, with the USB controller driver taking the place of Card and Socket Services.

One solution is to figure out how to shoehorn its needs into an already available device class.

Another solution is to back port the class drivers from a newer version of Windows. That’s been done for Windows 98SE by “Maximus Decim” who created an installer with the Windows ME USB drivers. Originally it was to provide the USB Mass Storage class to 98SE so users could do away with needing a pile of unique drivers for every individual USB stick and removable drive.

The setup has grown to include many USB device classes that were not originally available in 98SE.

Linux has both kernel and user space drivers. A typical linux install will have lots and lots of recent driver information loaded up at boot time, by default. As the hardware is probed, it grabs whatever seems useful and throws it in.

This means that apart from interfaces that vary a great deal from the standards, everything will work. Exceptions to this are devices that either accidentally or on purpose break these standards.

If a manufacturer revamps a chipset or moves everything around without a legacy mode, you may have to wait a while for the linux kernel or driver support for a few months.

When you plug in any USB device using CDC ACM protocol, such as any current Arduino board, Linux automatically loads its built-in driver. It does this automatically.

On Linux, serial ports appear as specific /dev/ttyXYZ# names, similar to how they appear as COM# on Windows. A new one is automatically created. If you’re using a program which works with serial ports, like the Arduino IDE, it will show you a list of all the ones on your system. On Windows, that list is all the COM# ports. On Linux, it’s all the /dev/ttyXYZ# files.

Likewise, on Macs the same happens. The driver is built in to the operating system and automatically loads when you plug in the device.

Microsoft actually has the driver built in to all versions of Windows, at least since Windows 2000, maybe even in Windows 98SE? But unlike Linux and Mac, Windows will not load its own driver by default. You need to “install a driver”, which is really just a small text file with INF extension, which tells Windows to use its own driver when this device is plugged in.

Think of how Windows works when you plug in a new USB mouse. It’s automatically detected and just works. Well, for these CDC ACM devices, like Arduino, that’s exactly what happens on Mac and Linux. But on Windows, you have to “install a driver”, even though it’s not actually any actual driver code, just a little special text file that tells Windows to use its built-in driver.

Microsoft already automatically loads their own drivers for HID (keyboard, mouse, etc) and mass storage (disks, cdrom, etc) and several other types of devices. They’ve just always overlooked this particular type.

Perhaps they felt CDC ACM wasn’t important, or that emulating serial is “legacy” technology. But with low cost microcontrollers offering built-in USB ports, there’s a huge shift away from chips like FTDI to firmware USB implementation, and many are using CDC ACM.

It’s finally time for Microsoft to just take notice and make their own driver load automatically.

of course most of you dont know this,because you are too busy remembering thousands of commands for you *NIX system. well anyways there is something called winusb,where you can access USB in usermode without having the need to write a kernel usb driver. its incredibly quick and easy. i use winusb when communicating with my microcontrollers. the only limitation is isochronous endpoints not supported.

from msdn
“Windows USB (WinUSB) is a generic driver for USB devices that was developed concurrently with the Windows Driver Frameworks (WDF) for Windows XP with SP2. The WinUSB architecture consists of a kernel-mode driver (Winusb.sys) and a user-mode dynamic link library (Winusb.dll) that exposes WinUSB functions. By using these functions, you can manage USB devices with user-mode software.”

I actually misread and looked at the icons and thought this was for windows phone 7. Mobile phones actually make more sense since they have all the connectivity and are with you pretty much everywhere you go. On the desktop machine you can now use pretty much every os you want.
For all of you complaining about Win 7, a Virtual Machine will receive all the USB requests if set up correctly (only one click) and you can use XP or Linux or whatever to do that. It is safer anyway and you only need to buy more cheap RAM.

To say my rant as well, bought an overpowered WP7 phone which now sits unused because I’ve replaced it with a 5 times cheaper and slower Android phone, but which does what I tell it to. WP7 sucks at customization, WM was much better in this regard.

Windows was designed to try and run any and all code it encountered. It even checked to see if things specifically marked as data would execute.

Microsoft’s choice to make that one design decision almost single handedly made the antivirus industry what it is today.

More recent versions have added a dialog and some screen glitches to add a TSA-like inspection process to make it harder to do this casually, provided the software isn’t a virus, rootkit or trojan. If it is, it will go ahead and load it anyway.

The next step will be an itunes style registry and check-in process, so that you can only run MS approved binaries on your platform. It won’t stop exploits, but it will make it harder for a random software developer to make his program run on any system.

The complaints about windows security have nothing to do with hardware installation. Linux also has many potential security problems, so it isn’t just bashing.

I guess some of the issues have to do with what can a hacker do, once he encounters M$, or Linux. With M$, naturally he will feel frustrated by how much he can do and hack (most of it being illegal), and, too often, if he cannot build, he will then try to break. With Linux, he’ll find he is /welcome/ to hack, so build he will!

Certainly, the original research on viruses was done on X machines… Yet, for one thing, the system is better built, for another, people get a chance to exercise their creativity in a constructive way, and also, a Linux user by definition has made at least one good choice in his life, so likely will be a bit more careful about downloading and running less-safe code.

For the record, one of my Maker mentors and person-I-would-want-to-be-like-when-I-grow-up is 100% Windows, so I know that it is physically possible to be enormously intelligent and able, and still not go Linux. Since I am not as clever and able to do dangerous things as he is, I prefer the safer choice, and I stay with Linux (which makes it a pain to run his code, but hey, a price gotta be paid for the convenience of knowing my data is safe)

And incidentally windows8 is locked down top to bottom and not just for hackers but for anybody, they have decided to go nuts and deliberately remove any control by enthusiasts of all sorts.
In short it’s an attempt to become ‘apple2 – the evil twin’ from all signs I’ve heard about.

Oddly enough apple is very slowly moving in the opposite direction so far, although there are voices within apple management that are starting to murmur that that has to stop I’m told.

If you want to do USB access from user mode on Windows 7 and earlier, and you don’t want to install a driver (read: get a driver signed), then HID is probably your only option.

Windows (since XP) can use WinUSB for dealing with arbitrary USB device classes in user mode, but you’d still need an INF (and thus, getting that INF signed) in order for winusb.sys to bind to your device.

When a kid, say a twelve-year-old, get’s interested in hardware and programming and manages to save some money and get an Arduino (or whatever board) and has to do development on whatever PC is on hand at home (let’s face it, most parents do have Windows machines), it would be really nice for them to have it work on their machine out of the box. Ofcourse there’s something to say for being able to get things to work anyway from the start of your hacking career, but I can imagine that without someone you can ask things around, your brand new first devboard not working right away can present a kid with a lot of frustration and spoil the fun quite a bit…

+1, Jan
One of my recent adventures involved getting an MSP430 running in an OLPC green laptop, those silly things supposed to change the world through child hackers.
If, by simple dumb luck, I hadn’t had the older chip plugged in the Launchpad dev board, instead of the more recent one that comes pre-installed, the rig would not have worked, and I would have called TI a fail, and moved on. As it was, it opens great possibilities for ankle-biter-size hackers. (of course it would be bet it ran with either, and I am told the upcoming version will) anyway, just to agree that at least basic hacks /need/ to be simple to join. Later on, some will be able to get the hairy stuff done, and hopefully a few will even come back, and help to make it even easier for the next batch.

mmm makers loosing the control over the tools that they use? let´s remember that the point about free software/open source is that gives freedom to the users , is not about fanboyness or extremism, but important to don´t forget that the tools to make conditiones the creations and the makers.

In my opinion I don´t think there is such a real hacker, but i met awesome ones(specially in electronics) that were using windows, it´s a choice, what a doubt is that makes any sense to promote windows in the anglophone Make DIY scene.
(the alternatives are still there)

Boo fucking hoo. If you were a real hacker, your USB device would be a multifunction device, emulate a flash drive, with a autorun for the driver. Or you could just install a driver once. Stop crying and man up.

What surprises me most in all this is that modern “hackers” are such whiners. Yes, you need an .INF to use CDC or FTDI type devices on Windows. Windows 8 may require signing, or ask you to allow to use an unsigned file. Yes, Linux may occasionally not have a driver or kernel module for a specific device; peripheral-buyer beware.

The thing that shocks me is the amount of complaining done in here though.

In my career in desktop support, our company has moved from Windows XP to Windows 7. I manage more machines on a daily basis than when I started, and under Win7 it’s actually easier. We’re even able to upgrade user’s machines without re-installing the OS. We can just swap the hard drive into the new box, or at worst case have to sysprep it first.

At home, I still prefer Linux. Having used Slackware back in the 90’s, I can say it WAS very hard, but I accepted it wouldn’t be easy. Ubuntu 5.10 came along and I gave it a go. I loved it, but a LOT of things didn’t work. Now I am using 10.04 on my desktop and 12.04 on my netbook, and it’s very easy. Even my Brother printer/scanner worked after installing one package and running two commands to associate it with CUPS and create a TWAIN device.

Using a computer now, with Win7 or with a modern Linux is MUCH easier for a hacker than Win98 or early Slackware or very early Debian. Why aren’t we thankful for what we have? Oh right, because we have an instant-gratification society. Well guess what, friends, hacking does not deliver instant rewards. It involves work, testing, work, and more testing, and sometimes plug-and-pray.

Phillip makes a good point, and a valid plea. I hope his message will be heard. Those of you whining about how hard this is? Be thankful for what we have. (hops off soapbox)

“What surprises me most in all this is that modern “hackers” are such whiners.”

AMEN!

After reading all these comments, it amazes me the number of people who didn’t read and understand Philip’s article, or just prefer to fear-monger and slam Microsoft instead. Even Mike Szczys puts himself this group with the statement: “It means not installing drivers. Drivers…. for a USB device. Think about that for a while and then ask yourself which decade Windows 8 is being developed in.”

Seriously? Because even Philip’s article makes it clear that the software driver required to expose *any* USB CDC device as a serial port is included with Windows. Has been at least since Windows 2000.

All that is required is an INF file. This is nothing but a text file, used mainly to associate additional Windows-specific information with a device that isn’t included in the device’s limited USB descriptor; so that it can be properly and descriptively shown in Windows’ GUI. Other things are possible too, for example to declare that another software driver should be used; in case Window’s default driver doesn’t access all the functionality of a device.

The INF file is included and installed with the software needed to use the device anyway; because face it, most devices aren’t very useful if your only way of communicating with them is manually via a terminal program.

Windows 7 & 8 require a new, digitally signed and encrypted version of this file, to avoid the possibility of tampering; for example, to install malware masquerading as a hardware device. Which is a real issue, now that more vendors are relying on torrents as a software distribution mechanism. Major hardware manufacturers will be providing the new file with their software, so no special action is necessary.

What if your device doesn’t include the new file? Are you reasonably sure it’s safe? Are you are willing to take responsibility if it’s not? Windows will let you install it anyway, if you demonstrate you’re intelligent enough to make this decision (or at least have an IQ over 50). Google the command to turn off the security check, then reboot once. Then you can use the old, unsigned INF files to your heart’s content, forever.

Apparently, some here would fail this IQ check. Or prefer to stamp their feet at the very idea and cry “switch to Mac or Linux”, rather than solve a simple challenge that requires a five-minute, one-time solution; something anyone who deserves the hacker moniker would just do and get on with their life.

Could it be easier? Sure. At least from the Linux proponent’s standpoint. Which is unique and a bit distorted, because at only 1.6% of the desktop/laptop share, Linux avoids malware primarily by not being a worthwhile target. Nor does it have to deal with the larger (and dumber) user base that Windows does with 74.77%. Not to mention broader hardware/software support, pressure from the DMCA to validate hardware/OS through UEFI, etc.

I guarantee that if these numbers were reversed, Linux would take on the same attributes and flaws as Windows.

I must say that your post is salient – Understanding the purpose of an .inf file is important, but I suspect that many did not even read the article. Regardless of what camp they’re cheering for.

Of course, a title like “An appeal to Microsoft to consider the hackers” is going to bring out the angry trolls with baggage. I suppose I’m one of them, even though I use both OS types.

Now, had the post been titled “.INF files let you communicate with USB projects on Windows… for now.”, we’d only have had a dozen posts.

In fact, your reply – all the way up to “your heart’s content, forever.” is a far more salient summary of the article. It captures our attention, gives the Tl;dr summary we hope for and sticks to the facts.

You sort of run off the rails on the last three paragraphs, but excusably so in light of your summary.

My issue is the statement about users “stamping their feet” – at the heart of anyone’s hatred of an OS is ignorance and frustration. Both operating systems can provide it in spades due to half-assed implementations and a lack of decent documentation.

The fix takes 30 seconds. Finding it takes 3 weeks, or longer if the users give up. But bitching about it… well, bitching about it apparently takes a lifetime.

The article has a little more bite than you let on. “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.”

How exactly is it not easy ?, we’re taking about one sub class of one protocol. Plug it in, searches windows update or a download/disk comes with the device, if i want to run an IDE that is not automatically installed either i have to install that too. One INF file really?

HID generally doesn’t require any inf or driver support on any OS, use that if its a problem, do the research first.

I started hacking on a VIC20, but I fell in love with my 8086 running MS-DOS. Microsoft’s software has problems, but I like the company much better than Google or Apple these days. I think this little driver issue is a non issue.

For starters, USB is lame. I hate it as much as Bluetooth. The toys I tinker with are usually Ethernet or WiFi. Get with the times.

I backspaced out of a really nice rant so I’ll just sum it up with “this is pretty typical of HaD and its users”.

Thanks for helping us root out the sheep that still think M$ is funny somehow.

Both systems have their role: You use your windows box to download and burn the linux iso to load linux and write viruses for windows. As for Mac, you sell FreeBSD to facebook generation for 3x its actual value that thankfully can’t spell to begin with, so commands and shells aren’t even necessary ;)

F*K I must be made of awesome! My dual boot win7/Linux works fine, always has. When I plugged in my mouse in win7 it just worked, yes it asked to download some crap – I said no, what a rebel I am. You can all worship me now. You must now take the sacrament (pot) every day upon waking and the virgin deflowering is after lunch on Thursdays.

If “X” works fine on Linux – use Linux. Yeah I know – I’m a f*k’n genius ;)

Oh and THANK YOU hipsters for redefining “hacker” to mean “Whiny little bitch” GOOD JOB! “Microcontrollers are too hard”, “Assembler? Oh Noes! The Boogy Man!”, “Why learn when you can copy and just pretend you did”.
Now get back to connecting your Tarduinos to twitter… the world needs sooo much more of that!

I agree that Linux is better for a lot of things.
To compare Linux to MS-WIN is like comparing Legos to the wooden building blocks you give 2 year old children. you can do some pretty neat stuff with MS stuff, but when you get into the difficult stuff MS becomes nearly impossible to use. Many people choose to move forward in other fields of education, and never advance above the wooden blocks, and the Legos would be to difficult for them to use.

In my mind, each OS has its rightful place (at least for the time being, for me). I run Windows (currently running the 8 dev preview, because I can) on my main install, and have Gentoo installed in a VM.

Windows has what I consider to be a superior GUI (The jury’s still out on whether or not the GUI additions in 8 are good or bad), and Linux’s command line features and general hackability are awesome. Also, Windows has support for games (for those brief, fleeting moments of free time that I occasionally manage to catch). While Linux support is growing in some aspects, it is still very far from perfect.

Anyways, one of my biggest pet peeves with some versions of Linux is their inability to get sleep mode to function correctly. When a computer locks up after trying to come out of sleep mode, every single time, and it automatically sleeps after a given amount of time or when you shut the lid on your laptop, this makes for a very annoying experience. Granted, the webcam in my laptop refuses to work in Windows, no matter which driver I install from the manufacturer’s website. When I installed fedora on a previous (dead, I manage to destroy hardware with regularity) hard drive, it auto-detected and got the webcam working with one of the generic webcam drivers.

Please forgive me if I insult anybody in any way. My intent is only to express my opinion.

I’m a Windows 7 lover who uses Apple mobile devices and has started using Linux for software development. I use windows for EVERYTHING else like writing documents, playing games, and browsing the web. Why? Because I like the way that windows works and how I interact with it. Please pay very close attention to these next two sentences. WINDOWS SOLVES MY PROBLEMS AND ALLOWS ME TO DO WHAT I NEED TO DO. WHAT IT CAN’T DO I GET SOMETHING ELSE TO DO. Now, lets say my windows machine crashes. Whatever, I’ll just reboot and everything will be fine. I can’t compile C on windows as easily on windows? Whatever, I’ll use Linux when I need to do that. I LOVE windows. That doesn’t mean that anybody else has to.

My point here is that I don’t give a crap about what anyone has to say, hate, or love about Windows, Linux, or Mac, or anything else if they are just going to complain or tell me about their horrible sob stories about having to install drivers or all their horrible experiences with their machine.

To be perfectly frank, just because something doesn’t do what you want, when you want it, or how you want it done doesn’t make it the most horrible, useless, and evil thing that has ever been created. It just means that it doesn’t work for your needs.

Now, this article is about, as far as I understand, how windows doesn’t work well with our custom devices. Can we talk about THAT instead of smacking down on the ENTIRETY of every OS that gets posted? Were are here to discuss a single windows quirk. So go find some “We Hate Windows” thread to post all your hate on.

Thank you for enduring that post. I’m sorry for my tone on the situation, but I feel like as civilized human beings, we have the capability of holding an intelligent, comprehensive, and focused discussion. Happy Hacking!

A summary of the comments thus far:
$MY_OS > $YOUR_OS. It was in the past, it is now and it will be in the future. When you point out the deficiencies in $MY_OS, it only shows that you’re not capable of understanding its beautifully succinct design. Every “real” hacker uses $MY_OS and the world would be a better place without $YOUR_OS.
IF( $MY_OS == $YOUR_OS )
YOU = REAL_HACKER
ELSE
YOU = !REAL_HACKER

Now that that’s out of the way, did anyone read the article on Make? I hope that Microsoft is able to find a way to help beginners get started with independent hardware. Personally, I think working at the hardware/software interface is the hardest part of any project because when you have a problem, it can be very difficult to determine if it’s a hardware problem or a software problem. To someone starting out, taking the hassle of out making the PC talk to the new frob would be GREAT! Regardless of whether your frob is working (by “working” I mean doing exactly what you think it should be doing) or not, you know that just plugging it in will at least establish a reliable communication channel.
But, being a $MY_OS user, I guess I don’t have to worry because $MY_OS has drivers for every possible device (past, present and future) built into the kernel, or loaded dynamically – whichever makes it better than $YOUR_OS.