Quick Links

Windows needs manufacturer-provided hardware drivers before your hardware will work. Linux and other operating systems also need hardware drivers before hardware will work -- but hardware drivers are handled differently on Linux.

The good news is that, if a device will work on Linux, it'll probably "just work" out of the box. You may sometimes need to install drivers, but some hardware may just not work at all.

How Hardware Drivers Work on Windows

When you install Windows, you'll need to install hardware drivers provided by the hardware's manufacturer -- motherboard chipset drivers, graphics card drivers, Wi-Fi drivers, and more.

Related: Should You Use the Hardware Drivers Windows Provides, or Download Your Manufacturer's Drivers?

Windows does try to help. Microsoft bundles a lot of these manufacturer-provided drivers with Windows, and hosts many of them on Windows Update. When you plug in a new device to your Windows computer and you see the "Installing Driver" bubble pop up, Windows might be downloading a manufacturer-provided driver from Microsoft and installing it on your PC. Microsoft doesn't write these drivers on its own -- it gets them from the manufacturers and provides them to you after vetting them.

If hardware isn't working on Windows, there's usually a driver to make it work. Unless you have an ancient device that only works with older versions of Windows, the manufacturer has done the work of making it work with Windows. Hardware that doesn't work is usually just a quick driver download away from working.

How Hardware Drivers Work on Linux

Things are different on Linux. Most of the drivers for hardware on your computer are open-source and integrated into Linux itself. These hardware drivers are generally part of the Linux kernel, although bits of graphics drivers are part of Xorg (the graphics system), and printer drivers are included with CUPS (the print system).

That means most of the available hardware drivers are already on your computer, included along with the kernel, graphics server, and print server. These drivers are sometimes developed by hobbyists. But they're sometimes developed by the hardware manufacturer themselves, who contributes their code directly to the Linux kernel and other projects.

In other words, most hardware drivers are included out-of-the-box. You don't have to hunt down manufacturer-provided drivers for every bit of hardware on your Linux system and install them. Your Linux system should automatically detect your hardware and use the appropriate hardware drivers.

How to Install Proprietary Drivers

Some manufacturers to provide their own, closed-source, proprietary drivers. These are hardware drivers that the manufacturers write and maintain on their own, and their closed-source nature means most Linux distributions won't bundle and automatically enable them for you.

Most commonly, these include the proprietary graphics drivers for both NVIDIA and AMD graphics hardware, which provide more graphics performance for gaming on Linux. There are open-source drivers that can get your graphics working, but they don't offer the same level of 3D gaming performance. Some Wi-Fi drivers are also still proprietary, so your wireless hardware may not work until you install them.

How you install proprietary drivers depends on your Linux distribution. On Ubuntu and Ubuntu-based distributions, there's an "Additional Drivers" tool. Open the dash, search for "Additional Drivers," and launch it. It will detect which proprietary drivers you can install for your hardware and allow you to install them. Linux Mint has a "Driver Manager" tool that works similarly. Fedora is against proprietary drivers and doesn't make them so easy to install. Every Linux distribution handles it in a different way.

How to Install Printer Drivers

You may need to install drivers for printers, however. When you use a printer-configuration tool to configure CUPS (the Common Unix Printing System), you'll be able to choose an appropriate driver for your printer from the database. Generally, this involves finding your printer's manufacturer in the list and choosing the model name of the printer.

You can also choose to provide a PostScript Printer Description, or PPD, file. These files are often part of the Windows driver for PostScript printers, and you may be able to hunt down a PPD file that makes your printer work better. You can provide a PPD file when setting up the printer in your Linux desktop's printer configuration tool.

Printers can be a headache on Linux, and many may not work properly -- or at all -- no matter what you do. It's a good idea to choose printers you know will work with Linux the next time you go printer-shopping.

How to Make Other Hardware Work

Related: 10 of the Most Popular Linux Distributions Compared

Occasionally, you may need to install proprietary drivers your Linux distribution hasn't provided for you. For example, NVIDIA and AMD both offer driver-installer packages you can use. However, you should strive to use proprietary drivers packaged for your Linux distribution -- they'll work best.

In general, if something doesn't work on Linux out-of-the-box -- and if it doesn't work after installing the proprietary drivers your Linux distribution provides -- it probably won't work at all. if you're using an older Linux distribution, upgrading to a newer one will get you the latest hardware support and improve things. But, if something isn't working, it's likely that you can't make it work simply by installing a hardware driver.

Searching for a guide to making a specific piece of hardware work on your specific Linux distribution might help. Such a guide might walk you through finding a manufacturer-provided driver and installing it, which will often require terminal commands. Older proprietary drivers may not work on modern Linux distributions that use modern software, so there's no guarantee an old, manufacturer-provided driver will work properly. Linux works best when manufacturers contribute their drivers to the kernel as open-source software.


In general, you shouldn't mess with hardware drivers too much. That's the vision of Linux -- the drivers are open-source and integrated into the kernel and other pieces of software. You don't have to install them or tweak them -- the system automatically detects your hardware and uses the appropriate drivers. If you've installed Linux, your hardware should just work -- either immediately, or at least after you install some easy-to-install proprietary drivers provided by a tool like the Additional Drivers utility in Ubuntu.

If you have to hunt down manufacturer-provided proprietary drivers and extended guides for installing them, that's a bad sign. The drivers may not actually work properly with the latest software in your Linux distribution.

Image Credit: Blek on Flickr

Linux Commands

Files

tar · pv · cat · tac · chmod · grep ·  diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

Processes

alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap

Networking

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts