If you are like me, you may have an old, but still perfectly functioning printer which you would like to print on from anywhere in your house. In my case, I even kept an old Windows PC just for printing. That PC is soon going to recycling, now that a Raspberry Pi helped make the printer reachable from any computer, phone, or tablet on the home network. This post will show how to easily achieve this.
The printer in question is a more than 15-year-old HP LaserJet 1020. I love that thing, still chugging along and still printing like a champ! The only issue was that since it’s old, driver support was gone, and I couldn’t print to it from other computers in my household. Luckily, I discovered a way to share the printer via a Raspberry Pi that I had already running on my network as a Pi-Hole server.
First, connect your printer to the Raspberry Pi via USB.
Install The Print Server (cups)
# Update repos and install cups sudo apt update sudo apt install cups # Add the pi user to the lpadmin group sudo usermod -a -G lpadmin pi # Allow remote access to cups and restart sudo cupsctl --remote-any sudo /etc/init.d/cups restart
cups can be accessed locally at
http://pi-local-ip:631/. You can skip the SSL warning and enter your
pi username/password if prompted.
Install HP Drivers & Configure Printer
# Install HP Printer Drivers and PostScript Printer Description sudo apt install hplip sudo apt install hplip-ppds
The final step will be to add/configure your printer.
sudo hp-setup -i
This command will allow you to setup and add the printer to your system and print a test page at the end. The setup also had to download additional plugins for my printer. It took about a minute or two to print a test page, which I attributed to my printer being old. The
-i is used for interactive mode in case you do not have a monitor attached.
After completing the
hp-setup you should see your printer listed on the
cups web UI in the
Printers tab. You should also now see the printer from your other computers when adding a new networked printer. In my case everything worked just by listing the available printers from my macOS, Windows, and iOS clients.