There is kind of a lot that goes into making AirPrint printers work, which is bad news if, like me, your printer isn’t working properly.
I recently replaced my old HP printer with a new Brother printer. I plugged the new printer into Ethernet, then logged into my router to reassign the IP address to a static one, and restarted the printer so that it would take the new address.
While I could access the printer’s web-based settings screen and print from MacOS, I could not print from iOS. When I tried, I got the “No AirPrint Printers Found” message.
AirPrint relies on mDNS, which stands for multicast DNS, and is also known as Bonjour or Zeroconf. This is the technology that gives you “.local” addresses. My understanding is that any computer can send a multicast message asking for a printer or other mDNS device by name. Multicast is like shouting into the house, the router is supposed to make sure that everyone can hear the message, and everyone that cares is listening. The target device should hear it, no matter its IP address, and then respond with another multicast message that contains its IP address. Everybody on the network can then take note of the address. The mDNS device can also advertise itself, essentially telling everyone its name and IP address without being asked, so that everyone knows it is there.
My first step was to dig through my router settings (I have a Unifi Cloud Gateway). There are plenty of things there that the router can try to do to make mDNS better, and some of them have the potential to break things. None of my changes seemed to fix anything, so I left it how it was to begin with.
My next step was to try to put the printer on WiFi instead of Ethernet, even though this shouldn’t matter because they share the same network. Annoyingly, it fixed the problem at first. But then when I changed the WiFi address to also be static, it stopped again. At this point, it felt like I had narrowed things down to static vs dynamic IP addresses, which is not very satisfying because I really would prefer a static IP address.
It also doesn’t make sense. For a dynamic IP address, the printer asks the router for an address and the router gives it one. For a static IP address configured in the router, the exact same thing happens except that the router remembers to always give the printer the same address. So why would this make a difference?
At this point, I admit that I started trying to reason it out with ChatGPT, which did a very good job of playing logician. It gave me a bunch of reasons this might not be working, none of which applied. I said, “It can’t be the printer’s fault because the printer shouldn’t see the difference between a static or a dynamic address.” But also, “It can’t be a problem with the router settings because mDNS is clearly working some of the time.” To which ChatGPT said, “You are right, it can’t be the printer’s fault or the router’s settings, so maybe just try restarting the router.” Which worked.
My theory is that the router is keeping some kind of database of which mDNS name corresponds to which IP address, and it wasn’t getting corrected when I changed the IP address of the printer to be static.