Give Your Networked HP Printers HPLIP

Printing on Linux has traditionally been possible mainly thanks to the efforts of heroic Linux developers, with little support from printer manufacturers. The recalcitrance of so many hardware manufacturers to support Linux and other non-Windows platforms still baffles me–is there something about us that repels them? They take our money happily enough, without feeling any obligation to deliver any actual value in return. I would wish an itchy pox upon the lot of them if I were less saintly. I would also wish an itchy pox upon Linux users who don't research their purchases a bit more carefully.

But I don't really want anyone to have itchy poxes (well, almost no one), and reality is what it is, so today we're going to look at the excellent Hewlett-Packard Linux Imaging and Printing subsystem for Linux (HPLIP).

Linux-Friendly Printers

A number of printer manufacturers are now Linux-friendly to varying degrees – Samsung, Brother, Epson, Konica/Minolta, and Canon all offer their own Linux drivers, or support CUPS (Common Unix Printing System). Some support only a few models, and some are more generous. Using vendor's drivers doesn't always translate to better quality: You're often better off using CUPS' Foomatic or Gutenprint drivers. I have a special fondness for the TurboPrint drivers for color inkjet and photo printers, which are often better than even the Gutenprint drivers. Yes they cost money, about $30 US. Yes it sucks to pay extra for drivers when they should be included with the printer, especially when most of them support Mac OS X, which uses CUPS just like Linux. But it's cheaper than buying a new printer.

HPLIP

Hewlett-Packard has the most extensive line of well-supported Linux printers, scanners, and multi-function devices of any printer manufacturer. It even make it easy to find them (unlike the others) as this handy page shows. It also has a Sourceforge site with detailed information.

These are all supported by the HPLIP subsystem, which depends on CUPS. Most Linux distributions these days install HPLIP by default. You don't need it if you're not running any HP printers.

HPLIP is a genuine FOSS project hosted on Sourceforge. The code is released under the GPL, MIT and BSD license. So there is nothing sneaky; no antique, buggy binaries, no silly wailing about protecting precious eye pee, no funny "you can download it if you can find it" games.

HPLIP Components

HPLIP supports inkjet printers, laser printers, photo printers, and multifunction devices. So you can actually have a multifunction device where everything works on Linux. You can make pretty photo prints, send and receive faxes, make copies, and churn out reams of endless monochrome prose just like a real computer user.

HPLIP includes HPIJS, which is the basic printing driver that supports CUPS, LPD, PPR, and other spoolers. These two are packaged separately on both Debian and Fedora as hplip and hpijs. Debian packages the help documents separately in hplip-docs. If you wanted the smallest possible printing system and only needed shared printing, with no fax, scanner, or smart card readers, then HPIJS + CUPS would do the job.

The HPAIO scanner driver replaces the older HPOJ driver. This is a separate package on Fedora, libsane-hpaio, and is included in hplip on Debian.

HPLIP Toolbox

HPLIP comes with a great little control panel, the HP Device Manager. You will either find a nice menu
icon in your start menu, or start it up with the hp-toolbox command. Here are screenshots of it in action. Your own
Device Manager will only display functions that your printer or multifunction machine support. Most
functions, such as sending faxes, printing documents, and scanning are done from other applications, such
as word processors, scanner software like Kooka or Xsane, and image editors. But you can also use the
Device Manager to do these things. You should take a cruise through it to make sure things are set up the
way you want. For example, you'll need to set up your fax banner, and you can create a fax address book.
(There doesn't seem to be a way to use an external directory, such as an LDAP directory, for this.)

The Supplies tab is a lovely thing to those of use who have suffered for years trying to get this feature
to work–a graphic showing your ink or toner levels. You younguns have no idea of how we have
suffered. (Uphill, both ways in the snow. Barefoot.)

More on Printing

The Configure -> Settings menu lets you choose the default scanning device and have problem reports
emailed to you. By default it does not poll your system to discover printers, so you can set it to do this
at scheduled intervals.

The first time you start up the Device Manager you should start it from terminal so you can see any error
messages. A common one is warning: Coverpages disabled. Reportlab not installed. This means you
need to install the python-reportlab package. If you don't have this, you won't have fax cover
pages.

The Device menu is for finding and installing new printers. It's a nice change of pace from CUPS; I like
CUPS a lot, but the Web interface is still clunky.

Network Scanning

The Device Manager does not include any nice easy way to configure network scanning, which is a shame
because it's a pain to set up manually. One way to run scans over the network is using good old X over
ssh. Just log into the PC that the scanner is connected to:

$ ssh -Y user@scannerpc

Then run the hp-toolbox command and click the Scan button. Remember that you're running these
commands on the remote PC.

There is a more complex way that requires using xinetd, which we'll get to next week. We'll also
look at using HP's Jet Direct for direct network printing.