Why use CUPS?


Author: Robert van den Aker (robert2 AT dds DOT nl)
Version: 2005.12.14.0

CUPS, the Common UNIX Printing System, is a modern printing system for all Unices. It's the printing system used in most (if not all) recent distributions of Linux and Mac OS X. This page lists some of the advantages offered by CUPS over the standard SME printing setup.

Print from more computers on your network, including the SME Server itself

The standard SME printing setup didn't work for me. I have a deskjet attached to my SME Server and wanted to print to it from my Mac OS 9 computer and from the SME Server itself. Printing from the Mac resulted in a single line of PostScript code being printed and the printer locking up with the print job being stuck in the print spool. Printing text files from the SME Server resulted in a single line of text being printed, the printer locking up and the job getting stuck in the spool. Lots of printers have trouble with simple text files. Some don't even accept plain text input. Others need special formatting or require that you print to a particular queue on the printer.

The problem with the standard SME printing setup is that it only has raw queues, i.e. print queues that pass the input straight to the printer. When a PostScript print job is received from an AppleTalk client (AppleTalk clients need to send PS because all printers are exported as PS printers by the AppleTalk server), it will be passed on to the printer, regardless of whether that printer actually understands PS or not. When the input is a UNIX text file, it will go straight to the printer, regardless of whether that printer interprets line feeds literally, or expects carriage returns, or locks up if it doesn't get a form feed.

Besides being able to control raw print queues like the standard SME printing setup, CUPS has the ability to filter input if it needs to. This is how I can print many types of files (text, PostScript, PDF, tiff, png, jpeg, etc.) with a simple lp or lpr command from my SME Server. It also means that my Mac can send PostScript jobs to my deskjet. Yay, I can print now.

Print to more types of printers, including SMB, AppleTalk, and PDF printers

CUPS has a modular design, for which many plugins are available. Quite a few plugins are included with CUPS, and there's a growing number of third-party plugins as well. Some of these plugins are filters: they add input filtering capabilities to the CUPS system. Examples of third-party filters are the native CUPS filters provided by the gimp-print printer driver distribution, and the foomatic-rip script from linuxprinting.org. Some of the plugins are backends: they provide the capability to print to particular printing devices (local, networked or virtual). CUPS comes with backends for printing to parallel, serial, USB, JetDirect/AppSocket, LPD, IPP, and SCSI printers, as well as the smbspool backend for printing to Windows printers through SAMBA. Available third-party backends include the backends provided by the gimp-print printer driver distribution, a Bluetooth backend, an ssh backend, a papclient backend for printing to AppleTalk printers, and the pdfdistiller backend for printing to PDF.

Manage printers and print spools through a web interface

CUPS provides a web interface where you can track and control print jobs. You can hold jobs, release them, cancel them, restart them, get statistics about the time it took to print them, who submitted them, the size of the print jobs, etc. The CUPS web interface is also the easiest way to configure your printers.

Serve Internet Printing Protocol clients

IPP, the Internet Printing Protocol, is a relatively new but widely supported standard for network printing. CUPS provides a client and server implementation for IPP/1.1, the latest version of the protocol. IPP client implementations are provided with all recent distributions of Unix, Linux, Mac OS X and Windows, and are available for download from MS for older versions of Windows.

The IPP network service is in addition to the print services offered by SAMBA and netatalk of course. The cups-lpd deamon can optionally be enabled as well to provide yet another network print service.

Automatically share printers with other Linux/Unix hosts on your network

If you have other Linux/Unix hosts on your network that use CUPS for their printing system (halfway recent systems will) and all systems are set up right, they will automatically share their printers.

Additional info

You can find more information about CUPS on the website http://www.cups.org/ and also on http://www.linuxprinting.org/.


This document is Copyright 2003-2005 by Robert van den Aker. It may be freely redistributed in its entirety provided that this copyright notice is not removed.