cups
2.4.2
About: CUPS (The Common UNIX Printing System) provides a portable printing layer for UNIX operating systems using Internet Printing Protocol (IETF-IPP) as basis for managing print jobs and queues. LPD and SMB and AppSocket protocols are supported with reduced functionality. Note: Apple maintains a separate repository for the CUPS that ships with macOS and iOS at https://github.com/apple/cups.
![]() ![]() |
OpenPrinting CUPS is the most current version of CUPS, a standards-based, open source printing system for Linux® and other Unix®-like operating systems. CUPS supports printing to:
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. See the files
LICENSE
and NOTICE
for more information.
Note: Apple maintains a separate repository for the CUPS that ships with macOS and iOS at https://github.com/apple/cups.
Initial documentation to get you started is provided in the root directory of the CUPS sources:
CHANGES.md
: A list of changes in the current major
release of CUPS.CONTRIBUTING.md
: Guidelines for contributing to the
CUPS project.CREDITS.md
: A list of past contributors to the CUPS
project.DEVELOPING.md
: Guidelines for developing code for the
CUPS project.INSTALL.md
: Instructions for building and installing
CUPS.LICENSE
: The CUPS license agreement (Apache 2.0).NOTICE
: Copyright notices and exceptions to the CUPS
license agreement.README.md
: This file.Once you have installed the software you can access the documentation
(and a bunch of other stuff) online at http://localhost:631/ and using the
man
command, for example man cups
.
If you're having trouble getting that far, the documentation is
located under the doc/help
and man
directories.
Please read the documentation before asking questions.
In addition to the OpenPrinting CUPS home page at https://openprinting.github.io/cups, we provide a mailing list for CUPS users and developers to ask questions and discuss issues at https://linuxfoundation.groups.io/g/printing.
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
The -p
option specifies the printer name. The
-E
option enables the printer and accepts new print jobs
immediately. The -v
option specifies the device
URI for the printer, which tells CUPS how to communicate with the
printer. And the -m
option specifies the model (driver) to
use, in this case the IPP Everywhere ("everywhere") driver that is used
for AirPrint and IPP Everywhere printers as well as shared printers and
printers supported through Printer Applications.
Legacy printers are supported using PPD (PostScript Printer Description) files that describe printer capabilities and driver programs needed for each printer. CUPS includes several sample PPD files for common legacy printers:
Driver | PPD Name |
---|---|
Dymo Label Printers | drv:///sample.drv/dymo.ppd |
Intellitech Intellibar | drv:///sample.drv/intelbar.ppd |
EPSON 9-pin Series | drv:///sample.drv/epson9.ppd |
EPSON 24-pin Series | drv:///sample.drv/epson24.ppd |
Generic PCL Laser Printer | drv:///sample.drv/generpcl.ppd |
Generic PostScript Printer | drv:///sample.drv/generic.ppd |
HP DeskJet Series | drv:///sample.drv/deskjet.ppd |
HP LaserJet Series | drv:///sample.drv/laserjet.ppd |
OKIDATA 9-Pin Series | drv:///sample.drv/okidata9.ppd |
OKIDATA 24-Pin Series | drv:///sample.drv/okidat24.ppd |
Zebra CPCL Label Printer | drv:///sample.drv/zebracpl.ppd |
Zebra EPL1 Label Printer | drv:///sample.drv/zebraep1.ppd |
Zebra EPL2 Label Printer | drv:///sample.drv/zebraep2.ppd |
Zebra ZPL Label Printer | drv:///sample.drv/zebra.ppd |
The sample drivers provide basic printing capabilities, but generally do not exercise the full potential of the printers or CUPS. Other drivers provide greater printing capabilities.
You can run the lpinfo -m
command to list all of the
available drivers:
lpinfo -m
Similarly, the lpinfo -v
command lists the available
printers and their device URIs:
lpinfo -v
Once you know the device URI and driver name, add the printer using
the lpadmin
command:
lpadmin -p PRINTER-NAME -E -v "DEVICE-URI" -m DRIVER-NAME
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:
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 -oraw
or
-l
options:
lp -o raw FILENAME
lpr -l FILENAME
This will prevent the filters from misinterpreting your print file.
Copyright © 2020-2022 by OpenPrinting
Copyright © 2007-2020 by Apple Inc.
Copyright © 1997-2007 by Easy Software Products.
CUPS is provided under the terms of the Apache License, Version 2.0
with exceptions for GPL2/LGPL2 software. A copy of this license can be
found in the file LICENSE
. Additional legal information is
provided in the file NOTICE
.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.