jk's blog

Setting up the HP P1102w with Linux Ubuntu Gnome

The printer stopped working, so I had to look for instructions. Things have changed a lot since I got this printer. Originally, it required the proprietary HP drivers and utilities, because CUPS didn’t have any support. It worked, but was a bit of a pain, and required running a program on the workstation, creating an hplip printer, and printing through that. It worked… but then the drivers stopped working. (Since I print so infrequently, I don’t know when they stopped working.)

Better instructions are here: http://www.dedoimedo.com/computers/linux-hp-printing.html

The good news is that CUPS now supports this printer, and does so through the traditional Foomatic printer filters.

Foomatic is a system of programs that transform one printing language, like PostScript, into other ones, like PCL. It’s a framework for different printer driver – a driver of drivers. It’s developed by the Linux Foundation. Gnome seems to have good support for configuring it…

However, instead of the generic Gnome, I use Ubuntu’s Gnome, which seems to be more stripped down. The system automatically chooses drivers for you, so it picks the wrong one.

The fix is to connect to CUPS through its web interface, and fix the settings. The web interface isn’t that easy, but it’s easier than reading man pages.

The CUPS web interface is at: http://localhost:631/

The driver you want to choose is named: “HP LaserJet Pro P1102w Foomatic/foo2zjs-z2 (recommended)” There are a bunch of similarly named drivers, but the thing to look for is “foomatic”.

If that doesn’t fix it, then there may be a network problem. Even if there isn’t a network problem, you may want to fall back to traditional IP4 networking settings.

The newfangled networking is done via “dnssd:” urls, or DNS Service Disocvery, aka Bonjour, which is a protocol to make DNS names on a network without a DNS server. It didn’t work on my LAN, probably due to some router or access point misconfiguration, firewalling, or whatever. It found the printer, but could not print to it. (Criticism time – printing like this seems to work perfectly on a Mac, but not via generic CUPS. Apple owns CUPS and uses CUPS in OS X. So what’s happening is that these things are being ironed out on the Mac first, then, *maybe* fixed for Linux users who use CUPS.)

My initial instinct was to use Internet Printing Protocol (IPP) instead. But I don’t need any IPP features, and don’t have an IPP server (except CUPS on the computer). So, forget that.

I settled on using the old fashioned JetDirect interface, aka “socket:”. And since I run DNS on the workstation – let’s not even bother. I just gave the printer a fixed IP address and made my URL “socket://”

Ahh, 1990s technology and static addresses for services.

(Complaint time again – I suspect OS X goes through this process of trying different protocols behind the scenes.)

Now, I have a portable config file that’ll work anywhere on my LAN.