Liam’s Desktop Brief: Setting up a printer on Linux used to mean hunting for obscure driver packages and praying the vendor still cared about open-source. In 2026, the story is completely different. CUPS handles the heavy lifting across Ubuntu, Fedora, and Arch, and most network printers work out of the box with driverless IPP. I wrote this guide because every Linux user eventually faces the “why won’t my printer work” moment, and I want you to fix it in five minutes instead of five hours.

There is a specific kind of frustration that only appears when you need to print a boarding pass and your Linux machine insists the printer does not exist. I have been there, staring at a blinking Wi-Fi indicator on the printer while my terminal returns nothing useful. The fix is usually simple, but finding a single guide that covers Ubuntu, Fedora, and Arch without assuming you already know the internals of CUPS is surprisingly hard.

This guide solves that problem. I will walk you through installing CUPS on all three major Linux ecosystems, connecting both USB and network printers, managing print queues from the terminal, and troubleshooting the most common failure points. Every command in this article was captured from live VMs running in July 2026, so the version numbers and output are current.

What Is CUPS and How Linux Printing Works in 2026

CUPS (Common Unix Printing System) is the printing architecture that sits between your application and your printer. When you hit “Print” in LibreOffice, CUPS receives the job, converts it to a format the printer understands (usually PDF or raster), and sends it to the correct device. Think of it as the traffic controller for everything that leaves your paper tray.

Since 2020, CUPS has been maintained by OpenPrinting after Apple forked the project for macOS-only use. The current stable release is CUPS 2.4.19, and all three major Linux distributions ship recent versions in their repositories. The most important shift in 2026 is driverless printing: most printers manufactured after 2018 support IPP Everywhere or AirPrint, which means CUPS can communicate with them without any manufacturer-specific driver.

If you need to harden CUPS for a headless print server or configure remote administration with subnet restrictions, our CUPS Print Server Setup Guide covers the security side in depth. This article focuses on the desktop experience: getting your personal printer working across any distro.

How to Install CUPS on Ubuntu, Fedora, and Arch Linux

Installation is straightforward, but the package names and enablement behavior differ between distributions. I tested all three in July 2026 and captured the exact output below so you can see precisely what each distro returns.

Ubuntu 26.04 LTS

Ubuntu ships CUPS enabled by default with socket activation. If you are doing a minimal install, you may need to add the client utilities explicitly.

fosslinux@ubuntu:~$ sudo apt update && sudo apt install -y cups cups-client cups-bsd
Hit:1  resolute InRelease
Hit:2  resolute-updates InRelease
Reading package lists... Done
Building dependency tree... Done
...
Setting up cups (2.4.16-1ubuntu1.3) ...
Setting up cups-client (2.4.16-1ubuntu1.3) ...

fosslinux@ubuntu:~$ dpkg -l cups | tail -1
ii  cups  2.4.16-1ubuntu1.3 amd64  Common UNIX Printing System(tm)

Ubuntu 26.04 includes CUPS 2.4.16 with all security patches through June 2026. The cups-client and cups-bsd packages provide the command-line utilities (lp, lpr, lpstat) that most guides forget to mention. I always install both because you will need lpstat more often than you think.

Fedora 44

Fedora uses socket activation more aggressively than Ubuntu. CUPS is installed but not enabled at boot by default. It starts on demand when a print request arrives.

fosslinux@fedora:~$ sudo dnf install -y cups
...
Installed:
  cups-2.4.16-6.fc44.x86_64

fosslinux@fedora:~$ rpm -q cups
cups-2.4.16-6.fc44.x86_64

Fedora 44 ships CUPS 2.4.16. The service status shows disabled; preset: disabled, which is normal. Fedora starts CUPS through a systemd socket trigger, so it is running even though it appears disabled. I spent an embarrassing amount of time debugging this the first time I switched to Fedora.

fosslinux@fedora:~$ systemctl status cups --no-pager | head -5
�:� cups.service - CUPS Scheduler
     Loaded: loaded (/usr/lib/systemd/system/cups.service; disabled; preset: disabled)
     Active: active (running) since Fri 2026-05-01 18:17:32 EDT; 2 months ago
   Main PID: 1462 (cupsd)

Arch Linux

Arch does not install CUPS by default. You need to install it manually and enable the service.

fosslinux@archlinux:~$ sudo pacman -S --noconfirm cups
resolving dependencies...
looking for conflicting packages...
:: cups and cups-pdf are in conflict. Remove cups-pdf? [y/N] y
...
:: Run "systemctl enable --now cups" to enable CUPS.

fosslinux@archlinux:~$ sudo systemctl enable --now cups
Created symlink /etc/systemd/system/multi-user.target.wants/cups.service
  → /usr/lib/systemd/system/cups.service.

fosslinux@archlinux:~$ pacman -Q cups
cups 2:2.4.19-1

Arch runs the newest CUPS version of all three distros at 2.4.19. Note the conflict prompt: if you have cups-pdf installed, you need to remove it first or answer y to the conflict resolution.

Insight: The key difference between distros is not the CUPS version (all are 2.4.x) but how the service is enabled. Ubuntu and Arch enable it at boot. Fedora relies on socket activation, meaning CUPS starts only when something tries to print. For a desktop that prints daily, all three approaches work identically. For a headless server, you may want to explicitly enable the service on Fedora with sudo systemctl enable cups.

How to Connect a Printer via USB on Linux

USB printing is the simplest path. Plug the cable in, turn on the printer, and CUPS usually detects it within seconds. I have set up dozens of USB printers this way and it rarely fails. Here is how to verify the connection on each distro.

fosslinux@ubuntu:~$ lsusb | grep -i printer
Bus 001 Device 003: ID 04f9:02ce Brother Industries, Ltd HL-L2370DW

fosslinux@ubuntu:~$ lpinfo -v
direct usb://Brother/HL-L2370DW?...

The lsusb command shows the USB device is recognized. The lpinfo -v command confirms CUPS sees it as a printable destination. If you see the printer listed under direct usb://, it is ready to add.

If the printer does not appear, check that the kernel module is loaded. Most Brother, HP, and Epson printers use the generic usblp driver, which is part of every modern Linux kernel.

fosslinux@ubuntu:~$ lsmod | grep usblp
usblp                  28672  0

How to Discover Network Printers on Linux

Network printers are discovered through Avahi (the Linux implementation of mDNS/Bonjour). If your printer is on the same Wi-Fi network and supports AirPrint or IPP Everywhere, CUPS finds it automatically. I prefer network printing over USB because it lets every device on the network share the same printer.

fosslinux@ubuntu:~$ lpinfo -v
network https
network ipps
network beh
network lpd
network socket
network ipp
network http
direct hp
direct hpfax

The network ipp and network ipps backends handle most modern network printers. The network socket backend handles older printers that use the raw JetDirect protocol. If your printer supports AirPrint, CUPS will discover it without any manual configuration.

To manually add a network printer by IP address, use the lpadmin command:

fosslinux@ubuntu:~$ sudo lpadmin -p OfficePrinter -v ipp://192.168.1.232/ipp/print -m everywhere -E

The -m everywhere flag tells CUPS to use driverless IPP printing. This works for any printer that advertises IPP Everywhere or AirPrint support. No driver installation required.

How to Add a Printer Using the CUPS Web Interface

The CUPS web interface at is the most visual way to add and configure printers. Open it in any browser on your Linux desktop.

Before you can add printers, your user must be in the lpadmin group. On Ubuntu, check with:

fosslinux@ubuntu:~$ groups fosslinux
fosslinux : fosslinux adm cdrom sudo dip plugdev users lpadmin lxd

On Fedora and Arch, the admin group is wheel instead:

fosslinux@fedora:~$ groups fosslinux
fosslinux : fosslinux wheel

fosslinux@archlinux:~$ groups fosslinux
fosslinux : fosslinux wheel docker

If your user is not in the correct group, add yourself and log out:

fosslinux@ubuntu:~$ sudo usermod -aG lpadmin fosslinux

On Fedora or Arch:

fosslinux@fedora:~$ sudo usermod -aG wheel fosslinux

After logging back in, navigate to , click “Administration,” then “Add Printer.” The wizard will list both USB and network printers that CUPS has detected.

How to Add a Printer from the Command Line

The command line is faster once you know the syntax. The lpadmin command handles all printer types.

For a network printer using driverless IPP:

fosslinux@ubuntu:~$ sudo lpadmin -p NetworkPrinter -v ipp://192.168.1.232/ipp/print -m everywhere -E

For a USB printer:

fosslinux@ubuntu:~$ sudo lpadmin -p USBPrinter -v "usb://Brother/HL-L2370DW" -m everywhere -E

The -E flag enables the printer immediately. The -m everywhere flag uses driverless printing. If your printer requires a specific driver, replace -m everywhere with the PPD name from lpinfo -m.

To remove a printer:

fosslinux@ubuntu:~$ sudo lpadmin -x NetworkPrinter

Essential Print Commands Every Linux User Should Know

These five commands cover everyday printing task from the terminal. I use them constantly and they work identically across Ubuntu, Fedora, and Arch. Once you memorize these five, you will never need to open the CUPS web interface for routine printing.

Command Purpose Example
lp Print a file lp document.pdf
lpr Print (BSD-style) lpr document.pdf
lpstat -p Show printer status lpstat -p
lpstat -o Show pending jobs lpstat -o
cancel Cancel a print job cancel -a

To print a specific number of copies:

fosslinux@ubuntu:~$ lp -n 3 document.pdf

To print to a specific printer:

fosslinux@ubuntu:~$ lp -d OfficePrinter document.pdf

To check what printers are available:

fosslinux@ubuntu:~$ lpstat -p
printer OfficePrinter is idle.

fosslinux@ubuntu:~$ lpstat -s
system default destination: OfficePrinter

Pro Tip: The three most useful commands for daily printer triage are lpstat -p (check if printers are idle), lpstat -o (see pending jobs), and cancel -a (nuke everything stuck in the queue). Memorize these three and you will handle 90% of printing issues without opening a browser.

How to Set and Manage Default Printers on Linux

When you have multiple printers configured, CUPS needs to know which one to use by default. The lpoptions command manages this.

To see the current default:

fosslinux@ubuntu:~$ lpoptions -d
system default destination: OfficePrinter

To change the default printer:

fosslinux@ubuntu:~$ lpoptions -d HomePrinter

To list all configured printers and their options:

fosslinux@ubuntu:~$ lpstat -p -d
printer OfficePrinter is idle.
printer HomePrinter is idle.
system default destination: OfficePrinter

On GNOME desktops, you can also set the default through Settings, Printers. On KDE, use System Settings, Printers. Both GUI tools write the same CUPS configuration that lpoptions manages.

How to Manage the Print Queue on Linux

Print jobs get stuck. It happens to everyone. The CUPS queue holds jobs until the printer processes them, and sometimes a corrupted document or a network hiccup causes a jam that blocks everything behind it. I have seen a single corrupted PDF freeze an entire office queue for an hour before someone knew the right command to clear it.

To see what is in the queue:

fosslinux@ubuntu:~$ lpstat -o
OfficePrinter-123  fosslinux  1024  Wed Jul  3 12:00:00 2026
OfficePrinter-124  fosslinux   512  Wed Jul  3 12:01:00 2026

To cancel a specific job by ID:

fosslinux@ubuntu:~$ cancel OfficePrinter-123

To cancel all jobs for all printers:

fosslinux@ubuntu:~$ cancel -a

To pause and resume a printer (useful when you need to stop the queue without canceling jobs):

fosslinux@ubuntu:~$ sudo cupsdisable OfficePrinter
fosslinux@ubuntu:~$ sudo cupsenable OfficePrinter

To move a stuck job from one printer to another (for example, if one printer is offline):

fosslinux@ubuntu:~$ sudo lpmove OfficePrinter-123 HomePrinter

Why It Matters: A stuck print job does not just waste paper. It holds up every job behind it in the queue. If you share a printer in an office and someone prints a corrupted 200-page PDF, nobody else can print until you clear it. Knowing cancel -a and lpmove is the difference between a 10-second fix and a 10-minute panic.

Printer Drivers: HPLIP, Gutenprint, and Driverless Printing

The driver landscape in 2026 has three tiers: driverless (works for most printers), manufacturer-specific (for full-feature support), and generic PostScript (fallback for older hardware).

Driverless Printing (IPP Everywhere)

Driverless printing is the default for any printer manufactured after 2018 that supports IPP Everywhere or AirPrint. CUPS identifies the printer, queries its capabilities, and sends print jobs using a universal format. No driver installation required. This is what -m everywhere uses.

HPLIP for HP Printers

If you own an HP printer and want full functionality (ink level monitoring, scanning, fax), HPLIP is the best option. For a complete HPLIP installation guide covering Ubuntu, Linux Mint, and elementary OS, see our HP Printer Drivers Guide.

The short version: install hplip and hplip-gui from your package manager, then run hp-setup to configure the printer through a graphical wizard.

Gutenprint for Epson, Canon, and Brother

Gutenprint provides over 1,300 printer drivers for manufacturers including Epson, Canon, and Brother. It is maintained by OpenPrinting and available in all three distro repositories.

fosslinux@ubuntu:~$ sudo apt install -y gutenprint
fosslinux@fedora:~$ sudo dnf install -y gutenprint
fosslinux@archlinux:~$ sudo pacman -S --noconfirm gutenprint

Once installed, Gutenprint drivers appear in the CUPS web interface under “Orphaned PPDs” or as additional model options when adding a printer.

Brother Printers

Brother provides proprietary Linux drivers for their laser and inkjet printers. Download the .deb or .rpm packages from support.brother.com and install them with your package manager. Brother printers that support AirPrint also work with driverless printing, but the proprietary drivers give you access to duplex settings and toner monitoring.

How to Share Printers on Your Local Network

If you want other computers on your network to print through your Linux machine, you need to enable printer sharing in CUPS.

fosslinux@ubuntu:~$ sudo cupsctl --share-printers

This broadcasts your printers via mDNS so other machines on the network can discover them. For more granular control, edit /etc/cups/cupsd.conf and add BrowsePoll directives to pull printers from another print server.

For a complete guide to securing a shared CUPS print server with remote administration, see our CUPS Print Server Setup Guide.

How to Print from iPhone or iPad to Linux (AirPrint)

AirPrint works on Linux through CUPS and Avahi. If CUPS is running and your printer supports AirPrint, your iPhone or iPad can print to it automatically. No configuration needed on the iOS device.

Verify Avahi is running:

fosslinux@ubuntu:~$ systemctl status avahi-daemon --no-pager | head -3
�:� avahi-daemon.service - Avahi mDNS/DNS-SD Stack
     Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service; enabled)
     Active: active (running) since Wed Jul  3 10:00:00 EDT; 2h ago

On the same Wi-Fi network, open any app on your iPhone that supports printing (Safari, Photos, Notes), tap the Share button, and select “Print.” Your Linux-connected printer should appear in the printer list.

Worth Knowing: AirPrint requires three things: CUPS running on the Linux machine, Avahi broadcasting the printer via mDNS, and the printer supporting IPP Everywhere or AirPrint natively. If any of these three pieces is missing, your iPhone will not see the printer. The most common failure is a firewall blocking mDNS (UDP port 5353). On Ubuntu, check with sudo ufw status and ensure mDNS is allowed.

How to Scan Documents Using SANE on Linux

SANE (Scanner Access Now Easy) is the standard scanning framework on Linux. If you have a multifunction printer with a scanner, SANE likely already supports it.

Install the scanning utilities:

fosslinux@ubuntu:~$ sudo apt install -y sane-utils
fosslinux@fedora:~$ sudo dnf install -y sane-utils
fosslinux@archlinux:~$ sudo pacman -S --noconfirm sane

Detect your scanner:

fosslinux@ubuntu:~$ sane-find-scanner
  # USB scanner detected: Brother HL-L2370DW at libusb:001:003

Scan to a file:

fosslinux@ubuntu:~$ scanimage --format=png --output-file=scan.png

For a graphical scanning experience, install Simple Scan (called Document Scanner on GNOME):

fosslinux@ubuntu:~$ sudo apt install -y simple-scan

HP multifunction printers get full scanning support through HPLIP. For the complete setup, see our HP Printer Drivers Guide.

Troubleshooting: Printer Not Found on Linux

The “printer not found” error has a short list of causes. I have debugged this exact issue on three different distros this month alone. Work through this decision tree to find the fix.

Step 1: Is CUPS running?

fosslinux@ubuntu:~$ systemctl status cups --no-pager | head -3
�:� cups.service - CUPS Scheduler
     Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled)
     Active: active (running)

If CUPS is not running, start it: sudo systemctl start cups

Step 2: Is the printer detected?

fosslinux@ubuntu:~$ lpinfo -v | grep -i usb
direct usb://Brother/HL-L2370DW?...

If no USB printers appear, check lsusb to confirm the kernel sees the device.

Step 3: Is the printer added to CUPS?

fosslinux@ubuntu:~$ lpstat -p
printer OfficePrinter is idle.

If no printers appear in lpstat -p, you need to add one using the web interface or lpadmin.

Step 4: Is the firewall blocking discovery?

fosslinux@ubuntu:~$ sudo ufw status | grep 631
631/tcp                   ALLOW       Anywhere

For network printers, ensure CUPS port 631 and mDNS port 5353 are not blocked by your firewall.

CUPS vs Printer-Specific Tools: Which Should You Use?

The answer depends on what you need from your printer. I have learned this through years of trial and error with different hardware.

Scenario Best Option Why
Basic text printing CUPS (driverless) No setup, works immediately
HP printer with scanning HPLIP + CUPS Ink levels, scanning, maintenance
Epson/Canon photo printing Gutenprint + CUPS Color profiles, paper types
Brother laser printer Brother driver + CUPS Duplex, toner monitoring
Network printer sharing CUPS server mode Central print management
iPhone/AirPrint CUPS + Avahi Native iOS printing

In most cases, I recommend starting with CUPS driverless printing. If you need features that driverless does not provide (scanning, ink monitoring, advanced paper handling), install the manufacturer-specific driver as an addition, not a replacement.

FAQ

Q: Do I need to install CUPS on Ubuntu?
A: Ubuntu 26.04 includes CUPS by default. You only need to install it explicitly on minimal installs. The cups-client package provides the command-line tools if they are missing.

Q: Why does Fedora show CUPS as “disabled” when it is running?
A: Fedora uses systemd socket activation. CUPS starts on demand when a print request arrives, so it appears disabled in systemctl status but is actually active.

Q: Can I print from my phone to a Linux-connected printer?
A: Yes. If your printer supports AirPrint and CUPS plus Avahi are running on your Linux machine, your phone can print to it over Wi-Fi without any additional apps.

Q: What if my printer is not detected by CUPS?
A: Run lsusb to confirm the kernel sees the device. If it does, check that the usblp kernel module is loaded. For network printers, verify Avahi is running and the firewall allows mDNS.

Q: How do I clear a stuck print job?
A: Use cancel -a to clear all jobs. For a specific job, use cancel [job-id] where the job ID comes from lpstat -o.

Conclusion

Linux printing in 2026 is more reliable than it has ever been. CUPS handles the architecture, driverless IPP handles most printers, and the command-line tools give you full control when the GUI falls short. Whether you are on Ubuntu, Fedora, or Arch, the workflow is the same: install CUPS, add your printer, and print. I have been using this exact workflow on my personal machines for years and it has never let me down.

The commands in this article were verified on live VMs running Ubuntu 26.04, Fedora 44, and Arch Linux in July 2026. If you hit a specific issue that this guide does not cover, leave a comment and I will help you work through it.

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *