Use a Raspberry Pi you already own

Got a Pi in a drawer? It makes an excellent EZPrint host: silent, tiny, and it uses about as much power as a phone charger. Setup is one command.

Setting it up

  1. 1

    Flash Raspberry Pi OS

    Use Raspberry Pi Imager and choose Raspberry Pi OS Lite. There is no need for a desktop. Pick the 64-bit build on a Pi 3 or newer, or the 32-bit build on a Pi 2. Before writing the card, open the settings (the gear icon) and set a hostname, tick Enable SSH, create a username and password, and enter your Wi-Fi details if you are not using an Ethernet cable. Doing it here saves needing a monitor and keyboard later.

  2. 2

    Boot it and connect

    Put the card in, plug your printer into a USB port, and power it on. Give it a minute, then connect from another computer. Replace the name with whatever hostname you chose.

    ssh pi@raspberrypi.local
  3. 3

    Get a pairing code

    Open your dashboard, click Generate a pairing code, and copy it. Codes last 15 minutes and work once.

  4. 4

    Run the installer

    One command. It installs CUPS and printer drivers, a recent Node, and the EZPrint agent as a service that starts on boot, then pairs the Pi with your account.

    curl -fsSL https://ezprint.to/pi/setup.sh | sudo bash -s -- XXXX-XXXX
  5. 5

    Check your dashboard

    Your printer appears within a few seconds. Open it, copy the printer address, and add it on any computer you want to print from. Plug a different printer in later and it is picked up automatically, so there is nothing to re-run.

Prefer to read before you run? Sensible. Download the script, read it, then run it:
curl -fsSL https://ezprint.to/pi/setup.sh -o setup.sh
less setup.sh
sudo bash setup.sh XXXX-XXXX

What the installer does

Installs CUPS and a set of printer drivers, including the rules that make a USB printer appear by itself when you plug it in. Installs Node if the version on the Pi is too old. Installs the EZPrint agent from npm and registers it as a service so it comes back after a power cut. Then it locks CUPS down to local access only, so nothing on your network can reach it, and nothing needs to. It changes nothing else on the Pi and is safe to run twice.

If something goes wrong

The installer says no printers detected

CUPS creates the print queue itself when a USB printer is plugged in and switched on, but it can take a few seconds and some printers need to be power-cycled after the Pi has booted. Check what it can see:

lpstat -p
lpinfo -v
My printer is on the network, not USB

Add it to CUPS by hand, then the agent will pick it up on its next scan. Most printers made in the last decade work with the everywhere driver:

sudo lpadmin -p MyPrinter -E -v ipp://192.168.1.50/ipp/print -m everywhere
lpstat -p
I want to be sure the Pi itself can print

Worth proving before blaming EZPrint. This prints a CUPS test page directly, with nothing else involved:

lp -d YourPrinterName /usr/share/cups/data/testprint
Nothing shows up in my dashboard

Check the agent paired and can reach us, then look at what it is doing:

ezprint-agent status
sudo journalctl -u ezprint-agent -f
Will it work on my older Pi?

A Pi 2 or newer is fine, including the Pi 2, 3, Zero 2 W, 4 and 5. On a Pi 2 use the 32-bit build of Raspberry Pi OS and the installer handles the rest. A Pi 1 or the original Pi Zero will not work: they are ARMv6, which modern Node no longer supports, and no amount of patience fixes that. Check which you have with:

uname -m    # armv7l or aarch64 is fine, armv6l is not
The pairing code expired

They last 15 minutes. Generate a new one and pair without re-running the whole installer:

ezprint-agent pair NEW-CODE
sudo systemctl restart ezprint-agent
It stopped working after a reboot

The installer sets up a service that should start automatically. Confirm it is enabled:

systemctl is-enabled ezprint-agent
sudo systemctl enable --now ezprint-agent
Create a free account

One printer free forever. Still stuck? Reply to any email from us and a human will answer.