Choosing a printer for Linux

Linux offers widespread support for printers. Learn how to take advantage of it.
238 readers like this.
document sending

We've made significant strides toward the long-rumored paperless society, but we still need to print hard copies of documents from time to time. If you're a Linux user and have a printer without a Linux installation disk or you're in the market for a new device, you're in luck. That's because most Linux distributions (as well as MacOS) use the Common Unix Printing System (CUPS), which contains drivers for most printers available today. This means Linux offers much wider support than Windows for printers.

Selecting a printer

If you're buying a new printer, the best way to find out if it supports Linux is to check the documentation on the box or the manufacturer's website. You can also search the Open Printing database. It's a great resource for checking various printers' compatibility with Linux.

Here are some Open Printing results for Linux-compatible Canon printers.

Canon printers listed on Open Printing site

The screenshot below is Open Printing's results for a Hewlett-Packard LaserJet 4050—according to the database, it should work "perfectly." The recommended driver is listed along with generic instructions letting me know it works with CUPS, Line Printing Daemon (LPD), LPRng, and more.

HP printer details from Open Printing site

In all cases, it's best to check the manufacturer's website and ask other Linux users before buying a printer.

Checking your connection

There are several ways to connect a printer to a computer. If your printer is connected through USB, it's easy to check the connection by issuing lsusb at the Bash prompt.

$ lsusb

The command returns Bus 002 Device 004: ID 03f0:ad2a Hewlett-Packard—it's not much information, but I can tell the printer is connected. I can get more information about the printer by entering the following command:

$ dmesg | grep -i usb

The results are much more verbose.

Results of dmesg command

If you're trying to connect your printer to a parallel port (assuming your computer has a parallel port—they're rare these days), you can check the connection with this command:

$ dmesg | grep -i parport

The information returned can help me select the right driver for my printer. I have found that if I stick to popular, name-brand printers, most of the time I get good results.

Setting up your printer software

Both Fedora Linux and Ubuntu Linux contain easy printer setup tools. Fedora maintains an excellent wiki for answers to printing issues. The tools are easily launched from Settings in the GUI or by invoking system-config-printer on the command line.

Printer Settings

Hewlett-Packard's HP Linux Imaging and Printing (HPLIP) software, which supports Linux printing, is probably already installed on your Linux system; if not, you can download the latest version for your distribution. Printer manufacturers Epson and Brother also have web pages with Linux printer drivers and information.

What's your favorite Linux printer? Please share your opinion in the comments.

User profile image.
Educator, entrepreneur, open source advocate, life long learner, Python teacher. M.A. in Educational Psychology, M.S. Ed. in Educational Leadership, Linux system administrator.


My recommendation for any printer, whether Linux, MacOS, Windows or any other OS is to use one that has native support for an industry-standard page description language - PostScript or PCL.

Printers with proprietary languages (which includes most ink jets and some lasers) are always at the mercy of the manufacturer to provide drivers for it. Even if drivers are available when you buy the printer, what are the odds that support will continue for the entire life of the printer - which may span over a decade and involve many major OS updates?

People with abandoned printers can often install open source Gutenprint drivers, but the quality of those drivers isn't always the best, especially for things like color calibration and photo printing. They often fail to take advantage of all of a printer's features.

If, on the other hand, your printer uses PostScript or PCL, you generally don't have this problem. Drivers are generic - either manually configure it for your printers features or download a cross-platform "PPD" file from the manufacturer. And if the printer maker abandons you, your OS's generic driver will continue working far into the forseeable future.

Additionally, support for PostScript (and to a lesser extent, PCL) means you can also print from old or unpopular operating systems like (for example), SunOS, BeOS and OS/2 - platforms where no manufacturer will ever develop a driver - because they all include some amount of generic PostScript support.

In addition to choosing a good language, I would always recommend a network-attached printer. One with a built-in Ethernet and/or Wi-Fi interface. If your printer is attached via USB, then you can only print from the attached computer - you can configure that computer as a print server, but it will still have to store and forward everybody's print jobs. If the printer is directly attached to the network, however, every host can be configured with its IP address and send documents directly to it, without needing to bother with configuring any computer as a print server.

Another option is to use devices that can be used independently of a computer because they have USB ports, memory card slots, and PDF support. Otherwise, I also consider Postscript and network connectivity to be must-have features. PCL is acceptable, but less desirable than Postscript because there are more tools to work with Postscript files. Using devices that require proprietary software, drivers, protocols, or unusual configuration steps is inviting disaster.

In reply to by David C.

Brother printers.... Enough said, Linux support right on their site. Installers made for every printer.

I used HP printers for years, as they had software in the repositories. The high price of ink, troubles with the printer and lack of concern by HP about the problems drove me to look for another printer. I choose Brother WIFI printer and could not be happier. Lower ink prices, no problems with the printer and though I am a GUI guy, I was able to go to their website, download the software and drivers and easily install them with the self extracting tarball. I would recommend Brother printers in a minute to anyone using Linux.

In reply to by Paul Wilson (not verified)

I couldn't agree more!

In reply to by Paul Wilson (not verified)

Hi Don
I have a Canon Pixma 4950 which works perfectly well for me.
However - scanners - that's another story.
I had an Epson V370 photo which worked fine on Ubuntu 16.04LTS, but on 18.04....
Well I landed up buying a multi function HP Envy. Drivers etc on HPLIP were fantastic - once installed, it just works perfectly. The downside is that the HP inks are horrendously expensive so I will keep the Canon until it falls down.
My advice to people now is NOT to go for Epson - they are clearly not in the least bit interested in Linux by the tone of their web site and the lack of interest is reflected in my attitude to them now.

In reply to by Don Watkins

I used to have pretty hit-and-miss luck with Scanners on Linux until I discovered VueScan. This cross-platform piece of software is affordably priced, and the pro version features lifetime updates. It is especially great for Linux support and support of "discontinued" printers on Windows and macOS. Well worth the price of admission.

FWIW, since I bought my first scanner in the mid 1990's when using a Commodore Amiga computer, I standardized early in my computing journey on Epson scanners, and haven't looked back.

In reply to by davethesteam

Absolutely correct. The TWAIN standard for scanners is (as far as I can tell) an API for scan-capable apps to communicate with device-specific scanner software. I don't think there is any such thing as a generic API for scanners the way there is (via PostScript and PCL) for printers.

As such, you are often at the mercy of your scanner manufacturer for software support. But, as Jeremy Leik wrote, there are sometimes options. VueScan is a (commercial for Mac and Windows) software package that supports an extremely large number of otherwise-unsupported scanners. Another package that I use is SilverFast - it's a pro/semi-pro package so it costs a bit more, but it also supports a lot of otherwise unsupported scanners (but not nearly as much as VueScan). Unfortunately, I don't know of any good open source scanner software, which can be incredibly frustrating if you want to scan from a computer running Linux.

In reply to by davethesteam

Avoid Canon unless you are 100% sure it works with your distro. Canon uses a proprietary protocol for communication. I have a poor record of success even on a simple model LBP2900. The printer is mechanically perfect, but the software for Linux (Ubuntu, for example) is useless.

I've been using strictly Brother printers since 2001 when my last inkjet died due to a power surge. They are affordable, and well supported on every platform I've thrown at them.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.