Connecting iOS Devices to Fedora Linux 23 Print Servers
By Paul Graham
When I first discovered that a Raspberry Pi can easily serve as a printer server for iOS devices, I was pretty impressed with how easy it was to setup. Effectively, you install CUPS and avahi and it will nicely advertise the presence of the printer to your iOS device.
Getting this same sort of thing to work under Fedora 23 was not as easy. What I learned was that the CUPS under Fedora has not been patched to advertise what is needed for iOS devices to just recognize printers that are available. In particular, the “pdl” entry advertised by Avahi needs to include an entry with “image/urf” as one of the accepted data types. So, to have the same effect, you can use this script available on GitHub:
https://github.com/tjfontaine/airprint-generate
to generate the necessary Avahi service file. To use the script, I did need to install the “python-cups” package. Once “python-cups” was installed and I downloaded the “airprint-generate.py” script, all I had to do is run the “airprint-generate.py” script without any arguments and it detected the printers that were setup in CUPS.
Next, I placed the service definition file(s) for the printers I wanted available through Avahi in the “/etc/avahi/services” directory. I probably had to restart Avahi by running “systemctl restart avahi-daemon.service” to make sure the new configuration file for the Avahi service was being used.
I also modified “/usr/share/cups/mime/cupsfilters.convs” to include the following line:
image/urf application/pdf 100 -
Additionally, I checked that the following was in “/usr/share/cups/mime/cupsfilters.types” (which I believe it was):
image/urf urf string(0,UNIRAST<00>)
With regard to the firewall, “ipp”, “ipp-client”, and “mdns” have been opened up in addition to “samba” and “samba-client” (which probably don’t make a difference here).
I need to regenerate this from scratch, but I thought I would document this for myself and others. In the end, it is too bad that the Fedora version of CUPS doesn’t have the Debian modifications that makes serving printers to iOS devices (AirPrint) easier, but it wasn’t too hard.
(Update 8/11/2016)
I upgraded my machine to Fedora 24 weeks ago and I just noticed that the AirPrint feature stopped working. Looking at the configuration files, it looks like “/usr/share/cups/mime/cupsfilters.convs” was overwritten and my image/urf line was lost. I added the line back and restarted CUPS (“systemctl restart cups.service”) and all is working again.