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
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:
- Give the printer a fixed IP through a DHCP reservation first, because the server binds to that address.
- Start a CUPS container with Avahi/AirPrint support on your NAS or a Raspberry Pi, using
network_mode: hostso that mDNS works. - Open the CUPS web interface on port 631, add the printer over
ipp://orsocket://with that fixed IP, and pick the right driver. - 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.