Printer related

From Helpful
Jump to: navigation, search
These are primarily notes
It won't be complete in any sense.
It exists to contain fragments of useful information.

See also Paper sizes

Printing services/protocols

  • LPR / LPD (Line Printer Daemon, Line Printer Remote), also Berkeley printing
    • a simple printer spooling system, which can be networked
    • can be used as a line printer, and also to allow though raw data as given(verify)
    • RFC 1179
    • used on BSD and derivatives (hence the name Berkeley printing), also possible on other *nices, and windows
    • port 515
    • URL style: lpd://host/resource

  • IPP: 'Internet Printing Protocol'

  • Raw/AppSocket(/JetDirect), basically sending bytes (e.g. plain text, postscript, esc/pos for POS printers - and you have to know what is supported)
    • Historically on various network style, now often meaning TCP
    • port 9100
    • URL style: socket://host/ (verify)

CUPS notes

This article/section is a stub — probably a pile of half-sorted notes, is not well-checked so may have incorrect bits. (Feel free to ignore, fix, or tell me)

CUPS is both a "it mostly just works" printing system, and one that can be extended to do network printing.

CUPS is a pluggable filter system that can act as an interchange between many more specific things, see e.g.

Has at least basic support for a good number of printers (one way or another - can use PPDs, and you can do raw passthroughs and such if you want).

Its network stuff is built around IPP, and can be told to have LPR style commands printed to it.

There's a HTTP-based management interface (and various GUI ones that are basically interfaces to CUPS(verify)).

If you want windows-style sharing, you can compile and configure Samba to (roughly speaking) just hand things to CUPS. There are a bunch of extra things you can do there; see the samba documentation[1]


When a printer is PostScript-compatible, there is regularly a PPD (Postscript Printer Definition) for it.

These are actually text files, and describe a printer, its features, and enough of the command set to inform a printing system how to ask it to be a PostScript printer.

Printing via PPDs will not provide the more specialized features that the printer may support (the proprietary-driver stuff - think photo printing, detailed status messaging, or necessarily trays or duplex printing stuff, etc.), but that doesn't matter for a lot of networked document printing needs.

CUPS uses PPDs to support PostScript-compatible printers. There are CUPS-specific PPDs for non-postscript printers that effectively make them postscript compatible.(verify)

See e.g.

Network printing

This article/section is a stub — probably a pile of half-sorted notes, is not well-checked so may have incorrect bits. (Feel free to ignore, fix, or tell me)

Print languages / communication

This article/section is a stub — probably a pile of half-sorted notes, is not well-checked so may have incorrect bits. (Feel free to ignore, fix, or tell me)

Perhaps the most commonly supported printer formats (by printers and/or their drivers):

  • Plain text - sending plain text will lead many printers to imitate a monospace-font line printer
  • Postscript - may often be the least proprietary, easiest to implement, but does not offer any printer-specific cleverness (perhaps see also Postscript notes)
  • HP-GL is a printer control language developed for HP plotters, eventually adopted by most plotters. Hewlett-Packard printers regularly support HPGL in addition to PCL. HP-GL/2 is an extension of HP-GL (added line width, binary transfer(verify))
  • PJL (Printer Job Language, also from HP) was made for job separation, printer configuration, status readback and such. It was designed as a job manager around PCL, but has been adopted into various other printers, particularly PostScript-capable printers(verify), probably because it allows printer language switching (so is not tied to PCL). [2]
  • PCL, used by HP laserjets, other HP printers, and some other brand printers. It is/was in some ways a competitor to PostScript. [3]. Currently most relevant:
    • PCL 5
    • PCL 5e - more font features
    • PCL 5c - color support
    • PCL 6 Standard - equivalent to 5e/5c (backwards compatibility)
    • PCL 6 Enhanced (formerly PCL XL) - can be faster, a few more features(verify)


  • For others, read
  • HP-RTL (subset of PCL used for raster images in plotter files)
  • PML - (HP) Printer Managment Language, device management. Apparently mostly used by inkjets.
  • MCL (Macro Command Language, used in specific-purpose standalone-ish printers?(verify))

Ever more unsorted:

  • CaPSL - Canon Printing System Language (See also LIPS)
  • CPCA - Canon Common Peripheral Controling Architecture Developed by Canon.
  • Code V (QMS)
  • AFP - Advanced Function Printing (used on IBM Mainframes for page printers)
  • CPAP - Common Printer Access Protocol (by DEC).
  • EJL - Epson Job Language, similar to PJL
  • GDI printers - printers withy built-in support for Microsoft GDI
  • HBP - Host Based Printing, by Brother
  • HiperC - OKI HiperC
  • IPDS - Intelligent Printer Data Stream
  • LIDIL - HP Lightweight Imaging Device Interface Language
  • LPRng - LPR next generation
  • NCM (Brother Native Compression Mode)
  • NPAP - Network Printing Alliance Protocol Developed by Lexmark.
  • OJT - Océ Job Ticket Developed by Océ (Now included in the Canon Group).
  • QPDL - Quick Page Description Language (Samsung Printer Language II / QPDL)
  • OAKT (Oak Technology (now Zoran))
  • RPCS - Ricoh Refined Printing Command Stream
  • RPDL - Ricoh Page Description Language
  • SMART (Samsung SMART)
  • SPL - Samsung Printer Language (Samsung Printer Language)
  • TIP/SI - Transport Independent, Printer/System Interface Standard for Information Technology for Transport Independent Printer/Scanner Interface (IEEE Std 1284.1-1997)
  • VLink - HP VLink Part of PPA - HP Printing Performance Architecture.
  • XJCL Xerox Job Control Language (JCL).
  • ZIMF (Zenographics ZIMF)

To read:


Printer feeds multiple pages

Various paper is fairly likely to pack and stick to each other while in packaged form. To separate the pages, bend the stack and fan the pages with your thumb on the side the paper will be picked up (or both).

Printers may deal with warped and bent pages badly, and paper that has already gone through the printer may fit that description.

See also Paper_sizes#Weight.2Fsturdiness


CUPS errors

This article/section is a stub — probably a pile of half-sorted notes, is not well-checked so may have incorrect bits. (Feel free to ignore, fix, or tell me)

Administration errors:


...often shows up in the cups error log as something like:

CUPS-Add-Modify-Printer: Unauthorized 

(or for for similar actions) This means that the effective user is not a printer administrator. Do the printer administration as one of those instead.

Note: If you are working on a workstation, it may be easier to tell CUPS to simply trust everyone on the same computer. Manually doing so means editing cupsd.conf and restarting CUPS.

PCL XL Error

PCL XL errors come from use of PCL6, which seems to be relatively strict.

PCL XL error 
        Subsystem:  IMAGE
        Error:      MissingData
        Operator:   ReadImage
        Position:   15  

(Position can vary)

Seems caused by a combination of driver and print format, and seems to happen on pages with images (including PDFs made of images of text, and other cases of text printed as images).

It seems easiest to consider this a driver bug and try another driver, with the same document (page).

If using a PCL6 variant and there is also a PCL5 variant of the driver, try the PCL5 one. Depending on the driver you choose, this may just work, or be a faster-printing lower-resolution, monochrome-instead-of-color workaround, etc.

Out of memory

This article/section is a stub — probably a pile of half-sorted notes, is not well-checked so may have incorrect bits. (Feel free to ignore, fix, or tell me)

The job was contained complex things to be processed in the printer, which required more memory than available in the printer. Often seen in laser printers, and other PostScript printers.

Can be caused by

  • high DPI setting (lowering this is often the simplest, and even only way to do anything about this error)
  • fairly little memory considering the higher complexity of modern documents. Ten-year-old laserprinters can often be fitted with more memory -- but this can be fairly expensive, as the type of memory may be specific, or just not produced much anymore (e.g. EDO RAM).
  • graphics elements like overly detailed shapes, soft fonts, and such. You generally have little control over these.
  • Drivers (I've seen notes that XP's PCL drivers for (HP?) laserprinters, if present, may be slower but avoid memory errors more than the non-PCL driver, perhaps because they do more on the computer side)


Chip transfer

This article/section is a stub — probably a pile of half-sorted notes, is not well-checked so may have incorrect bits. (Feel free to ignore, fix, or tell me)

If you take them from an original cartridge, cut out wider pieces of plastic on the pegs that hold the chip, and take out the chip.

There are different ways of attaching the chip to a new tank. The main thing is to not cover the contacts; the printer uses these to detect whether there is an ink cartridge at all. You can e.g. use tape above that, and/or use some sort of sticky substance under the chip (is it necessary to use something opaque?{verify}}).

Once you reinsert the cartridge, you have to click your way though dialogs that tell you that ink is running low, or be asked whether you really want to use this reinstalled empty tank, that you do so at your own risk since it can dry out, etc.

When you need to tell the printer to continue, this often consists of holding the page feed / 'resume' button for about five seconds. -->