From Wikipedia, the free encyclopedia

For other articles with a similar title, seeCup (disambiguation).

relies too much onreferencestoprimary sources

Please improve this by addingsecondary or tertiary sources.

(Learn how and when to remove this template message)

Michael SweetEasy Software Products)

CUPS(formerly anacronymforCommon UNIX Printing System) is a modularprintingsystem forUnix-likecomputeroperating systemswhich allows a computer to act as aprint server. A computer running CUPS is ahostthat can accept print jobs fromclientcomputers, process them, and send them to the appropriate printer.

CUPS consists of aprint spoolerand scheduler, a filter system that converts the print data to a format that the printer will understand, and a backend system that sends this data to the print device. CUPS uses theInternet Printing Protocol(IPP) as the basis for managingprint jobsandqueues. It also provides the traditionalcommand line interfacesfor theSystem VandBerkeleyprint systems, and provides support for the Berkeley print systemsLine Printer Daemon protocoland limited support for theserver message block(SMB) protocol. System administrators can configure thedevice driverswhich CUPS supplies by editing text files in AdobesPostScript Printer Description(PPD) format. There are a number of user interfaces for different platforms that can configure CUPS, and it has a built-in web-based interface. CUPS isfree software, provided under theApache License.

Michael Sweet, who ownedEasy Software Products, started developing CUPS in 1997 and the first public betas appeared in 1999.[3][4]The original design of CUPS used theLPDprotocol, but due to limitations in LPD and vendor incompatibilities, theInternet Printing Protocol(IPP) was chosen instead. CUPS was quickly adopted as the default printing system for mostLinux distributions. In March 2002,Apple Inc.adopted CUPS as the printing system forMac OS X10.2.[5]In February 2007,Apple Inc.hired chief developer Michael Sweet and purchased the CUPS source code.[6]

CUPS provides a mechanism that allows print jobs to be sent to printers in a standard fashion. The print-data goes to ascheduler[7]which sends jobs to afilter systemthat converts the print job into a format the printer will understand.[8]The filter system then passes the data on to abackenda special filter that sends print data to a device or network connection.[9]The system makes extensive use ofPostScriptandrasterizationof data to convert the data into a format suitable for the destination printer.

CUPS offers a standard and modularised printing system that can process numerous data formats on the print server. Before CUPS, it was difficult to find a standard printer management system that would accommodate the very wide variety of printers on the market using their own printer languages and formats. For instance, the System V and Berkeley printing systems were largely incompatible with each other, and they required complicated scripts and workarounds to convert the programs data format to a printable format. They often could not detect the file format that was being sent to the printer and thus could not automatically and correctly convert the data stream. Additionally, data conversion was performed on individual workstations rather than a central server.

CUPS allows printer manufacturers and printer-driver developers to more easily create drivers that work natively on the print server. Processing occurs on the server, allowing for easier network-based printing than with other Unix printing systems. WithSambainstalled, users can address printers on remote Windows computers, and generic PostScript drivers can be used for printing across the network.

The CUPS scheduler implementsInternet Printing Protocol(IPP) over HTTP/1.1. A helper application (cups-lpd) convertsLine Printer Daemon protocol(LPD) requests to IPP. The scheduler also provides a web-based interface for managing print jobs, the configuration of the server, and for documentation about CUPS itself.[7]

Anauthorizationmodule controls which IPP and HTTP messages can pass through the system.[10]Once the IPP/HTTP packets are authorized they are sent to theclientmodule, which listens for and processes incoming connections. The client module is also responsible for executing externalCGIprograms as needed to support web-based printers, classes, and job status monitoring and administration.[11]Once this module has processed its requests, it sends them to theIPPmodule which performsUniform Resource Identifier(URI) validation to prevent a client from sidestepping anyaccess controlsorauthenticationon the HTTP server.[12]The URI is a textstringthat indicates a name or address that can be used to refer to an abstract or physical resource on a network.

The scheduler allows for classes of printers. Applications can send requests to groups of printers in a class, allowing the scheduler to direct the job to the first available printer in that class.[13]Ajobsmodule manages print jobs, sending them to the filter and backend processes for final conversion and printing, and monitoring the status messages from those processes.[14]

The CUPS scheduler utilizes aconfigurationmodule, which parses configuration files, initializes CUPSdata structures, and starts and stops the CUPS program. The configuration module will stop CUPS services during configuration file processing and then restart the service when processing is complete.[15]

Aloggingmodule handles the logging of scheduler events for access, error, and pagelog files. Themainmodule handles timeouts and dispatch of I/O requests for client connections, watching forsignals, handling child process errors and exits, and reloading the server configuration files as needed.[16]

Other modules used by the scheduler include:

module, which handles aMultipurpose Internet Mail Extensions(MIME) type and conversion database used in the filtering process that converts print data to a format suitable for a print device;

module that handles a list ofPostscript Printer Description(PPD) files;

module that manages a list of devices that are available in the system;

module that handles printers and PPDs within CUPS.

CUPS allows users to send different data to the CUPS server and have that data converted into a format the printer will understand and be able to print

CUPS can process a variety of data formats on the print server. It converts the print-job data into the final language/format of the printer via a series offilters.[21][22]It usesMIME typesfor identifying file formats.

After the CUPS system has assigned the print job to the scheduler, it is passed to the CUPS filter system. This converts the data to a format suitable for the printer. During start-up, the CUPS daemon loads two MIME databases:mime.typesthat defines the known file types that CUPS can accept data for, andthat defines the programs that process each particular MIME type.[23]

mimetype [file-extensions] [pattern-match]

For example, to detect anHTMLfile, the following entry would be applicable:

The second line matches the file contents to the specified MIME type by determining that the first kilobyte of text in the file holds printable characters and that those characters include html markup. If the pattern above matches, then the filter system would mark the file as the MIME type text/html.[24]

Thesourcefield designates the MIME type that is determined by looking up themime.typesfile, while thedestinationfield lists the type of output requested and determines what program should be used. This is also retrieved frommime.types. Thecostfield assists in the selection of sets of filters when converting a file. The last field,program, determines which filter program to use to perform the data conversion.[25]

text/plain application/postscript 50 texttops application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster image/* application/vnd.cups-postscript 50 imagetops image/* application/vnd.cups-raster
50 imagetoraster

The filtering process works by taking input data pre-formatted with six arguments:

It then determines the type of data that is being input and the filter to be used through the use of the MIME databases; for instance, image data will be detected and processed through a particular filter, and HTML data detected and processed through another filter.

CUPS can convert supplied data either intoPostScriptdata or directly into raster data. If it is converted into PostScript data an additional filter is applied called aprefilter, which runs the PostScript data through another PostScript converter so that it can add printer specific options like selecting page ranges to print, settingn-up mode and other device-specific things.[26]After the pre-filtering is done, the data can either be sent directly to a CUPSbackendif using a PostScript printer, or it can be passed to another filter Alternatively, it can be passed toGhostscript, which converts the PostScript into an intermediaryCUPS-rasterformat.[27]The intermediary raster format is then passed onto a final filter which converts the raster data to a printer-specific format. The default filters included with CUPS include:

raster toESC/PorESC/P2(anEpsonprinter language, now largely superseded by their new ESC/P-Raster format)

raster toDymo(another printer company).

raster to Zebra Programming Language or ZPL (aZebra Technologiesprinter language)

As of 2009[update]other proprietary languages like GDI or SPL (Samsung Printer Language) are supported by Splix, a raster to SPL translator.[28]

However, several other alternatives can integrate with CUPS.HPLIP(previously known as HP-IJS) provides Linux+CUPS drivers for HP printers,Gutenprint(previously known as Gimp-Print) is a range of high-quality printer drivers for (mostly) inkjet printers, andTurboPrintfor Linux has another range of quality printer drivers for a wide range of printers.

The backends are the ways in which CUPS sends data to printers. There are several backends available for CUPS:parallelserial, andUSBports, cups-pdf[29]PDF Virtual Printing, as well as network backends that operate via theIPPJetDirect(AppSocket),Line Printer Daemon(LPD), and.

A newmdnsbackend in CUPS 1.4 providesBonjourDNS-SD) based printer discovery.[30]In CUPS 1.6, Bonjour printer discovery and sharing usingAvahiis also supported.[31]

CUPS provides both the System V and Berkeley printing commands, so users can continue with traditional commands for printing via CUPS. CUPS uses port 631 (TCP and UDP), which is the standard IPP port, and optionally on port 515 byinetdlaunchd, the, orxinetdwhich use the cups-lpd helper program to support LPD printing. When CUPS is installed thelpSystem V printing systemcommand and thelprBerkeley printing systemcommands are installed as compatible programs. This allows a standard interface to CUPS and allows maximum compatibility with existing applications that rely on these printing systems.

Several tools exist to help set up CUPS.

On all platforms, CUPS has a web-based administration interface that runs on.[32]It particularly helps organisations that need to monitor print jobs and add print queues and printers remotely.

CUPS 1.0 provided a simple class, job, and printer-monitoring interface for web browsers.

CUPS 1.1 replaced this interface with an enhanced administration interface that allows users to add, modify, delete, configure, and control classes, jobs, and printers.

CUPS 1.2 and later provide a revamped web interface which features improved readability and design, support for automatically discovered printers, and a better access to system logs and advanced settings.

TheGNOMECUPS Manager can add new CUPS printers and manage CUPS printers and queues.[33]

GNOMEsincluded integrated printing support based on CUPS in its version 2.10, released in 2006.

InUbuntuit can be accessed in the graphical menu at System / Administration / Printing.

The KDEPrint framework forKDEcontains variousGUI-tools that act as CUPSfront-endsand allows the administration of classes, print queues and print jobs; it includes a printer wizard to assist with adding new printers amongst other features.[34]KDEPrint first appeared in KDE 2.2.

KDEPrint supports several different printing platforms, with CUPS one of the best-supported. It replaced a previous version of printing support in KDE,qtcupsand is backwards compatible with this module of KDE. As of 2009[update]kprinter, adialogue-boxprogram, serves as the main tool for sending jobs to the print device; it can also be started from thecommand line. KDEPrint includes a system to pre-filter any jobs before they are handed over to CUPS, or to handle jobs all on its own, such as converting files toPDF. These filters are described by a pair of Desktop/XMLfiles.

a Print Dialog box, which allows printer properties to be modified

a Print Manager, which allows management of printers, such as adding and removing printers, through an Add Printer Wizard

a Job Viewer/Manager, which manages printer jobs, such as hold/release, cancel and move to another printer

a CUPS configuration module (integrated into KDE)

In Mac OS X 10.5, printers are configured in the Print & Fax panel inSystem Preferences, and in printer proxy applications which display the print queues and allow additional configuration after printers are set up. Earlier versions of Mac OS X also included aPrinter Setup Utility, which supplied configuration options missing from earlier versions of the Print & Fax preference pane.[citation needed]

The PrinterSetup system can manage CUPS queues. It takes the approach of assigning a text file to describe each print queue. These PrinterSetupFiles may then be added to other text files called PrinterSetupLists. This allows logical grouping of printers. As of 2009[update]the PrinterSetup project remains in its infancy.[35]

Starting with Red Hat Linux 9, Red Hat provided an integrated print manager based on CUPS and integrated intoGNOME. This allowed adding printers via a user interface similar to the oneMicrosoft Windowsuses, where a new printer could be added using anadd new printer wizard, along with changing default printer-properties in a window containing a list of installed printers. Jobs could also be started and stopped using a print manager and the printer could be paused using acontext menuthat pops up when the printer icon is right-clicked.

Eric Raymondcriticised this system in his pieceThe Luxury of Ignorance. Raymond had attempted to install CUPS using the Fedora Core 1 print manager but found it non-intuitive; he criticised the interface designers for not designing with the users point-of-view in mind. He found the idea of printer queues was not obvious because users create queues on their local computer but these queues are actually created on the CUPS server.

He also found the plethora of queue type options confusing as he could choose from between networked CUPS (IPP), networked Unix (LPD), networked Windows (SMB), networked Novell (NCP) or networkedJetDirect. He found the help file singularly unhelpful and largely irrelevant to a users needs. Raymond used CUPS as a general topic to show that user interface design on Linux desktops needs rethinking and more careful design. He stated:[36]

The meta-problem here is that the configuration wizard does all the approved rituals (GUI with standardized clicky buttons, help popping up in a browser, etc. etc.) but doesnt have the central attribute these are supposed to achieve: discoverability. That is, the quality that every point in the interface has prompts and actions attached to it from which you can learn what to do next. Does your project have this quality?

Easy Software Products, the original creators of CUPS, created a GUI, provided support for many printers and implemented a PostScriptRIP. ESP Print Pro ran on Windows, UNIX and Linux, but is no longer available and support for this product ended on December 31, 2007.[3

CUPS was initially called The Common UNIX Printing System. This name was shortened to just CUPS beginning with CUPS 1.4 due to legal concerns with the UNIX trademark.[38]

Releases – cups/releasesArchivedfrom the original on March 10, 2017

CUPS Software License Agreement. License Exceptions.Archivedfrom the original on November 10, 2017

Sweet, Michael (June 9, 1999).A Bright New Future for Printing on Linux.

.Archivedfrom the original on October 5, 2007.

Sweet, Michael (June 11, 1999).The Future Brightens for Linux Printing.

.Archivedfrom the original on January 8, 2005.

CUPS Licensed for Use in Apple Operating Systems!.

(press release). March 1, 2002.Archivedfrom the original on December 8, 2015.

CUPS Purchased by Apple Incpress release). CUPS. July 11, 2007.Archivedfrom the original on March 31, 2014.

. Scheduler. Archived fromthe originalon February 2, 2007

. Filters. Archived fromthe originalon February 2, 2007

. Backend. Archived fromthe originalon February 2, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 10, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 6, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 6, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 6, 2007

. CUPS Software Design. Archived fromthe originalon January 10, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 6, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 6, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 6, 2007

. CUPS Software Administrators Manual. Archived fromthe originalon January 10, 2007

The MIME type for the CUPS raster format is application/vnd.cups-raster.

Debian – Details of package cups-pdf in wheezyArchivedfrom the original on May 1, 2015.

Whats New in CUPS 1.4. Archived fromthe originalon November 2, 2012.

Whats New in CUPS 1.6. Archived fromthe originalon October 4, 2012.

Managing Printers from the Web. CUPS Software Administrators Manual. Archived fromthe originalon December 25, 2004.

gnome-cups-manager. Archived fromthe originalon September 15, 2014. Webmaster (n.d.).KDEPrint Homepage. Archived fromthe originalon May 9, 2008

Printer Setup is in a prototyping phase.

. Archived fromthe originalon August 28, 2008.

The Luxury of Ignorance: An Open-Source Horror StoryArchivedfrom the original on May 28, 2010.

Easy Software Products ESP Print Pro. Archived fromthe originalon June 19, 2009.

CUPS Presentation at 2012 Open Printing Summit

from the original on February 14, 2017.

Design of CUPS Filtering System including the context for Mac OS X (Jaguar).

. KDE-printing website. Retrieved January 14, 2005.

How to Manage Printers in Linux,, 2015-04-27.

Universal Plug and Play Printer Device V 1.0 and Printer Basic Service V 1.0

Alternative terms for free software

Comparison of open-source and closed-source software

Comparison of source code hosting facilities

Comparison of free and open-source software licenses

Microsoft Open Specification Promise

Articles lacking reliable references from May 2011

All articles lacking reliable references

Articles containing potentially dated statements from 2009

All articles containing potentially dated statements

All articles with unsourced statements

Articles with unsourced statements from August 2009

This page was last edited on 16 November 2017, at 18:16.

Text is available under the; additional terms may apply. By using this site, you agree to theTerms of UseandPrivacy Policy. Wikipedia® is a registered trademark of theWikimedia Foundation, Inc., a non-profit organization.