Device Support in Windows vs Linux


One of the highly debated subjects with Windows and Linux is with device support. The two have different methods of how drivers are created and implemented into the operating system. With Windows, Microsoft writes generic drivers to help ensure that users can get up and running, then 3rd party supplied drivers can be installed to optimize performance. With Linux, drivers are all included with the Linux kernel, and devices are detected and the appropriate drivers are then activated on the fly. There are no 3rd parties to contact for drivers (unless a proprietary driver is needed, in which case it has to be manually installed, similar to Windows; this is rare but sometimes necessary).

I’ve found that driver support in Linux is excellent. But you may have seen somebody exclaim that their PC just isn’t supported with Linux, and rumors have circulated around for years that Linux just doesn’t have good hardware support. This is not entirely true, however. You have to consider the order of events of hardware and software. The hardware comes out first, then software is modified to adapt to the hardware. If you run out and buy the latest and greatest hardware, there’s a good chance that there will be something that isn’t supported by the current version of the Linux kernel. However, it doesn’t take long for the kernel development teams to eventually implement drivers into the kernel. With Windows, it is more prevalent and the manufacturer of the hardware devices try to ensure drivers are available for Windows customers to download and use, around the same time the hardware is released. When Windows 7 first came out, Windows fanboys immediately exclaimed that hardware support was excellent now over Windows XP, because you could install Windows 7 and all of the drivers were present and you could be up and running very quickly. What I would point out to them is that Linux was the same way. However, what they did not realize is that eventually, Windows 7 would age and newer hardware would come out, and the old issues of Windows XP not supporting hardware out of the box would also happen with Windows 7, and sure enough that became true.

Overall, I’ve found that Linux is much easier to set up, because a majority of the time no 3rd party drivers are needed. Personally, I use a 3rd party driver for my nVidia video card because nVidia has chosen to keep the driver proprietary, and the Noveau (free open source nVidia driver) is still being rapidly developed to catch up to the nVidia supplied one. Even installing a printer in Linux requires no installation CD.

Recently, I attempted to help somebody with a Windows XP laptop and an AT&T mobile broadband card. I installed AT&T’s custom software for using the card, along with the AT&T drivers. Everything worked, but a day or so later I was informed that Windows XP was prompting for an administrator password when the laptop was booted up. It seems that Windows still needed administrator access to install something even though the card had been working. This same behavior in Windows XP can happen with USB printers. Take a working USB printer, unplug it, and plug it into an alternative USB port. Does it prompt for an administrator password? Chances are it will, unless you are running with administrator privileges which is not recommended for security reasons.

Linux bypasses these device installation issues with drivers that are all included in the kernel. The kernel itself loads modules and drivers as needed, without any interaction with the user needed. So for the above example, I was able to take the AT&T card, plug it into a laptop running Fedora Linux 12, go to the NetworkManager applet in the upper right corner, and connect to the AT&T network with two clicks. Linux automatically detected the card and activated it, without any interaction necessary, and all in about 10 seconds. No driver installation, no proprietary software installation, no extra work, no administrative rights popups, and no worries about issues popping up on the road.