Getting CUPS installed and configured on FreeBSD has proven to be an almost absurdly simple task for me — probably in part because I’m “smart”, and tend to stick to networked PostScript laser printers rather than using chintzy bargain-priced inkjet printers. Just in case you want an article handy that discusses the matter while you do it, the freebsd.org site has one called CUPS on FreeBSD. That’ll tell you stuff like how to get CUPS to start every time you start your computer, which might be non-obvious to someone who hasn’t been using FreeBSD heavily for a while. I link it here because the FreeBSD Handbook itself focuses pretty much exclusively on LPD for some reason, and leaves us on our own with CUPS. It may have something to do with the fact that CUPS isn’t part of the Base System.

Once you’ve got CUPS installed and recognizing your printer, you might want to get some kind of stand-alone X Window System based print dialog installed. I’d love to have something with more of a text user interface instead, but I’ve been too lazy to bother with it so far, so I decided to use a lightweight GUI tool. Some people might immediately leap to whatever comes with GNOME or KDE, or choose something else fairly bloated for its relatively simple task such as GtkLP. I used GtkLP for a while, but I’m less than pleased with it. I prefer the lighter-weight XPP (installed from ports, of course), at least until I find something better.

Unfortunately, installing XPP on FreeBSD might not immediately work for you with CUPS. I’ve discovered that there’s an apparently undocumented incompatibility between XPP and a more recent standard configuration option for CUPS. I hear it’s meant to speed up printing operations for applications that make use of this configuration option, but XPP clearly isn’t one of those applications, since it prevents XPP from being able to interact with my printer at all.

The problem is the following line in the cupsd.conf file:

Listen /var/run/cups.sock

Comment it out with the # symbol at the beginning of the line and XPP will magically start working again (though you’ll have to restart the CUPS server process for it to pick up the configuration change, of course):

#Listen /var/run/cups.sock

That’s about it. Enjoy.