I'm a Decade Late to the Printing Game

Post at — Jun 01, 2022

Why was I never told about IPP Everywhere?!!!

So, I was going to write a post about how finding printer drivers that work with FreeBSD is a pain and how I was eventually able to get my printer working by using a Linux printer driver with FreeBSD’s Linux syscall emulation and CUPS.

Then, I ran into conflicts with the printer driver I downloaded and the Linux compat libraries I was using on my desktop. Essentially, it boiled down to me using an Ubuntu compat filesystem (for Chrome) instead of CentOS which the Linux printer driver assumed. A simple hack would’ve been to copy the Linux glibc to a location the printer driver expected but simple hacks often turn into long term management headaches so I started looking for a different solution.

Thus I fired up up my favorite jail management software to create a jail to host CUPS and the printer driver in its own space. While bastille was doing its thing creating a new jail, a question popped into my head:

“Wait a sec, how does my iDevice print without installing a driver?”

A quick duck duck go search revealed a technology that’s been around since 2010 that makes life easier for us folk that run non-mainstream operating systems: AirPrint / IPP Everywhere

Airprint / IPP Everywhere essentially allows any device to send a device agnostic document (PWG Raster Format) of whatever you’d like to print to your printer and it… just prints. Magic! (As you can guess, I’m not that well versed in printer technology nomenclature.)

I discovered the printer that I bought a good five years ago or so supports IPP Everywhere and I was off to the races. The CUPS IPP Everywhere driver comes with the default cups-filters package and requires ghostscript to function. I only needed a few packages to get it working:

1
pkg install cups cups-filters ghostscript9-agpl-base

Searching the web will tell you if your printer supports IPP Everywhere. If it does, you may be able to avoid the printer driver dance on FreeBSD by selecting Generic as the make of your printer driver and Generic IPP Everywhere Printer as the model. Like in the following image:

Generic Driver

I now have my BSD laptops and desktop printing without too much trouble. I haven’t run into any issues with unsupported document formats yet but frankly I don’t print that often so your millage may vary.

Happy Printing!