OpenPrinting CUPS

The current standards-based, open source printing system developed by OpenPrinting for Linux® and other Unix®-like operating systems. CUPS uses IPP Everywhere™ to support printing to local and network printers.

Introduction · History · Setting Up · Printing · Documentation Download CUPS

Introduction

CUPS supports printing to:

  • AirPrint™ and IPP Everywhere™ printers,
  • Network and local (USB) printers with Printer Applications, and
  • Network and local (USB) printers with (legacy) PPD-based printer drivers.

CUPS provides the System V ("lp") and Berkeley ("lpr") command-line interfaces, a configurable web interface, a C API, and common print filters, drivers, and backends for printing. The cups-filters project provides additional filters and drivers.

CUPS is licensed under the Apache License Version 2.0 with an exception to allow linking against GNU GPL2-only software.

A Brief History of CUPS

CUPS was originally developed by Michael R Sweet at Easy Software Products starting in 1997, with the first beta release on May 14, 1999. Not long after, Till Kamppeter started packaging CUPS for Mandrake Linux and created the Foomatic drivers for CUPS, leading the adoption of CUPS for printing on Linux. Apple licensed CUPS for macOS in 2002, and in February 2007 Apple purchased CUPS and hired Michael to continue its development as an open source project.

In December 2019, Michael left Apple to start Lakeside Robotics. In September 2020 he teamed up with the OpenPrinting developers to fork Apple CUPS to continue its development. Today Apple CUPS is the version of CUPS that is provided with macOS® and iOS® while OpenPrinting CUPS is the version of CUPS being further developed by OpenPrinting for all operating systems.

Setting Up Printer Queues

CUPS includes a web-based administration tool that allows you to manage printers, classes, and jobs on your server. Open http://localhost:631/admin/ in your browser to access the printer administration tools. You will be asked for the administration password (root or any other user in the "sys", "system", "root", "admin", or "lpadmin" group on your system) when performing any administrative function.

The "lpadmin" command is used to manage printers from the command-line. For example, the following command creates a print queue called "myprinter" for an IPP Everywhere printer at address "11.22.33.44":

lpadmin -p myprinter -E -v "ipp://11.22.33.44/ipp/print" -m everywhere

You can run the "lpinfo" command to list all of the available drivers ("lpinfo -m") or printers ("lpinfo -v").

Printing Files

CUPS provides both the System V ("lp") and Berkeley ("lpr") commands for printing:

lp filename
lpr filename

Both the "lp" and "lpr" commands support printing options for the driver:

lp -o media=A4 -o resolution=600dpi filename
lpr -o media=A4 -o resolution=600dpi filename

CUPS recognizes many types of images files as well as PDF, PostScript, and text files, so you can print those files directly rather than through an application.

If you have an application that generates output specifically for your printer then you need to use the "-o raw" or "-l" options:

lp -o raw filename
lpr -l filename

This will prevent the filters from misinterpreting your print file.  

Documentation

Getting Started

Man Pages

Programming

References