The Apple Geek

View Original

CUPS Print Server

What is CUPS?

Common UNIX Printing System, its a hosted printer system for UNIX type operating systems, such as Linux and macOS. It’s modular based with a spooler, filter and backend which all together create a print server.

This open source software was designed and built by Michael Sweets, it was adopted in 2007 as part of OSX 10.2 as the defaulted printer system. CUPS and Sweet both became part of Apple in 2007 with Michael Sweets chairing the printer working group and overseeing CUPS continued development until he left apple in December 2019.

Why do you need a printer server?

We’re a pretty Apple/Linux centric household, so a common solution to print would be this type of server hosted on a Raspberry Pi, its low cost, low energy, pretty powerful and a tiny footprint which can basically velcro to the back of the printer.

The other reason why a printer server works, it means the job is capture on the server, and can be reprinted if needed or if the paper tray is empty without having to battle the printer manufacturers native software.

macOS see’s the printer as a generic printer and sends the job to the server without any issues, the server handles the spooling of the document and the conversion into a printer friendly language.

One network cable or zero cables if your using WiFi and as many USB printers connected as you’ve got ports available on your raspberry Pi, multi jobs can be printed on different printers at once, from one central server.

Can it AirPrint?

Yes, Yes it can and was the sole reason I set up this service on a spare Raspberry Pi Zero I had from a previous project. Now I know you can get AirPrint and google cloud print enabled printers, but before 2020 Covid-19 Lockdown and Work From Home (WFH) was the norm, our Inkjet printer would rarely see much usage, and this lead to the dried up ink tanks and blocked nozzles.

The fate of many expensive all in one inkjet printers went this way, and sadly recycled as the cost of replacing the printer heads out weighed the price of the printer or a replacement after a couple of years sat on the side not being used service.

How do I set it up?

In Terminal run the following command, let this run to completion,

sudo apt-get install cups

Then we need to add pi as a lpadmin, doing so lets user pi access the administration area on the CUPS software, without needing super user prefix,

sudo usermod -a -G lpadmin pi

Next step is to allow whole of network access, instead of the ‘local host’ the pi’s traffic to it.

sudo cupsctl --remote-any | sudo systemctl restart cups

And now its a case of directing your web browser to the CUPs webpage hosted on the raspberry Pi, the default port is :631 with the example address of our server (https://192.168.1.55) https://192.168.1.55:631.

If you’re uncertain of your Raspberry Pi IP address run the command,

hostname -I 

CUPS Web Page

Once you’ve access the CUPS webpage its pretty self explanatory to add a printer to the system.