-README - CUPS v2.4.0 - 2021-02-16
-=================================
+OpenPrinting CUPS v2.4.0
+========================


-[](https://github.com/OpenPrinting/cups/actions)
+
-> *Note:* This version of CUPS is being maintained by the OpenPrinting
-> organization. It tracks the current Apple CUPS sources and includes common
-> changes and bug fixes for the various Linux distributions and other UNIX®-like
-> operating systems.
-
-INTRODUCTION
+Introduction
------------
-CUPS is a standards-based, open source printing system developed by Apple Inc.
-for macOS® and other UNIX®-like operating systems. CUPS uses the Internet
-Printing Protocol ("IPP") and provides System V and Berkeley command-line
-interfaces, a web interface, and a C API to manage printers and print jobs. It
-supports printing to both local (parallel, serial, USB) and networked printers,
-and printers can be shared from one computer to another, even over the Internet!
+OpenPrinting CUPS is a standards-based, open source printing system for Linux®
+and other Unix®-like operating systems. CUPS supports printing to:
+
+- [AirPrint™][1] and [IPP Everywhere™][2] 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][3] project provides additional
+filters and drivers.
-Internally, CUPS uses PostScript Printer Description ("PPD") files to describe
-printer capabilities and features and a wide variety of generic and device-
-specific programs to convert and print many types of files. Sample drivers are
-included with CUPS to support many Dymo, EPSON, HP, Intellitech, OKIDATA, and
-Zebra printers. Many more drivers are available online and (in some cases) on
-the driver CD-ROM that came with your printer.
+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.
-CUPS is licensed under the Apache License Version 2.0. See the file
-"LICENSE" for more information.
+[1]: https://support.apple.com/en-us/HT201311
+[2]: https://www.pwg.org/ipp/everywhere.html
+[3]: https://github.com/openprinting/cups-filters
-READING THE DOCUMENTATION
+
+Reading the Documentation
-------------------------
Initial documentation to get you started is provided in the root directory of
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.
+*Please read the documentation before asking questions.*
-GETTING SUPPORT AND OTHER RESOURCES
+Getting Support and Other Resources
-----------------------------------
-If you have problems, *read the documentation first!* We also provide two
-mailing lists which are available at <https://lists.cups.org/mailman/listinfo>.
-
-See the CUPS web site at <https://www.cups.org/> for other resources.
+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/cups>.
-SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER
+Setting Up Printer Queues Using Your Web Browser
------------------------------------------------
CUPS includes a web-based administration tool that allows you to manage
performing any administrative function.
-SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
+Setting Up Printer Queues From the Command-Line
-----------------------------------------------
-CUPS currently uses PPD (PostScript Printer Description) files that describe
-printer capabilities and driver programs needed for each printer. The
-`everywhere` PPD is used for nearly all modern networks printers sold since
-about 2009. For example, the following command creates a print queue for a
-printer at address "11.22.33.44":
-
- lpadmin -p printername -E -v ipp://11.22.33.44/ipp/print -m everywhere
-
-CUPS also includes several sample PPD files you can use for "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 `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
-Run the `lpinfo -v` command to list the available printers:
+Similarly, the `lpinfo -v` command lists the available printers and their device
+URIs:
lpinfo -v
-Then use the correct URI to add the printer using the `lpadmin` command:
-
- lpadmin -p printername -E -v device-uri -m ppd-name
+Once you know the device URI and driver name, add the printer using the
+`lpadmin` command:
-Current network printers typically use `ipp` or `ipps` URIS:
+ lpadmin -p PRINTER-NAME -E -v "DEVICE-URI" -m DRIVER-NAME
- lpadmin -p printername -E -v ipp://11.22.33.44/ipp/print -m everywhere
- lpadmin -p printername -E -v ipps://11.22.33.44/ipp/print -m everywhere
-Older network printers typically use `socket` or `lpd` URIs:
-
- lpadmin -p printername -E -v socket://11.22.33.44 -m ppd-name
- lpadmin -p printername -E -v lpd://11.22.33.44/ -m ppd-name
-
-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.
-
-
-PRINTING FILES
+Printing Files
--------------
CUPS provides both the System V `lp` and Berkeley `lpr` commands for printing:
- lp filename
- lpr filename
+ lp FILENAME
+ lpr FILENAME
-Both the `lp` and `lpr` commands support printing options for the driver:
+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
+ 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
+ lp -o raw FILENAME
+ lpr -l FILENAME
This will prevent the filters from misinterpreting your print file.
-LEGAL STUFF
+Legal Stuff
-----------
-Copyright © 2020-2021 by Michael R Sweet
+Copyright © 2020-2021 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