Reading through some of the CUPS docs, the points quoted at the bottom of this post were relevant.

My question is how to tell what "CUPS type" your printer supports. By that I mean, there are different filters:

  • <epson.h> - Defines all of the rastertoepson driver constants.
  • <escp.h> - Defines all of the rastertoescpx driver constants.
  • <hp.h> - Defines all of the rastertohp driver constants.
  • <label.h> - Defines all of the rastertolabel driver constants.
  • <pcl.h> - Defines all of the rastertopclx driver constants.
  • <raster.defs> - Defines all of the CUPS raster format constants.

But I don't see how this connects to what a printer supports.

I understand the meaning of "raster" (as just a bitmap image), and it seems that "hp" means "Hewlett Packard" printers and epson are Epson printers, and "PCL" means "Printer Control Language", but I'm not sure what the other ones mean (escp, label). And other than hp/epson, I'm not sure how to tell if your printer is one of these. A lot of major brands are missing from the hp/epson list, wondering if these are included in the other lists in some way or place I can find online.

In addition, the docs say "Developing PostScript Printer Drivers" and "Developing Raster Printer Drivers". I don't see where PostScript is in that list above, and why there's not an explanation on developing the other drivers like "Label Printer Drivers".

In summary, my question is how to tell what type of driver your printer should use, without just letting the CUPS program figure it out for you. I'd like to know at least at a high level how to manually go from a printer to something that CUPS selects to use for that printer.

Overall, it sounds like the key difference is between PostScript and Non-PostScript, or Raster and Non-Raster, printers. So PostScript vs. Raster. But I'm not sure if there's a third in the mix, and not sure how to tell hat the printer supports.

In looking through cups/cups, I see basically:

  • ppd
  • raster
  • pwg
  • snmp
  • ipp

I think these are all various formats the printers can potentially support, so it seems like "pick one of these" somehow. It sounds like raster is all that is necessary.

Other helpful links:

When CUPS gets a job for printing, it determines the best programs (filters, printer drivers, port monitors, and backends) to convert the pages into a printable format and then runs them to actually print the job.


PostScript Printer Description ("PPD") files describe the capabilities of each printer and are used by CUPS to support printer-specific features and intelligent filtering.


A CUPS PostScript printer driver consists of a PostScript Printer Description (PPD) file that describes the features and capabilities of the device, zero or more filter programs that prepare print data for the device, and zero or more support files for color management, online help, and so forth. The PPD file includes references to all of the filters and support files used by the driver.


CUPS includes filter programs for many common formats, for example to convert Portable Document Format (PDF) files into device-independent PostScript, and then from device-independent PostScript to device-dependent PostScript. Figure 1 shows the data flow of a typical print job.

enter image description here

The optional PostScript filter can be provided to add printer-specific commands to the PostScript output that cannot be represented in the PPD file or to reorganize the output for special printer features.

The optional port monitor handles interface-specific protocol or encoding issues. For example, many PostScript printers support the Binary Communications Protocol (BCP) and Tagged Binary Communications Protocol (TBCP) to allow applications to print 8-bit ("binary") PostScript jobs. CUPS includes port monitors for BCP and TBCP, and you can supply your own port monitors as needed.

The backend handles communications with the printer, sending print data from the last filter to the printer and relaying back-channel data from the printer to the upstream filters. CUPS includes backend programs for common direct-connect interfaces and network protocols, and you can provide your own backend to support custom interfaces and protocols.


Normally a PostScript printer driver will not utilize any additional print filters.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.