No matter what else you do with your computer, you probably need to print. Printing is one of the most basic services offered on a computer system, no matter what operating system you choose to run. However, printing under UNIX has historically been somewhat difficult. Though standard page descriptor languages like PostScript and PCL have made it easier to get printers working under Linux, still there are challenges for the administrator.
In this chapter, we take you through the basic steps of printer configuration under Fedora Core and Red Hat Linux, using both command-line and graphical interfaces. We also offer some troubleshooting help, and show you how to tune your printers for the highest performance. With the information presented here, you should be able to get your printer up and running in no time at all.
Print services under Fedora Core and Red Hat Linux, as well as under most other modern Linux and UNIX distributions, are provided by Common UNIX Printing System software, or CUPS. There are a number of command-line and graphical tools available to configure and troubleshoot CUPS, no matter which operating system you're using. In particular, CUPS allows administrators to manage their printers through a handy web interface.
The LPRng printing facility that was in previous versions of Red Hat Linux is not included in Fedora Core. However, you can get RPMs for LPRng from any mirror site that carries Red Hat Linux 9 software. Note that the LPRng standard is being deprecated and will probably disappear from most distributions in the near future.
The CUPS package contains the commands, configuration files, and administrative tools used to manage printing in Fedora Core. It is 'automatically included in every Fedora Core installation choice except Custom, where you must choose the individual packages you want to install. When the package is installed, it turns on the cupsd daemon by default.
The cupsd daemon is the scheduler that manages CUPS printing. It is started by the cups init script, which is turned on by default by the /etc/init.d/cups script, which runs at boot. The daemon runs in the background and waits for requests to spool print jobs or provide information about printing status.
cupsd supports the Internet Printing Protocol, or IPP.
You can configure cupsd settings through the Printer configuration window (Figure 14-1) when you edit a printer definition. To open the Printer configuration tool, issue the command redhat-config-printer under Red Hat Linux, or system-config-printer under Fedora Core 2. From the Red Hat menu, you can select System Settings⇨Printing. Settings made with these tools are stored in the /etc/cups/cuspd.conf file.
The foomatic software package contains printer drivers and driver descriptions used by CUPS and other printing services. The options you set on these drivers determine how the drivers behave, and how print jobs are managed on each individual printer that is attached to your network. The foomatic package contains three main components:
The foomatic database contains tables that describe how to execute the driver you select.
The PostScript Printer Description (PPD) file contains printer-specific information that defines the features and options supported by the printer you define.
The foomatic backend filter determines how the print job is executed, using the PPD file and any options specified by the user sending the job.
A PostScript Printer Description file (PPD) contains information that describes the features supported by a particular printer. The printer manufacturer typically creates a separate PPD file for every printer it builds. To improve the quality of printing on your network, you may need to visit the printer manufacturer's website and download the appropriate PPD file. Using the proper PPD file can significantly expand the range of features available for you to configure.
To learn more about the drivers included in the foomatic package and how to use them, visit www.linuxprinting.org. On this site, you'll find a great deal of information on managing print jobs under Linux, including help for Red Hat installations. You may also find patches or updated drivers for your printers here.
The foomatic database does not execute the appropriate driver itself. Rather, the drivers are executed by one of several different execution styles, including GhostScript, Uniprint, and Filter. GhostScript is used for most of the foomatic drivers. Uniprint drivers are actually GhostScript drivers that run from a different file than the one from the one the regular drivers. Finally, Filter drivers are non-GhostScript drivers that are run through GhostScript.
To see which drivers are available for use with the version of GhostScript on your Fedora Core box, issue the following command:
# gv -h
The output will show you the available device drivers:
GNU Ghostscript 7.07 (2003-05-17) · · · Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF Default output device: x11 Available devices: AP21xx DJ630 DJ6xx DJ6xxP DJ8xx DJ9xx DJ9xxVIP alc2000 alc8500 ap3250 appledmp atx23 atx24 atx38 bbox bit bitcmyk bitrgb bj10e bj10v bj10vh bj200 bjc600 bjc800 bjc880j bmp16 bmp16m bmp256 bmp32b bmpa16 bmpa16m bmpa256 bmpa32b bmpamono bmpasep1 bmpasep8 bmpgray bmpmono bmpsep1 bmpsep8 ccr cdeskjet cdj1600 cdj500 cdj550 cdj670 cdj850 cdj880 cdj890 cdjcolor cdjmono cfax cgm24 cgm8 cgmmono cljet5 cljet5c cljet5pr coslw2p coslwxl cp50 cups declj250 deskjet dfaxhigh dfaxlow dj505j djet500 djet500c dl2100 dmprt dnj650c ep12050 epl2050p epl5800 eps9high eps9mid epson epsonc epswrite escp escpage faxg3 faxg32d faxg4 fmlbp fmpr fs600 gdi hl1250 0l7x0 ibmpro ijs imagen inferno iwhi iwlo iwlq jetp3852 jj100 jpeg jpeggray la50 la70 la75 la75plus laserjet lbp310 lbp320 lbp8 lex2050 lex3200 lex5700 lex7000 lips2p lips4 lips4v lj250 lj3100sw lj4dith lj4dithp lj5gray lj5mono ljet2p ljet3 ljet3d ljet4 ljet4d ljet4pjl ljetplus ln03 lp2000 lp2563 lp8000 lq850 lx5000 lxm3200 lxm5700m m8510 mag16 mag256 md1xMono md2k md50Eco md50Mono md5k mgr4 mgr8 mgrgray2 mgrgray4 mgrgray8 mgrmono miff24 mj500c mj6000c mj700v2c mj8000c ml600 necp6 npdl nullpage oce9050 oki182 okiibm omni paintjet pbm pbmraw pcl3 pcx16 pcx24b pcx256 pcxcmyk pcxgray pcxmono pdfwrite pgm pgmraw pgnm pgnmraw photoex picty180 pj pjetxl pjxl pjxl300 pkm pkmraw pksm pksmraw plan9bm pngl6 pngl6m png256 pngalpha pnggray pngmono pnm pnmraw ppm ppmraw pr1000 pr1000 4 pr150 pr201 psgray psmono psrgb pswrite pxlcolor pxlmono r4081 sgirgb sj48 st800 stcolor stp sunhmono t4693d2 t4693d4 t4693d8 tek4696 tiff12nc tiff24nc tiffcrle tiffg3 tiffg32d tiffg4 tifflzw tiffpack uniprint x11 x11alpha x11cmyk x11cmyk2 x11cmyk4 x11cmyk8 x11gray2 x11gray4 x11mono x11rg16x x11rg32x xes
As you can see, GhostScript supports quite a few print drivers, and you can download a number more if they are required by your local printers.