Click here for a tl;dr version that just gives you the fix without the background.
At my school, we have a fairly robust iPad program, and the decision was made, when we began to ramp up the deployment of iPads, that users should be able to print to their iPads.
Like so many of Apple’s technologies, AirPrint is one of those things that works well in a home environment but pretty quickly breaks down when taken into an enterprise environment. Sure, you could go out and buy all new printers that have AirPrint built in, but when you’ve got a dozen or more printers that you might want to have available for iPad users, that quickly becomes a very expensive proposition.
You can roll your own AirPrint solution using a Linux box running avahi, but most people and departments would rather have a pre-baked solution, and then there’s only really one option: Printopia Pro. If you’re running any sort of Bonjour gateway, such as the one built in to Cisco’s wireless access point controllers or Aerohive’s HiveManager cloud controller, you don’t even need more than one instance of the software.
And then Apple broke it all.
An engineer at the company that now develops Printopia Pro told me that for iOS 8 and OS X Yosemite, Apple moved away from a widely-used open-source mDNS discovery daemon to their own, in-house-developed daemon, and that’s where all the trouble started.
In a best-case scenario, we could maybe advertise four printers, and we often had to manually restart the Printopia Pro service when even those printers disappeared.
There is a solution that should work for most deployment cases, though.
This solution works only on networks running IPv4 and assumes that your Printopia Pro server is using a static IP address. No, I don’t know all the technical details behind the IPv4/6 portion of this fix; I could have asked, and would have been very interested to find out the answer, but I didn’t feel like I had time for a several-hour conversation at the time.
Log in to your Printopia server and open the Terminal application and run the following command
networksetup -setv6off Ethernet
Like the option says, this command turns off IPv6, which can’t be done through the GUI. Next, open Printopia’s Advanced Settings.
Under the General tab, there is a box to check that says “Publish printers using IPv4 addresses only.” Uncheck this box if it’s checked. Yes, that may seem counter-intuitive, but remember that you just turned off IPv6.
At this point, it’s worth making sure that printers are being advertised only over the Ethernet interface. For each printer group, click “Settings…”
and, under the Network Interfaces tab, select the bottom radio button and then select only your Ethernet interface.
Finally, for good measure, restart the Printopia service from the General tab. Within a minute of applying these changes, we went from seeing four printers advertised over Printopia to seeing all seven printers that we were sharing. You can check to make sure that the printers are being advertised over your network using the free Bonjour Browser application.
So far, this solution has been totally stable for us, though it’s also recommended that you update your instance of Printopia Pro to the most recent release, 184.108.40.206, which can be downloaded here.