Set Up an HP P1102w Printer on Ubuntu Linux

Introduction – This is a specific guide to setting up the computer on my own network. I’m writing it because, every time there’s some weird network problem, I change a password or something, and foul up the network, and cause the printer to drop off. Then I end up spending a couple hours fixing my errors. This describes the correct configuration.

Network Limitations of the HP Printer’s WiFi

This printer uses Wireless G, 802.11g. It will not play nice with my TP-Link access point that does 802.11bgn. The access point must be set to 802.11g for the local WiFi.

However, do not set the entire access point to 802.11g. It’s too slow, and the upstream router prefers Wireless N 802.11n. So the radio that connects to the upstream router (the Internet gateway) must use 802.11n.

Separate WiFi Networks on the TP-Link Access Point

Because these two radios must be operating at different speeds, it’s necessary to assure that the printer connects only to the access point, and not the upstream router.

For this reason, there are two SSIDs on the network. The upstream router uses S——- (name obscured) and the downstream AP uses m——.

Most WiFi devices can connect to either S—– or m—–, but the printer must connect to m—–.

The configuration for m—- is under the setting Wireless -> Wireless Settings -> Local Wireless AP Setting. This configures a local wifi network that.

The AP is configured as “Bridge with AP”, so traffic routes across to the upstream router, and the printer is available to everyone, including the devices connecting to the S—– SSID.

More Configuration: WPA-PSK TKIP

Set the Wireless -> Wireless Security to use WPA-PSK, TKIP Encryption.

I’m not sure why this is necessary, but I suspect that the printer doesn’t do AES. (This printer was released around 2010.)

If you don’t have the WiFi setup correct on the AP, the HP configuration software will appear to work, but the printer won’t join the network, and you won’t be able to ping it.

Linux HP Printer Setup Notes

HP Printer setup is pretty straightforward. First, install the software:

    sudo apt install hplip-gui

Then, run it:


Plug a USB cable into the printer and computer. (Note that my desktop computer’s front ports don’t seem to have enough power to communicate. Adding an extension cord and plugging it into a powered hub or the accessory ports on the hard drive worked.)

Pick the wifi setup over a temporary USB connection.

The first sign that things are OK is when the setup finds the printer over USB.

Next, scan for Wifi networks. The second sign things are OK is when you find the m—— network. If you don’t find that, the network configuration is probably wrong.

Pick the m—- network and specify the password.

At this point, fire up a terminal window and ping the printer’s IP address, which is –.–.–.225. The printer’s set up with a static address.

Readers: if you reset the printer, it’s going to be using DHCP, and you need to wait for the printer to report back the IP address.

The printer should get reconfigured, connect to the network, and be reachable by ping.

If, instead, you see a bunch of “OID” stuff, that’s the software barfing out debug messages that it can’t use SNMP to reach the printer. It’s not on the network.

If the ping works, you can go to the printer through the web browser to verify that it’s reachable.

Installing Proprietary Drivers

At some point during the installation, it might throw up a dialog prompting you to install drivers. Go ahead. You might need to re-do the entire setup, though.

Once the printer is reachable, you have a couple options.

You can run this command to install a CUPS printer:

    hp-setup the.ip.address.ofprinter

Or, you can go into the GNOME or KDE settings and set up a printer. I prefer the latter. So far, it’s worked for me. The GNOME settings are confusing, because the printer system has two layers planes of printer support.

Digression About Printing History and Technology

Up at the desktop plane, it supports autoconfigured printers. These printers exist within GNOME, but the aren’t visible to the command line. At least not easily.

Another plane is CUPS, which is like an operating system for printers that brings together a few different legacy technologies, and unifies them under the Internet Printing Protocol. CUPS is a server that runs printer job queues, and has filters to convert various inputs into printer data.

Underneath CUPS are the drivers to talk to different printers.

In the old, old days, printers generally had one way to communicate – a serial line. Then, they created command languages to draw graphics, but they still used a serial line.

Then, with laser printers, you had these more elaborate command languages like PCL, then PostScript, which is a programming language. You also had more ways to communicate, using network protocols over Ethernet.

You also had higher-level network protocols to communicate between computers, to pass around print jobs as files, rather than simple data streams. You had LPD, and Windows SMB, and AppleTalk.

As printers got more powerful, they also added these network protocols, so laser printers support multiple communication protocols, and behave like servers.

Eventually, the mess had to be centralized, and on Unix, it was called CUPS. CUPS uses a protocol called Internet Printing Protocol, which is, basically, printing over the Internet.

IPP was awesome for networks. Net admins used it to take printer confusion. Unfortunately, the real world didn’t have netadmins in every home. They barely had Windows admins, and networks were spreading in homes.

So two different, competing technologies were invented to automatically configure networks so you could put a device onto your LAN, and it would show up on your computers and (later) smartphones.

One was backed by Apple and called Bonjour, or ZeroConf, or DNSSD.

The other was backed by Microsoft and called WS-Print, or Web Services on Devices for Printing. Printer discovery is with WS-Discovery.

IPP and GNOME support DNSSD. I think Apple bought CUPS and put it into OS X.

CUPS Filter Settings that Work For Me

Generally, the GNOME printer setup works for me, but I have one manually created setup that just seems to work more reliably than anything else, and I only know how to configure it in CUPS.

To inspect CUPS:

There are at least three ways to communicate with the printer. My most reliable setup uses:

Driver: HP HP LaserJet Professional P 1102w, driverless, cups-filters 1.20.2 (grayscale)
Connection: socket://XXXX.XXXX.XXXX.225

This uses JetDirect to connect to the printer. You have several different connection options with JetDirect. Choose socket:// and the IP address.

Though autoconfiguration is supported by the desktop, I have been falling back to using JetDirect drivers all the way to 2020, because I just find it more reliable and predictable. When I print from Linux, the job comes out in seconds. When I print from Mac OS or Windows, it’s often quick, but, sometimes takes a long time.

Bonjour/Rendezvous, DNSSD

A second method to connect is through Rendezvous (formerly Bonjour). You will see a connection like this: dnssd://HP%20LaserJet%20Professional%20P%201102w._pdl-datastream._tcp.local/

This printer semi-auto-installs. It’s kind of annoying, but the printer works.

Internet Printing Protocol (IPP)

The third method is IPP. CUPS will share its printers through IPP.

If you look in CUPS, you might see one or two printers. I have two: the JetDirect printer I set up myself, and the one found through DNSSD.

When I look in the printer control panel, I see more printers, and when I look at their details, they are at localhost. Clicking on that will bring up the CUPS page.

CUPS is sharing one of the printers, and the printing services in GNOME are automatically discovering the printer and installing it. So, I go into cups and make sure none of the printers are being shared through CUPS.

LPD, Line Printer Daemon

This is an old protocol from Unix history. It’s also supported on most HP printers, but I don’t use it. Fortunately, it won’t auto-install.

A Brief Review of the HP p1102w Printer, 2020

I own two of these printers, and might one day buy a third, but do not recommend it any longer. For one, all the printers are old, and it’s not from the Golden Age of HP printers, the late 1990s and 2000s.

If you have one, it’s still worth getting another one, for business continuity. You can get these for around $30 to $50 lightly used. Toners are only $15 each.

However, I have a few things I hate about these:

No Ethernet: WTH? Printers are inherently local to a computer. Ethernet eliminates slow printing and this “connection” nonsense. Flip the power on, and your first print is out in a minute.

Slow bootup, and sometimes a flaky bootup. Maybe it’s the WiFi, but sometimes, a reboot doesn’t fix the issue.

Weak WiFi: I have problems with an access point around 40 or 50 feet away. Adding a booster did not help. There’s also that 802.11g issue, above.