Quick Links

You generally don't need to install hardware drivers on Linux. It'll automatically detect the hardware in your computer and set it up for you -- that's the goal. But printers can be a different story.

Here's a fun fact: Printing on Linux is handled via CUPS (the "Common Unix Printing System.") Apple owns CUPS and employs the main developer -- CUPS also handles printing on Mac OS X.

Use the Foomatic Database

Related: How to Install Hardware Drivers on Linux

Generally, your Linux desktop environment will provide a graphical printer configuration tool that allows you to easily configure CUPS and set up printers. There are many ways to connect printers, from direct connections with a USB cable to over the network. For some types of connections, your printer may be automatically detected and configured. For others, you may need to do this on your own.

Ubuntu and many other Linux distributions use a printer configuration developed by Red Hat. Other printer configuration tools work fairly similar, as they all use CUPS on the backend. Launch the printer configuration tool on your Linux desktop and start adding a printer. (On Ubuntu, open the System Settings window and click Printers, or launch the Printers application from the Dash.)

Depending on the type of printer protocol you've selected, you may need to provide printer drivers. This tool will provide you with a list of printer drivers available in the foomatic database. Select the manufacturer of your printer and look for its model number in the list.

Don't see your exact model of printer in the list? Look for the closest model number and try it.

After setting up the printer in this way, you'll definitely want to print a test page to confirm that the printer driver you selected worked properly.

You can also just use the CUPS web interface for printer setup and configuration. It's a bit less user-friendly, but it should be available on every single Linux distribution. Open a web browser, plug localhost:631 into its address bar, and press Enter. Click over to "Administration" and use the "Add Printer" link to add a printer via the web interface. You'll be asked for a password. Enter your Linux user account's username and password. For some Linux distributions, you may need to use the username "root" and the root password.

Get a PPD File From the Manufacturer

The printer configuration tool also allows you to provide a PPD file directly. Some manufacturers provide these files for their printers. You may find them on the printer's driver disc, on the manufacturer's download site for that printer, or included in the Windows driver itself if the printer is a PostScript printer.

Look around the manufacturer's website or on the driver disc for the PPD file. You can also consider downloading the Windows driver and attempt to open it in a file-extraction program. Yes, even if it's an .exe file, you may be able to open it up and dig around to see if you can find a PPD file. This may requier the cabextract tool.

You could also consider performing a web search for the name of the printer and "PPD file" to see if other people have successfully located a PPD file that will work for the printer. If you have a PPD file, you can install it from the printer configuration interface.

Tap Into OpenPrinting.org's Printer Database

The OpenPrinting.org website maintains a database of printers along with reccomended printer drivers for them. The printer configuration tool can actually search for and download PPD files directly from there. However, you can also just visit the printer database on the OpenPrinting.org website yourself and search for your model of printer.

The database will tell you how well a printer works, recommend a driver, and provide PPD files. You can download the PPD file directly and install it manually, if the database offers it.

For some printers, you may be pointed towards special drivers provided by the manufacturer. You may need to install these to get the printer working -- it's often a good idea to search for your model of printer and "Linux" for instructions on getting it working. Searching for instructions specific to your Linux distribution is also helpful, for example, your model of printer and "Ubuntu."

But It's Still Not Working!

In an ideal world, your printer would be automatically detected and "just work." However, printers have been a big pain point for Linux users. The database of PPD files provided by foomatic is designed to make them work as easily as possible, and the OpenPrinting.org website is designed to provide a centralized database of instructions to make printers work properly on Linux.

But some printers just aren't supported and won't work. Some printers may work, but not very well. Other printers may require proprietary drivers provided by their manufacturer, and those drivers can often be a headache to install -- or they may not install at all on newer Linux distributions as they haven't been maintained and updated over the years.

Related: How (and Why) to Get Started with Google Cloud Print

For many printers, there's just not much you can do. If you want to use a printer with Linux, you should go out of your way to look for one that supports Linux.t

You could also just do an end-run around the whole printer situation -- for example, if you get a printer that supports Google Cloud Print, you could just print to it from Linux via Google Cloud Print, avoiding any printer driver problems. There's even a Google Cloud Print driver for CUPS, allowing any application that supports the standard CUPS system (that means most Linux desktop applications) to print to a Google Cloud Print printer.


Having problems printing? Consider going paperless. You can always print documents to PDF and keep them in digital form -- or just take those PDFs to another computer with a printer and print them there.

Image Credit: jared moran on Flickr