CUPS (Common Unix Printing System) version 1.2 was released last month, bursting with over 90 fabulous new features and improvements. Today we’ll take a look at them and decide how fabulous they really are. Then for dessert, next week we’ll dig into using CUPS as a printer server on mixed Linux/Windows/Macintosh LANs.
Finally, after all these years the CUPS Web interface has gotten a much-needed overhaul. Now you can do server administration, unlike the olden days when all it could do was manage local printers. Server administration meant digging into cupsd.conf, which of course is no big deal for gnarly system administrators. But it is nice to have both.
Some of the new tasks that you can do in the Web interface are edit cupsd.conf, export printers to Samba, configure sharing, view log files, cancel all jobs on a printer, move all jobs on all printers, and move jobs to a different printer. Users can cancel or move their own print jobs on their own local printers; on remote printers, no such luck. Printers can be shared or un-shared individually; this used to be all-or-none. If your printer driver supports cleaning print heads, now you can do this from the CUPS Web. (Perhaps someday an ink level monitor will be incorporated as well.)
(Click for a larger image)
Installing locally-attached printers is a bit easier because CUPS’ auto-detection is improved. The downside is you don’t get to choose your own printer name, so you get stuck with something clunky like “hp_par_HP_LaserJet_6L.” (Figure 1.)
And there are still way too many drivers to wade through. The good news is you can easily try out different drivers until you find the best one. If the Gutenprint drivers are available in your distribution, be sure to install them because they are excellent.
Shiny New Protocols
CUPS now supports printer discovery via SNMP, supports IPv6, and SSL. The first two are self-explanatory, and require no additional work from the hardworking administrator. Why would you want to use SSL? To protect sensitive data and passwords sent over the network. CUPS even works over the Internet, which is a nice alternative to finicky fax machines with their ugly printouts.
cupsd.conf options have changed, and so has the CUPS documentation. It’s been nicely streamlined and includes all the new options. CUPS can be run completely from the command-line if you choose, and all of the command-line options are documented in a more convenient format than in the old manuals.
Nice Old Stuff
CUPS is a good network printer server. On Unix networks, which includes Linux, the BSDs, and Mac OS X, sharing is automatic once you turn on CUPS’ network browsing. CUPS installs with network sharing turned off for security. When it’s enabled your CUPS clients don’t have to do a thing, because all network-shared printers will automatically be available. (See Figure 2.)
(Click for a larger image)
CUPS also makes a nice *nix/Windows printer server, either on its own or combined with Samba. If you prefer to run servers without X Window, you may do remote administration either from the command line or the Web interface, and you can use CUPS’ own access controls to restrict access to the Web interface.
Most distributions don’t mess with CUPS and provide a stock installation. A notable exception is Ubuntu. Ubuntu foils some of this new CUPS goodness in two ways:
- Disables the CUPS Web interface without providing an adequate replacement
- Uses include files in cupsd.conf, which borks some of the Web GUI functions when you do get it working
Fortunately you’ll find instructions for re-enabling the CUPS Web interface right on the front page at http://localhost:631, which I recommend if you want to do more than run a single attached un-shared printer.
Using include files seems unnecessary. These are files that go in /etc/cups/cups.d, and are called from cupsd.conf like this:
There are a total of three lines in the two files, which can easily go in cupsd.conf. The Ubuntu-ized cupsd.conf is nicely slimmed down, so they won’t get lost. Then you can edit cupsd.conf from the Web interface and not have to bother with text files at all.
The good news is Dapper includes the Gutenprint drivers, which is nice plus.
CUPS still offers no way to determine if a printer is actually connected, powered on, and ready to print before you send a print job to it. It would be nice to know in advance, instead of waiting for the “Printer not connected; will retry in 30 seconds…” message.
There is confusion over remote and local printers. When you first open the CUPS interface, the URL is http://localhost:631/. Then when you click on a remote printer, you’re in the remote CUPS interface, with a remote URL like http://uberpc.alrac.net:631/printers/canon-pixma4200. This can get confusing when you have administration privileges on the local PC but not the remote machine, and you find yourself staring at a 403 error.
Print queues are far too persistent. Few experiences match the joy of having a big print job disappear mysteriously into the ether, only to have it pop out a week later when you don’t need it anymore, and everyone is in a hurry. I would like to have print servers empty their queues at configurable intervals. For a small shop with just a few users, hourly would work nicely. For a bigger office with a lot of printing, maybe nightly at midnight. Or maybe hourly, given how wasteful some people are who send reams of pages to the printer, then never pick them up. (You know who you are — shame! Think before you click!) No big deal if the wastrels lose a few print jobs.
Support is available via the usual user lists and forums. Easy Software Products, the developer of CUPS, supplies a commercial edition called Easy Print Pro. This comes with more drivers, management software, and support.
I have always liked CUPS. Printing on any platform, especially network printing, can drive an admin crazy. CUPS gives the admin a lot of options and flexibility. Next week we’ll learn how to take advantage of some of them.