The basics

What is CUPS

OpenPrinting CUPS

The current standards-based, open source printing system developed by OpenPrinting for Linux® and other Unix®-like operating systems. CUPS uses IPP Everywhere™ to support printing to local and network printers.

  • CUPS is used in Apple’s iOS and macOS as well, though it is a slightly different version.

  • CUPS supports printing to

    • AirPrint™ and IPP Everywhere™ printers (which is supported by most modern printers)
    • Network and local (USB) printers with Printer Applications
    • Network and local (USB) printers with (legacy) PPD-based printer drivers

In this article, we’ll use AirPrint™/IPP Everywhere™ printers as well as HP’s poop legacy printer.

IPP Everywhere

IPP

IPP everywhere is a PWG standard that allows personal computers and mobile devices to find and print to networked and USB printers without using vendor-specific software.

Setting Up

mDNS

mDNS stands for Multicast DNS. It acts as a protocol which resolves hostnames to IP addresses within small networks that do not include a local name server. The main selling point of it is zeroconf(zero configuration needed). Which is great to discover printers without user’s manual interaction.

systemd-resolved

It is recommended to disable systemd-resolved’s mDNS function to avoid any conflict. This configuration example is from the moeOS project:

1
2
3
4
/usr/lib/systemd/resolved.conf.d/moeOS-avahi-compact.conf

[Resolve]
MulticastDNS=off

When done, restart systemd-resolved.

Avahi

Avahi can be found and installed on most distros, which acts as a mDNS resolver and zeroconf discovery service.

To enable it, execute:

1
systemctl enable --now avahi-daemon

CUPS

CUPS and other dependencies should be installed:

1
2
3
4
cups
cups-browsed
ipp-usb
logrotate

After installation, several services and sockets should be enabled using:

1
systemctl enable --now cups cups-browsed

Installing the printer

AirPrint™ & IPP Everywhere™

GNOME Settings

By default, AirPrint™ & IPP Everywhere™ printers should be detected and installed automatically in a DE (GNOME and Cinnamon tested). Head to the printer settings, the printer should be shown if nothing goes wrong.

HP specific setup (Legacy)

Although most printers support AirPrint™ & IPP Everywhere™, some legacy printers may still need a driver to be installed. This is when hplip and hplip-plugin come in. At the time writing, I’m not exactly sure whether HPLIP and its plugins are proprietary. Avoid it if you can.

  • hplip-plugin and hplip needs to be installed before setting up the printer.
  • Head to CUPS Web Interface to add your printer and select the correct driver.