SDB:Purchasing a Printer and Compatibility
Concern:
You plan to buy a certain printer or you already have a printer and would like to know if the printer can be used with Linux.
This article is for CUPS up to version 2.x under Linux with the traditional filtering system and backends there.
The nowadays driverless printing workflow is rather different.
Procedure:
Search the information sources listed in the Support Database article SDB:Installing a Printer
The accuracy of these sources cannot be guaranteed, as the Linux support information is usually based on customer and user statements. Moreover, "supported" usually means "average performance", not "full support of all functions". The use of the maximum resolution or speed specified by the manufacturer is often not possible even on supported printers.
Furthermore there could be minor differences in size and position of the printout on the paper or a minor color cast or minor visual artifacts like color banding even on supported printers.
If you need desktop publishing printout quality, consider to pay the price for a high-quality PostScript printer (see below). PostScript printers can print application's PostScript printing output directly without having printer driver software in between (in general "driver" means device-model-specific software and data). This eliminates the main reason why a printout may deviate from application's PostScript printing output.
As we do not want to favor any manufacturer above other manufacturers, we cannot provide any special hardware recommendations. Furthermore, the ideal printer always depends on the individual user requirements.
General Information
The most important precondition for smooth printer operation is to use a suitable printer.
Problems with the print system (CUPS) can usually be eliminated by modifying the configuration. Though it may not be possible to accommodate all wishes, an adequate solution can be configured for most issues. In contrast, problems caused by an unsuitable printer can usually not be eliminated by modifying the configuration of the print server.
Technical Information
Non-PostScript printers must support at least one standard printer language because usual free software printer drivers only support established and well known standard printer languages (see Concepts printing).
Print Quality (DPI versus CPU and Memory Usage)
The printer language PCL5e is supported by many monochrome laser printers, but most low-end printers do not. For PCL5e printers, the Ghostscript drivers ljet4 and lj4dith will work, and 600 dpi resolution can be used for monochrome printing, provided the internal printer memory is at least 4 MB. If the memory is insufficient, refer to the article SDB:Laser Printer Does Not Print Properly Or Does Not Print At All
To be able to print complex pages efficiently with 1200 dpi on a monochrome laser printer, the printer should have an internal memory of at least 16 MB and support PCL6 or PCLXL, thus enabling the use of the Ghostscript drivers lj5mono, lj5gray, or pxlmono.
Though 1200 dpi provides hardly any visible improvement over 600 dpi, it consumes four times as much CPU performance and memory than 600 dpi. Compared to 300 dpi, 600 dpi provides a much better result. Thus, 600 dpi is a good choice, both in terms of the print quality and the CPU and memory usage.
PostScript Printers
Going by the underlying concept, PostScript printers are the best choice, as PostScript is the standard printer language in Unix/Linux (see Concepts printing). However, this only applies to high-quality PostScript printers that have a mature PostScript implementation and enough memory and computing power to render even complex pages at a reasonable speed.
Normally PostScript printers also support the printer languages PCL5e and PCL6/PCLXL, thus allowing even problematic PostScript files to be printed at least in b/w via PCL5e or PCL6/PCLXL. Often, the PostScript printer's optimum quality cannot be reached in PCL5e or PCL6/PCLXL mode (e.g., the resolution may be limited to 600 dpi in PCL5e or color printing is not possible in PCL mode). Still, a PostScript + PCL5e (+ PCL6/PCLXL) printer is the most versatile solution, as such a device can print virtually anything printable in an acceptable quality.
Some PostScript printers can even process PDF data directly. The above said also applies to PostScript + PDF printers.
However, purchasing a high-quality PostScript printer for the sole purpose of circumventing the driver problem is unnecessary, as PCL5e or PCL6/PCLXL printers also deliver fine results for b/w printing.
In contrast PostScript is usually required for a color laser printer to get a good print quality.
Nevertheless, a high-quality PostScript printer combined with the CUPS print system makes sense if the device supports functions such as the following:
- Duplex printing
- Long-edge binding
- Short-edge binding
- Several paper trays
- Several trays for the print output
- Several paper feed trays
- Several trays for various paper sizes
- Various internal print settings
- Resolution
- 300 dpi
- 600 dpi
- 1200 dpi
- Color depth or grayscale per pixel
- 1 (memory usage 1 bit per pixel)
- 256 (memory usage 8 bits per pixel)
- 65536 (memory usage 16 bits per pixel)
- Saturation
- Little toner (toner saving mode)
- Normal
- Resolution
A decent PostScript printer is always accompanied by a suitable PPD file from the manufacturer. The CUPS print system makes the settings defined in the PPD file available to all users and for every print job.
Potential Problems with PostScript Printers
On PostScript + PCL5e (+ PCL6/PCLXL) printers, the said options are usually only available and combinable in the PostScript mode. In the PCL5e or in the PCL6/PCLXL mode, the options are limited. Though the resolution can be set and suitable drivers can be used to set the grayscale type (ljet4/lj4dith or lj5mono/lj5gray) and duplex printing (ljet4/ljet4d), these options cannot be combined freely.
PostScript printers often have problems with highly complex PostScript files, especially if the PostScript printer does not have enough memory to process bitmap graphics embedded in the PostScript files. If the PostScript file contains embedded graphics, the problem should be solved by reducing the resolution and color depth in the PostScript file itself (not the printer's resolution setting). A bitmap image at 1200 x 1200 dpi consumes 16 times more memory than it would at 300 x 300 dpi. A color depth of 32 bits (e.g. 4 * 8 bits CMYK) consumes 32 times more memory than 1-bit b/w mode. Accordingly, a bitmap image at 1200 x 1200 dpi and 32-bit color depth consumes 500 times more memory than the same image in 1-bit b/w mode at 300 x 300 dpi resolution.
PostScript printers also fail if the PostScript level supported by the built-in PostScript interpreter is too low. The majority of older PostScript printers support PostScript level 2. However, an increasing number of applications now generate PostScript level 3 by default. If special PostScript level 3 commands are used, PostScript level 2 printers cannot print these data properly or not at all.
PostScript printers deliver faulty output if the built-in character sets (fonts) do not contain all needed characters (glyphs). For example, most older PostScript printers cannot print the Euro symbol directly. This can be solved if the application provides the needed characters sets (fonts) embedded in the PostScript output.
What Is to Be Printed
Laser Printers versus Inkjet Printers
A sturdy b/w laser printer that supports the PCL5e printer language and has an internal memory of at least 4 MB is a good choice as a standard printer (without any special extensions like trays etc.).
Possibly you may want to purchase a more complex model that allows for extensions such as the following:
- Duplex unit
- Additional trays
- Network connection
- PostScript module + additional memory
In time, a printer of this kind can be upgraded to a high-quality PostScript printer. Alternatively, you can postpone the purchase of a complete high-quality PostScript printer with all required extensions until you really need it.
For color printing, a suitable choice could be a sturdy inkjet printer. Alternatively a color laser printer should really support PostScript to get good color printing results. If you need photograph-grade quality, an inkjet printer should be supported by at least one of the following drivers:
- HPLIP (http://hplipopensource.com)
- Gutenprint (formerly Gimp-Print) driver (http://gimp-print.sourceforge.net/)
- Epson Inkjet Printer Driver (ESC/P-R) for Linux (http://avasys.jp/eng/linux_driver/download/lsb/epson-inkjet/escpr/)
HPLIP and Gutenprint are included in openSUSE "since ever" and since openSUSE 12.1 the "Epson Inkjet Printer Driver (ESC/P-R) for Linux" is provided as RPM package epson-inkjet-printer-escpr.
Information on the Support Status
Refer to the URLs listed in the article SDB:Installing a Printer
You could also try to get information on the Linux support status of the printer models directly from the manufacturer, as the manufacturer is in the best position to test the model under Linux (especially new printer models). This will also reveal the differences in the level of Linux support by the individual printer manufacturers.
If the manufacturer cannot provide any Linux-relevant information on your printer model, proceed as follows:
Check if your printer is compatible with a model that is supported under Linux and use the Ghostscript driver for the respective compatible model.
"Compatible under Linux" means that your printer can be addressed correctly with the same binary control sequences as the compatible printer model, i.e. no special driver (e.g., for Windows) is needed to emulate the printer language, see the article SDB:GDI Printers.
Similar printer designations do not necessarily imply compatibility. Even printers with similar designations may not understand the same printer language directly. The printer language is often specified under the printer specifications in the printer manual. If necessary, ask the manufacturer which printer language your printer understands directly.
It is crucial to have exact model names!
Exact model names are mandatory because small differences in model names can make big differences regarding support status.
For example when the device is labeled "ACME FunPrinter 1000 XL+" then use its full name and not any kind of abbreviation like "ACME 1000 XL" because there could be a different model "ACME FancyPrinter 1000 XL" and even tiny details like the '+' could make a difference whether or not the particular model works, e.g. the "ACME FunPrinter 1000 XL+" could be a PostScript printer while the "ACME FunPrinter 1000 XL" could be a so called GDI Printer because the tiny '+' means "plus PostScript support".
Some examples (for details see "Supported printers" at http://hplipopensource.com):
- The HP LaserJet 1018 is only supported by HPLIP since version 2.7.10 and requires a proprietary binary-only driver plug-in which must be downloaded from HP. In contrast the HP LaserJet 1015 is a PCL printer which is supported since a long time by HPLIP and probably also by several Ghostscript drivers for PCL printers.
- The HP Color LaserJet 2600 is only supported by HPLIP since version 3.9.2 and requires a proprietary binary-only driver plug-in which must be downloaded from HP. In contrast the HP Color LaserJet 2605 is a PostScript printer which does not require HPLIP or any other driver.
In particular note that a higher model number does not always mean better support status.
To make things worse there had been exceptionally bad cases where a printer manufacturer came up with a successor model under the same model name but with a different kind of printer language so a different driver was needed or no existing driver worked, cf. https://en.opensuse.org/SDB:Printer_buying_guide#Windows_.2F_GDI_printers
Examples for standard printer languages:
- ASCII text
Normally, every printer should be able to print ASCII text directly. However, GDI printers designed exclusively for Windows are not able to print ASCII text or data in one of the following standard printer languages. Moreover, some printers cannot print ASCII text directly, but can be addressed by means of one of the following standard printer languages. - PostScript level 2 or level 3
Though being relatively expensive, printers that understand PostScript level 2 or level 3 directly are the easiest to use, as PostScript is the standard printer language in Unix/Linux.
To make sure that printing complex documents is not too slow, check how fast the printer's built-in PostScript interpreter operates. If a non-PostScript printer is used, the print output is generated with Ghostscript in one of the following standard printer languages. - PCL5e or PCL6
Printers that understand PCL5e (often simply referred to as PCL5) or PCL6 directly should work with the Ghostscript driver ljet4 up to a resolution of 600 x 600 dpi. - PCL4 or PCL5
Printers that understand PCL4 or PCL5 directly should work with the Ghostscript driver laserjet, ljetplus, ljet2p, or ljet3. However, the resolution is limited to 300 x 300 dpi. - PCL3
Printers that understand PCL3 directly should work with Ghostscript drivers like deskjet, hpdj, pcl3, cdjmono, cdj500, cdj550,... - ESC/P2 or ESC/P
Printers that understand ESC/P2 or ESC/P directly should work with Ghostscript drivers like epson or stcolor. - ESC/P-R
Printers that understand ESC/P-R directly should work with the "Epson Inkjet Printer Driver (ESC/P-R) for Linux" developed by Seiko Epson Corporation and distributed by AVASYS Corporation under the GPL.
If your printer is not supported
If no Linux driver is available for your printer, inform the manufacturer and draw his attention to the article SDB:Information for Printer Manufacturers Regarding Linux Support