When your iPhone won't AirPrint
The symptom: an iPhone/iPad on the same Wi-Fi can’t print to your printer — it doesn’t show up, or it shows up but jobs fail — even though the printer works fine from computers. Classic with older Brother lasers (e.g. MFC-7360N) and other “host-based”/GDI printers shared through a CUPS server (Raspberry Pi, Unraid, a NAS, etc.).
The core reason: AirPrint needs a printer that speaks image/urf or PDF and advertises itself via Bonjour
(mDNS) as an AirPrint service. A host-based printer only understands its vendor’s raster format (e.g.
application/vnd.brother-hbp) — it is not a real AirPrint device, even if it advertises IPP on the network. The
working AirPrint path is your CUPS server, which converts the iPhone’s PDF/URF into the printer’s language.
Below is how to isolate the fault (printer vs. CUPS vs. network vs. iOS) in a few minutes.
Step 1 — Prove the printer + CUPS work (independent of AirPrint)
From any machine, send a job straight to the CUPS queue over IPP. If you don’t have lp/ipptool, a tiny raw-IPP
POST works too. Send both a text and a PDF job — the PDF replicates exactly what AirPrint sends:
lp -h CUPS_HOST:631 -d QUEUE_NAME sometext.txt
lp -h CUPS_HOST:631 -d QUEUE_NAME somefile.pdf
- Both print → the printer, CUPS, and the PDF→printer conversion are healthy. Your problem is iOS-side (jump to Step 4).
- Text prints, PDF fails → the CUPS raster driver can’t rasterize for this printer. Install a proper driver
(for Brother lasers,
brlaseris excellent) and re-point the queue at it.
Step 2 — Confirm it’s discovery, not the printer, when the iPhone sees nothing
Check what’s actually advertised on the LAN (run from a host on the same VLAN — mDNS is link-local):
avahi-browse -rt _ipp._tcp # basic IPP
avahi-browse -rt _universal._sub._ipp._tcp # the AirPrint sub-service (this is the one iOS needs)
Two very common findings:
- The printer advertises itself (e.g.
pdl=application/vnd.brother-hbp) but has no AirPrint sub-service / noimage/urf→ iOS can’t use it. That advertisement is a dead end and often the thing the iPhone is stuck on. - Your CUPS server advertises the AirPrint (
_universal) service withimage/urf+ PDF → that’s the one to use. Note its Bonjour name (CUPS uses the printer’s description, which can be an odd string like “Monotone W/ Scanner”).
Step 3 — Make sure CUPS is actually offering AirPrint
On the CUPS host, the queue must be shared and advertise the AirPrint formats:
lpstat -p QUEUE_NAME # exists + idle + accepting jobs
lpoptions -p QUEUE_NAME # printer-is-shared=true; document-format-supported includes image/urf, application/pdf
If not shared: cupsctl _share_printers=1 and share the printer; ensure avahi-daemon is running and advertising on
the LAN interface (a CUPS container on a Docker bridge won’t reflect mDNS to the LAN — run it host-networked or add
an mDNS reflector).
Step 4 — When discovery + printing both work but the iPhone still won’t
It’s iOS-side, and usually the duplicate advertisement biting you (the printer’s dead-end entry vs. the CUPS one):
- In the print dialog, forget/remove the saved printer.
- Reboot the iPhone (clears the Bonjour/AirPrint cache).
- Re-add and explicitly pick the CUPS/AirPrint entry — not the printer’s own name.
- Clear any stuck job in the print queue (one hung job blocks all new ones).
The permanent fix
- Disable the printer’s own IPP/Bonjour (in its web admin → Network → Services) so only the CUPS AirPrint queue is discoverable — this removes the dead-end entry iOS keeps caching.
- Optionally rename the CUPS queue’s description to something obvious like
Brother MFC-7360N (AirPrint).
Cross-VLAN note: if the iPhone is on a different VLAN than the printer, mDNS won’t cross it at all — enable your
router’s mDNS reflector/repeater between those networks (and allow the firewall path to :631). But if they’re on
the same VLAN, discovery isn’t your problem — it’s the host-based-printer / duplicate-advertisement issue above.
TL;DR: old GDI/host-based printers aren’t AirPrint printers; CUPS is what makes them AirPrint-able. Prove the CUPS PDF path works, use the CUPS Bonjour entry (not the printer’s), and kill the printer’s dead-end advertisement.
Written from a real fix: a Brother MFC-7360N (host-based, vnd.brother-hbp) shared via CUPS — PDF printed fine over
IPP, so the fault was the duplicate/dead-end Bonjour entry the iPhone kept selecting.
Written by James Brooks — I run ThatNerdKnows (IT support + websites for small businesses). This is the deep end; if you’d rather just have it handled, that’s the day job.