Skip to content
All articlesNetwork

Using a printer without AirPrint from your iPhone anyway

Your new laser printer does not show up on your iPhone? A small CUPS print server with AirPrint fixes it, and Home Assistant shows the status.

Published
Reading time
3 min read
Level
Intermediate
Tested on HA
2026.10
Lees in het Nederlands

Your new laser printer is on the network, prints perfectly from your laptop, and is utterly invisible to your iPhone. Either it does not speak AirPrint, or it speaks about half of it. Put it on a separate IoT network on top of that and your phone has no chance at all.

Put a print server in between

A print server running CUPS and Avahi talks to the printer in its own language and then advertises it on the network as an AirPrint printer. Your phone prints to the server, and the server prints to the printer. The printer itself never needs to know any of this happened.

If you already run a NAS, a Synology for instance, a container is the easiest route:

  1. Give the printer a fixed IP through a DHCP reservation first, because the server binds to that address.
  2. Start a CUPS container with Avahi/AirPrint support on your NAS or a Raspberry Pi, using network_mode: host so that mDNS works.
  3. Open the CUPS web interface on port 631, add the printer over ipp:// or socket:// with that fixed IP, and pick the right driver.
  4. Tick Share this printer. This is the step people forget most often, and without that tick the server advertises nothing.

Within a minute the printer appears in your iPhone's print menu.

Networking

  • If the printer and server sit in different VLANs, allow traffic from the server to the printer on port 9100 (raw) or 631 (IPP).
  • The server has to be visible to your phone over mDNS. If it lives in a different VLAN from your phone, enable mDNS forwarding.

Status in Home Assistant

Now that you have a printer at a fixed address anyway, pull its status out with the Internet Printing Protocol (IPP) integration: printer status, toner level and the page counter, as far as the printer reports them. Assign the printer to the area it stands in. After that you can send a notification before the toner runs out rather than after:

- alias: Toner bijna op
  triggers:
    - trigger: numeric_state
      entity_id: sensor.printer_black_toner
      below: 10
  actions:
    - action: notify.huishouden
      data:
        title: Printer
        message: De toner is bijna op ({{ trigger.to_state.state }} %).

Frequently asked questions

Does this work for Android too? Yes. Android finds printers through the same mDNS announcements and prints to the CUPS server over IPP.

Does the print server have to be on all the time? Yes, because all your printing goes through it. If it runs on a NAS that is already on day and night, you will never notice.

Can Home Assistant print by itself? Not out of the box. The IPP integration only reads status; printing happens from your phone or computer.