- Saved searches
- Use saved searches to filter your results more quickly
- License
- OpenPrinting/cups
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- OpenPrinting CUPS
- Introduction
- A Brief History of CUPS
- Setting Up Printer Queues
- Printing Files
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
OpenPrinting CUPS Sources
License
OpenPrinting/cups
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Use `lpstat -l -e` in the document - its output gives easier distinction between temporary and permanent queues. Thank you Brian Potkin for suggestion!
Git stats
Files
Failed to load latest commit information.
README.md
Note: This branch is tracking a future CUPS 2.5.x feature release. Check out the «2.4.x» branch for CUPS 2.4.x.
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:
- 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. 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.
Reading the Documentation
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.
- REPORTING_ISSUES.md : Instructions what information to provide when reporting an issue.
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.
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:
Similarly, the lpinfo -v command lists the available printers and their device URIs:
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:
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-2023 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.
About
OpenPrinting CUPS Sources
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
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:
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.