[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | Printing from UNIX |
|
Moderator: | KERNEL::COFFEYJ |
|
Created: | Thu Dec 17 1992 |
Last Modified: | Thu Jun 05 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 956 |
Total number of notes: | 2876 |
910.0. "Draft of Multivendor Printing System Reference" by BOOKIE::PANGAKIS (Tara DTN 381-2433) Thu Feb 13 1997 18:49
Here's a draft of the content to be included in a .HLP
file I mentioned in Note #895.
(I am developing an online reference guide for Field Systems Engineers
about multivendor print systems. THe goal is to lower the incidence of
routine printer support calls being escalated above the frontline by
providing information to help support personnel understand, diagnose,
and solve printing problems on multiple operating systems.)
I'd appreciate any comments on accuracy and appropriateness.
My goal was to present frequently asked questions and provides links to
basic information from that.
Frequently Encountered Problems
===============================
BSD UNIX Frequently Encountered Problems
Want to see what others are encountering? Check out the following
Notes file: KERNEL::UNIX_PRINTING
These are common questions/problems you may encounter in the field.
Printer Status Message is "Waiting for lock on /dev/tty##"
The DIGITAL UNIX print system is unable to get the lock for the
terminal line in use.
The lock file resides in the /usr/spool/lpd# directory, (# is the
number associated with the printer, check the /etc/printcap file
[link to printcap topic] to find out what the number is for your
printer).
The easiest way to solve the problem is to reboot the
system. This has the effect of re-initializing the print system.
If this can't be done, disable all printers, kill off all the
lpd daemons, enable/start all printers, and re-start the lpd daemon.
[link to daemon]
Printer Status Message is "Sleeping for 15 seconds before retrying"
This problem will occur if there is no "if" or "of" filter listed
in the /etc/printcap file.
If no filtering is desired, add at least an 'if' entry:
:if=/usr/lib/lpdfilters/xf:\
Error In Error Log is that lpd Can't Find Filter
After printing, these errors appear in the file /usr/adm/lp2err:
/usr/lib/lpd: lp2: /usr/lib/lpdfilters/ln03rof: not found
/usr/lib/lpd: lp2: Output filter [link to filter popup] to dev malfunctioned (2)
/usr/lib/lpd: lp2: <date> Job 63 aborted
The lpd daemon can't find the /usr/lib/lpdfilters/<filter> file. The
printer does not work although the files and associated
permissions are correct on the /usr/lib/lpdfilters/<filter> file.
The permissions on the '/' directory had been set to a mode of
666. This can occur if the lprsetup program had been run to
delete a remote printer when your current working directory was /.
Change the permissions on '/' to 755 and the printer will work.
Printer defined correctly in the /etc/printcap file does not work correctly
Check the /etc/printcap file and verify that no extra <TAB> or <SPACE>
character follow the \ (continuation character) at the end of any line.
Also, ensure that comments (line beginning with #) are only
in the first line(s) of the /etc/printcap file.
Can't Print to Remote Printer on a Windows NT Server
On the Windows NT system, make sure that TCP/IP Print Services are
installed.
On the Digital UNIX system, make sure there is an entry for the
Windows NT system in the /etc/hosts file. Make sure you can use
the ping command to see if the Windows NT system responds.
If all of the above steps have been completed successfully, but
you get an error from the lpc status command [link to lpc topic]
create an error log for your printcap using lprsetup.
Then, go to /usr/adm and examine the lperr file to determine
where the error originates.
Configure a NIC in a DECLaser Printer for TCP/IP or LAT Protocol Connections?
Install the Network Interface Card.
Install the Network Interface Card software.
Configure the Network Interface Card's Internet Protocol address.
Choose the type of installation:
A NIC-resident installation, lpdinst, requires you to
configure the printer one time.
A host-resident installation, nicinst, requires you to repeat
the configuration procedure on every host from which you want
to print.
Make the /etc/printcap file entry.
The lpdinst command creates the /usr/nic directory and copies
some files. Then run the lprsetup [link to lprsetup] program to
make the /etc/printcap file entry.
The nicinst command also creates the /usr/nic directory
then runs a script that prompts you for information. Your
responses make the /etc/printcap file entry.
Run Nsconfig
Edit the /usr/nic/nicprint.conf file to include any
additional parameters that you want the NIC NVRAM configured
with, such as the default gateway Internet Protocol address,
and the subnet mask.
Configure an Hewlett-Packard Network Printer
Put the hpnpf print filter in /usr/lbin. It should have the
following attributes:
-rwxr-xr-x 1 bin bin 72147 Jul 27 15:32 /usr/lbin/hpnpf
Create an executable shell script called /usr/lbin/hpnpf.of that
contains the following:
#!/bin/csh -f
/usr/lbin/hpnpf -x hplaser -N
#
# -x printername - Send the file to printername (ip name or dotted address)
# -N - Translate new-line to carriage return/linefeed.
The script should have the following attributes:
-rwxr-xr-x 1 bin bin 188 Jul 27 16:02 /usr/lbin/hpnpf.of
Create the following files using the 'touch' command:
-rw-r--r-- 1 daemon daemon 0 Jul 27 15:25 /var/adm/lphpacct
-rw-r--r-- 1 daemon daemon 0 Jul 27 15:26 /var/adm/lphperr
-rw-rw-rw- 1 daemon daemon 0 Jul 27 15:27 /var/spool/lphp/null
Be sure to set permissions, ownership, and group as shown.
Add the following entry to the /etc/printcap file:
hplaser:\
:af=/var/adm/lphpacct:\
:if=/usr/lbin/hpnpf.of:\
:lf=/var/adm/lphperr:\
:lp=/var/spool/lphp/null:\
:mx#0:\
:pl#66:\
:pw#80:\
:sd=/usr/var/spool/lphp:
You should now be able to print using the lpr command:
# lpr -Phplaser /file
Configure a LAT printer
Run the latsetup program if this is an initial LAT setup or
you want to add LAT lines.
If you want to use an existing lat tty line, you need to comment
it out of the /etc/inittab line. Then run "init q" to get it to
re-read the inittab file.
# file /dev/tty0w
/dev/tty0w: character special (5/30) LAT #0 terminal #30
Map the LAT tty line with the latcp command:
# latcp -A -p tty0w -H TERMINALSERVERNAME -R PORTNAME
Run the lprsetup [link to lprsetup topic] program and specify the
connection type of "LAT", for example, ct=LAT.
Now, try printing:
# lpr -Pprintqueuename somefilename
Add the LAT startup/configuration lines to the LAT startup script.
Use the Serial or Parallel port
Verify if you are using the serial or the parallel port on the
machine:
For a text printer try:
cat /etc/motd > /dev/lp0
For a PostScript printer try:
cat /etc/motd | /usr/lbin/ln03rof > /dev/lp0
If you can cat a file to the printer, then you need to debug the
/etc/printcap file. If not, then you check your connections.
For the serial port, enter the file /dev/tty00 or tty01 command and
look for the one that says terminal #.... on the far right. This is
the one that should be used when running lprsetup program [link to
lprsetup topic].
Add Escape Sequences Using Printcap Filters
If your original /etc/printcap file entry is:
lp|lp0|0:\
:lf=/usr/adm/lperr:\
:lp=:\
:rm=remsys:\
:rp=text:\
:sd=/usr/spool/lpd:
Add the escape sequences you wish to add in a file.
You can verify the escape sequence is in the file with the od
command.
Create a second /etc/printcap file entry by using the lprsetup program
[link to lprsetup] and select printer type unknown. Then modify it:
lp1|1|addesc:\
:lf=/usr/adm/lp1err:\
:lp=/dev/null:\
:mx#0:\
:of=/usr/lbin/addesc:\
:sd=/usr/spool/lpd1:\
:xf=/usr/lbin/xf:
Create the /usr/lbin/addesc file filter [link to filter]:
#! /bin/csh
/bin/cat [/escape] - | lpr -Plp0
Make the file filter you just created executable with the chmod
command.
# chmod 755 /usr/lbin/addesc
Connect HP4si Printer Network Printer
The lpd in the built-in LAN-interface supports two queues, one for
PostScript data "raw" and the other for ASCII data text.
If you use the PostScript queue to print ASCII data from an UNIX
system, you'll miss <CR> and only the first line prints. To print
text, use the queue named text by modifying the :rp= line in the
/etc/printcap file.
BSD UNIX
A UNIX Little Background
The UNIX operating system was originally developed by AT&T (now UNIX
Software Labs) in the early 1970s. Because UNIX was able to run on
many different vendor's hardware platforms, this encouraged developers to
modify UNIX and distribute it as their own:
. USL's System V
. Berkeley Standard Distribution (BSD) from the University of California,
Berkeley
. Xenix (based on BSD) and sold by the Santa Cruz Organization (SCO)
a Microsoft affiliate
More recently, UNIX developers tried to combine the different versions
back into a more standard one, but there are still variants:
. System V Release 4 (SVR4), which was developed by AT&T and
Sun Microsystems, merged features from BSD and SVR3.
This adds about two dozen BSD commands to the basic UNIX command set.
Sun changed the name of its software from SunOS to Solaris. (Solaris 1.0
works like BSD and Solaris 2.0 works like SVR4.)
. The Open Software Foundation was formed to create OSF/1,
based mostly on BSD.
Digital's OSF/1 product is now called DIGITAL UNIX. IBM's AIX
is also related to OSF/1.
. Linux, a free version of UNIX, was developed by Linus Torvalds
in Finland in 1992, and now widely available on the Internet.
Linux is popular because it works well, even on a small PC (such as a
386 PC with 4 megabytes of memory and a 40 megabyte disk.)
Some UNIX Things You Should Know
Just in case you need a UNIX refresher while troubleshooting
printer problems, these are some things you should review.
What kind of system are you working on?
All major vendors now use the BSD spooling system, the AT&T spooling system,
or a combination of both.
[POPUP Table]
===========================================================================
Operating Systems Printing Software
System Printing System
Solaris System V with some extensions
HP-UX System V with some extensions
SunOS BSD
OSF/1 BSD plus a System V front end
===========================================================================
If you are trying to determine what kind of system you're using,
check to see which scheduler is present (lpd or lpsched) rather
than looking at the printing commands. (HP-UX, for example, provides
an lpr command but uses the System V printing system.)
What shell are you working with?
Next, you should determine which shell you have. A shell is a program
that waits for you to enter a command and then executes it. The popular
shells fall into two groups:
� Bourne (displays a $ prompt)
� C (displays a % prompt)
. Linux systems usually come with the BASH (Bourne Again Shell) shell, a
Bourne-style shell.
What commands do you need to use?
Most UNIX systems have online manual (man) pages covering the commands.
Commands work mostly on files [link to Files popup]. In many cases,
you will have to use commands from both System V and BSD [link to
Comparison table].
POPUP Files
============================================================================
There are four types of files:
Ordinary
Can be text files, data files, command files, and executable files.
Directories
References (or holds) other files. Each directory is a subdirectory of
root directory.
Special device files
Files that control the physical aspects of the machine.
Links
Allow the same file to accessed under different names in different
locations.
=============================================================================
[POPUP Table]
============================================================================
Comparison of System V and BSD Print Systems
System V BSD Function
lp lpr Submits jobs for printing
lpsched lpd Printing daemon
lpshut - Stops printing daemon
lpstat lpq Checks queue status
cancel lprm Removes jobs from queue
lpmove - Moves jobs among queues
lpadmin /etc/printcap Configures the printing systems
accept lpc enable Enables queueing
reject lpc disable Disables queueing
enable lpc start Starts printing
disable lpc stop Stops printing
- lpc topq Re-orders jobs in the queue
=============================================================================
Printing Process Overview
The print facilities provided by BSD are limited (as opposed to System
V), but they extend well to large networks.
All access to printers is controlled by the lpd daemon [link to daemon
popup] and the lpr [link to the lpr topic] program.
When the lpr program is executed, it gathers the data to be printed
and information how to print it. There are three ways to specify
how the information is printed:
. Command line arguments to lpr
. Environment variables of the process which executes lpr
. System environment
If a -Pprinter argument is passed to lpr, printer becomes the
destination. If not, the environment is checked to see if
a variable named PRINTER is defined. Or, the job is printed
on the default printer for that system.
As soon as lpr knows what printer to use, it looks the printer up
in the systems printer information database the /etc/printcap [link
to printcap topic] file. This file tells lpr where print jobs should
be placed, usually /var/spool/[printername] and is called the spool
directory.
lpr creates in the spool directory for the job:
. cf[jobnumber] file that contains reference and handling information
for the job
. df[jobnumber] file contains the data to be printed
When lpd receives notification that there's something to print, it
checks /etc/printcap [link to printcap topic] to determine whether the
print job is local or remote. If it's local, lpd makes sure the
printer daemon is operating on the appropriate queue and creates one
(a copy of itself) if there isn't. If it's remote, lpd opens a
connection to the remote machine and transfers both the control and
data files and deletes the local copies.
When the job is ready to print, lpd creates a series of pipes between
the spool file to the printing hardware. In between, lpd places a
filter [link to filter popup] process that can review and edit the
contents of the data stream before it reaches the printer.
[POPUP]
===========================================================================
Daemon
A daemon is a background process that performs a single task.
You can check to see if the lpd daemon is running on DIGITAL UNIX
by entering:
ps -a | grep lpd
Or, you can check by looking for the file /dev/printer which is
created when lpd starts.
===========================================================================
[POPUP]
===========================================================================
Filter
Filter processes can perform various formatting tasks.
===========================================================================
printcap
Every printer accessible from a particular machine must be described
in /etc/printcap: [Code hotspotted graphic]
The format of the printcap file is a simplified version of the /etc/termcap
[link to termcap topic] database format.
Click on the code for a description.
#
# Apple LaserWriter
#
anchor-lw|ses|ses printer:\
:lp=:sd=/var/spool/anchor-lw:rm=anchor:rp=anchor-lw:\
:lf=/var/adm/lpd=errs:
. The first item in each entry is a list of the names for the printer,
separated by: |
. Configuration settings are separated by colons, each in the form
of "xx=string", "xx", or "xx#number," where xx is the two-character
parameter name and string and numbers are assigned to it. When no
value is assigned, the variable is Boolean and indicates TRUE. The
null string is acceptable.
. Entries may be continued from line to line by ending intermediate
lines with a: \
. "anchor-lw", "ses", and "ses printer" are all names for the same
printer. Included, typically, are three forms of the name:
. Short name (no more that 4 characters, easy to type like "ses")
. Full name (specifies type of printer and owner like "anchor-lw")
. Descriptive name (other information, like "ses printer")
. The error log file may be shared by all printers. When a log entry is
made, the name of the problem printer will be included.
All jobs submitted to print without a specific destination are routed
to the printer lp so one of your printers needs to have lp
as name.
Most printcap variables fall into one of five categories:
File and directory specifications
---------------------------------
Each printer should have its own spool directory. A spool directory
is needed even if the printer being described is on another machine.
All spool directories should be in the same parent directory (usually
/var/spool) and should have the same name as the full name of the
printer. When you install a new printer, you must create the spool
directory, with permission as 775 and both owner and group-owner set
to pseudo-user "daemon."
The spool directory contains two status files:
. Lock
The lock file is used to stop multiple invocations of lpd on a single
queue and hold information about the active job. The permission bits
on the lock file are manipulated by lpc to enable or disable spooling
and printing on the printer.
. Status
The status file has a one-line description of the printer state which
is maintained by lpd daemon [link to daemon topic] and used by the lpq
command [link to lpq topic].
If you want to keep track of how much is being printed, enable
accounting by specifying an accounting information file with
the "af" variable.
Remote access information
=========================
Usually, you want to access a printer from more than one machine
in your network. A single machine should be designated as responsible
for communicating with the printer. This allows lpd to queue jobs
in order and it gives you a single place to look for errors.
Remote machines (machines that are not directly connected to
the printer) have a simple /etc/printcap file entry that tells where
to send the job.
The "rm" variable specifies the machine where jobs should be sent and
the "rp" variable gives the name of the printer.
Printing filters
================
The main purpose of a print filter [link to filter popup]
is to provide the ability to print raw UNIX text files. The
secondary function of a print filter is to provide some printer
feature selection, usually paper tray selection, and landscape printing.
Character-only printers don't need to be concerned with filters. Laser
printers usually come with the printer's software.
The default filter /usr/lib/lpf just:
. Copies input to output
. Fixes up nonprinting sequences
. Writes up an accounting record, if needed
[POPUP Filter]
==========================================================================
Filters are usually shell scripts that call a series of translation
programs. A filter accesps the print job on standard input, translates
it to a format appropriate for the printer, and send the result to the
standard output.
If the user does not specify a filter when executing lpr,
either the input filter (if) or output filter (of) is used.
If an if entry occurs in the /etc/printcap file, without an of entry,
it will send one job to the printer and exit.
If an of entry occurs, without an if entry, lpd will call the filter
program once and send all the jobs in the queue.
EXAMPLE
#!/bin/csh -f
/usr/local/bin/textps S* | /usr/local/bin/psreverse
In this example, the first program, textps, looks at the input
and decides if it is PostScript and if not, converts it. It gets
all the filter arguments from S* and generates accounting records
from them. The second program, psreverse, reverses the order of the pages
so that they come out in a correct stack.
==========================================================================
Communication settings
======================
Printers are usually connected to serial ports. Communications are
set on the printer's host machine.
Three settings are controlled through the /etc/printcap file:
. Baud rate
The baud rate is controlled by the "br" variable; "br#9600" sets the
baud rate to 9600 baud.
. Flag bits
The flag bits set parity, flow control, duplex, buffering, and
mechanical delays for the communication link. Setting these
parameters correctly includes looking up the meaning of each bit in
the tty man page and adding up (in octal) the values for all the bits
you want to set or clear.
The "fc" variable specifies those bits that should be turned off
and the "fs" variable specifies those bits that should be turned on.
If you're using a built-in serial port on a Sun machine, use the eeprom
command to set the hardware flow correctly.
[POPUP Table]
===========================================================================
Flag bits for a serial printer
Name Octal value Description
FF1 0040000 Form feed delay (2 seconds)
CR1 0010000 Carriage return delay (0.08 second)
CR2 0020000 Carriage return delay (0.16 second)
TAB1 0002000 Tab delay (dependent on amount of motion)
NL1 0000400 Newline delay (dependent on current column)
NL2 0001000 Newline delay (0.1 second)
EVENP 0000200 Even parity allowed on input and generated on output
ODDP 0000100 Odd parity allowed on input and generated on output
RAW 0000040 Pass all characters from printer to filter immediately
CRMOD 0000020 Output linefeed as "carriage-return linefeed"
ECHO 0000010 Echo (full duplex)
CBREAK 0000002 Pass characters from printer to filter immediately
TANDEM 0000001 Automatic flow control
===========================================================================
. Local mode bits
The local mode bits configure the serial driver.
The "xc" variable specifies those bits that should be turned off
and the "xs" variable specifies those bits that should be turned on.
[POPUP Table]
===========================================================================
Local mode bits for a serial printer
Name Octal value Description
LLITOUT 000040 Suppress output translations
LDECCTQ 040000 Only CTRL/Q restarts output after CTRL/S
LCRTBS 000001 Backspace on erase rather than echoing erase
===========================================================================
Page information
================
Some filters need to know the size of the output page so they can do
cropping and line folding correctly.
For character printers, the "pl" and "pw" variables specify the page
length in lines and the page width in characters. For high-resolution
printers, the "py" and "px" specify the page length in lines and the
page width in pixels.
Miscellaneous Printcap Variables
================================
Other printcap variables specify additional features.
[POPUP table]
===========================================================================
Miscellaneous /etc/printcap variables
Name Type Meaning Default
ff string String that causes printer for form feed CTRL/L
fo bool Output form feed when device is opened? No
mc num Maximum number of copies allowed for job 0 (unlimited)
mx num Maximum file size of job (in blocks) 0 (unlimited)
sc bool Suppress multiple copies? No
sf bool Suppress form feeds? No
sh bool Suppress printing of burst page header? No
===========================================================================
See also:
If you have access to the Internet, check out:
Sample printcap entries: http://ftp.digital.com/pub/DEC/dec-faq/ultrix-printcap
Accessing printer software: http://www.printers.digital.com/sofwar/prt_sofwar.html
Use your system's man pages to find out more about printcap variables.
and each terminal mode bit.
Extensions
Extra variables can be included in the /etc/printcap file for print
filters to use. This can be useful if a printer needs more information
than the base system provides.
/etc/termcap
source: Termcap and Terminfo
John Strang, Tim O'Reilly and Linda Mui
Terminals differ depending on the manufacturer. Applications with
screen-handling features like text editors need to know about the
differences.
The termcap terminal databases are UNIX's solution to the difficulty
of supporting a wide variety of terminals without writing special
drivers for each one. The first version of termcap was written by
Bill Joy in the late 1970's while he wrote the vi text editor. He
developed a set of generic commands, called termcap (short for
terminal capabilities) to manipulate the screen instead of hard-coding
the control codes in two parts:
. Database describing the terminal features
. Subroutine library that allows programs to query the database and make use
of the capability
If a program is designed to termcap, it:
. Queries an environment variable named TERM to figure the terminal type.
. Looks up the definition in the terminal database.
. Reads the definition of any capabilities it plans to use into
external variables.
The terminfo database is the UNIX System V equivalent to termcap.
Terminfo is a compiled database while termcap is an ASCII text file.
Terminfo improves efficiency, but is not as easy to examine or
experiment with.
Some terminals (such as Hewlett-Packard terminals) have attached printers
and many have printer ports. These printers are local to the terminal and
have no relation to the UNIX system printer.
[POPUP Table]
===========================================================================
Terminals with Local Printers
Terminfo Termcap Description
mc0= ps= Print screen contens on auxiliary printer
mc5= po= Turn the printer on
mc4= pf= Turn the printer off
mc5p= pO= Turn the printer on for #1 bytes (#1 < 255)
mc5i 5i Printer won't echo on the screen (not in BSD 4.3)
===========================================================================
Where to Look For Errors
If you have problems debugging a remote printer connection, check:
. System log file on the machine hosting the printer for permission
problem messages
. System log file on the sending machine for name resolution and permission
problems
. The print daemon log file on the printing machine
. The print daemon log file on the sending machine
. The printer log file on the printing machine
. The printer log file on the sending machine
When setting up remote printers, remember that on the requesting
machine there must be:
. A queue for the job to go to on the requesting machine
. A way to decide where to send the job
. Method of sending the job to the remote machine
On the printing machine, there must be:
. A place to queue the job
. Permission to allow the job to be printed
. A way to output to the printer
Network interfaces
UNIX supports a variety of physical networks, including Ethernet, token
ring, and modem-based systems. Each of the machine's connections to a
network is referred to as a network interface.
Digital
=======
RapidPrint 200 Network Interface for Printers
. Supports printing from a variety of hosts.
. Costs less than relying on a high-performance network printer.
. Provides network connectivity for existing hosts, applications, and printers.
RapidPrint 500 Micro Server
. Allows users to share the same printer across the network from a
variety of hosts and over different network protocols.
. Shares widely dispersed resources in the enterprise.
. Service printing requests from Ethernet-connected hosts running
IPX, TCP/IP, AppleTalk/EtherTalk, NetBIOS/NetBEUI and LAT.
. Provides network connectivity for your existing hosts, applications and
printers, linking legacy systems with modern client/server
environments.
LATprint ThinWire Ethernet Direct Connection Interface
. Provides cost-effective direct network connection for printers
having serial ports, and allows these printers to be shared by
any system or server in the local area network (LAN).
. Through server-based print services, LATprint-connected printers are
available to every desktop in your network, regardless of system type.
If you have access to the Internet, check out:
Digital print servers and network interfaces:
http://www.printers.digital.com/products/prt_products.html
Emulex
======
Emulex Network Systems is a designer and manufacturer of both software
and hardware based network access products, supplying high-performance
communications solutions for managing the flow of time-critical data
between machines and peripheral equipment.
The Emulex printer server family features five models:
NETJet, NETQue, NETQue Mate and NETQue Pro2 for the Ethernet environment,
and NETQue Token Ring for Token Ring LANs. Their complete network
printing family offers internal and external, one, two, and three port
printer servers.
If you have access to the Internet, check out:
Emulex home page: http://www.emulex.com
Hewlett Packard
===============
HP is the world's leading supplier of hardcopy products that set the
standard for technology, performance and reliability. HP's
market-leading products include LaserJet and DeskJet printers,
DesignJet large-format printers and plotters, ScanJet scanners,
OfficeJet printer-fax-copiers, CopyJet color printer-copiers and HP
Fax facsimile machines.
For example, the HP JetDirect EX Plus print server employs a new two-way
communication technology to let users monitor the status of the
DeskJet 870C printer from their PCs instead of having to go to the
printer. In this way, users know if the printer is out of paper or
ink, if the memory is full or if ink pens need realignment, among
other useful information. HP's graphical Tool Box software, which
comes with the printer, makes installation and daily printer operation
easy.
The DeskJet 870C series, introduced in August 1996, is a family of
color inkjet printers that offer the fastest printing in their class
(8 ppm black, 4 ppm color); excellent black- and color-print quality;
and the largest professional font collection available in a personal
color printer. Included are the DeskJet 870Cse and 870Cxi printers.
If you have access to the Internet, check out:
Hewlett-Packard page: http://www.hp.com/rnd/home.htm
Printxchange
Printxchange is a distributed printing system for UNIX which is based
on the Palladium architecture originally conceived at MIT Project
Athena. Palladium was based on the ISO 10175 Document Printing
Application (DPA) standard which Digital was key in developing with
Xerox.
Printxchange is a client-server, distributed print system based on ISO
10175, POSIX 1387.4 and X/Open Print System Interoperability
Specification (PSIS). The goal is to manage jobs and printers from
anywhere on the network regardless of the make and brand of the
printers.
If you have access to the Internet, check out:
http://www.xerox.com/xps/products/px/
Eclipse
*** Need more info on this product ***
Queue Setup and Management Examples
In setting up a printing configuration, consider the following:
Put only one printer on each machine
====================================
When a printer runs into problems and needs to be manipulated, you'll
only have to deal with one set of processes.
All printing facilities shouldn't be tied to one machine; if that machine
breaks down, then all printing does too.
Distributing the printing load across several machines minimizes the
printing impact on each machine's performance.
Use file size limits appropriately
==================================
The "mx" printcap variable lets you set a limit on the amount of data that
can be spooled at once. By setting a limit on line printers, you can
prevent naive users from printing binary files by mistake. An
mx#0 entry is necessary to enable large jobs.
Use printer accounting
======================
Enable printer accounting even if you don't plan to charge for printer
use and you'll be able to see who is using the printer.
Use banner pages only when necessary
====================================
The printing system prefaces each job with a page showing information
associated with each job.
It's a waste of paper if you don't need it on a small system, so
disable it by setting the Boolean printcap variable "sh" to true.
Provide recycling bins for used paper too!
Provide Previewers
==================
To prevent printing of documents that contain small errors in formatting
(necessitating re-printing), provide previewers like ghostscript [link
to popup] that allows users to see how the printed output will look on their
screen before they print it.
Configuring a Printer
To add a printer to your system:
Create a device special file by using MAKEDEV
For printers attached by parallel interfaces, use the following format:
MAKEDEV lp #
For printers attached by serial interfaces, use the following format:
MAKEDEV tty #
If the printer is connected to the system by a serial line, edit the
/etc/inittab file and set the action field to off
to prevent logins on the printer line.
Add the printer entry to the /etc/printcap file.
This includes the following information:
Name(s) of the printer or print queue
Type of printer
Device special file for the printer's connection to the system
Spooling directory
A printer can have more than one entry in the /etc/printcap file
to define multiple queues, each with different characteristics. That's
why the entries in printcap are sometimes referred to as printer queues
rather than printers.
Create a spooling directory. For example:
# cd /var/spool
# mkdir lpd1
# chmod 775 lpd1
# chown daemon lpd1
# chgrp daemon lpd1
The spooling directory or spooling queue is where files are stored as
they wait to be printed. Each printer must have a unique spooling
directory.
Start the printing daemon lpd. (This may be set up automatically by
the installation.)
DIGITAL UNIX systems provide the lprsetup program to add and remove printers and
modify printer characteristics. For example, you may want to print
from a DIGITAL UNIX system to a remote printer on a Windows NT Server.
[POPUP Example in Secondary window]
===============================================================================
Digital UNIX Printer Setup Program
Command < add modify delete exit view quit help >: add
Adding printer entry, type '?' for help.
Enter printer name to add [0] :
For more information on the specific printer types
Enter `printer?'
Enter the FULL name of one of the following printer types:
cp382d dl1152w dl510ka dl5100w ep1050+ fx80 fx1050 hpIIP
hpIIIP hpIIID hpIV hp4M ibmpro la50 la70 la75
la84 la86 la88 la88c la90 la280 la324 la380
la380cb la380k la424 lf01r lg02 lg06 lg12 lg31
lj250 ln03 ln03ja ln03r ln03s ln05 ln05ja ln05r
ln06 ln06r ln07 ln07r ln08 ln08r ln09 ln10ja
ln14 ln82r nec290 xf remote unknown
or press RETURN for [unknown] : remote
Enter printer synonym: wntprinter
Enter printer synonym:
Set spooler directory 'sd' [/usr/spool/lpd] ?
Set printer error log file 'lf' [/usr/adm/lperr] ?
Set remote system name 'rm' [] ? wntsys
Set remote system printer name 'rp' [] ? sys_print
Enter the name of the printcap symbol you wish to modify. Other
valid entries are:
'q' to quit (no more changes)
'p' to print the symbols you have specified so far
'l' to list all of the possible symbols and defaults
The names of the printcap symbols are:
af br cf ct df dn du fc ff fo fs gf ic if lf lo
lp mc mx nc nf of op os pl pp ps pw px py rf rm
rp rs rw sb sc sd sf sh st tf tr ts uv vf xc xf
xs ya yd yj yp ys yt Da Dl It Lf Lu Ml Nu Or Ot
Ps Sd Si Ss Ul Xf
Enter symbol name: q
Printer #0
----------
Symbol type value
------ ---- -----
lf STR /usr/adm/lperr
lp STR
rm STR wntsys
rp STR sys_print
sd STR /usr/spool/lpd
Are these the final values for printer 0 ? [y] y
Adding comments to printcap file for new printer, type '?' for help.
Do you want to add comments to the printcap file [n] ? : n
Set up activity is complete for this printer.
Verify that the printer works properly by using
the lpr(1) command to send files to the printer.
Command < add modify delete exit view quit help >:exit
==============================================================================
Configuring a Printer with CDE Printer Configuration
DIGITAL UNIX Version 4.0 systems with graphics capability will load
and configure the Common Desktop Environment (CDE) automatically at
boot time. This application is used primarily to configure printers,
but not to control them on a daily basis (lpc is used for that
purpose).
With CDE, you can:
Add a printer
Modify a printer
Select a printer for the system default printer
Deconfigure a printer
If you have access to the Internet, check out:
http://speede.mko.dec.com/unix_40_docs/SysAdmin/sysadmin_2.html
Spooling to an lpd System from an lpd System
Add a /etc/printcap file entry on the remote machine (client).
rpr1|lp|8-6|Printer called pr1 on server:\
:lp=:rm=server:rp=pr1:sd=/var/sppol/rpr1:mx#0:
Create the spool directory on the remote machine (client):
# mkdir /var/spool/rpr1
# chown daemon /var/spool/rpr1
# chgrp daemon /var/spool/rpr1
# chmod 755 /var/spool/rpr1
On the local machine (server), make sure that the client is listed in
the /etc/hosts.equiv or /etc/hosts.lpd (gives access only for
printing) files.
Verify that you can print:
# lpr -Ppr1 /etc/printcap
# lpq -Ppr1
Enable printing on the client:
# lpc enable rpr1
# lpc start rpr1
# lpr -Prpr1 /etc/printcap
# lpq -Prpr1
Managing a DIGITAL UNIX Print System
The print system on Digital UNIX is a combination of the UNIX System
V print system and the BSD UNIX print system.
Testing the Print System
========================
The lptest command generates a ripple test pattern of
printable ASCII characters to standard output. It can be used
by anyone to test terminals and printers.
The format for the lptest command is:
lptest [length [count]]
. length specifies the length of the output line; default is
79 characters.
. count specifies the number of output lines; default is
200 lines.
When count is specified, length must also be specified.
To send the test pattern to a printer, you can redirect standard output
# lptest > /dev/tty02
# lptest | lpr - -P2
The following is an example of the lptest command.
# lptest 45 10
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP
%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ
&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR
'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS
()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST
)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU
*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV
#
Controlling the Print System
============================
The following example shows some typical lpc [link to lpc] commands
and the resulting lpc response.
# lpc stat
lp:
printer is on device '/dev/tty00' speed 4800
queuing is enabled
printing is enabled
no entries
no daemon present
# lpc
lpc> disable lp
lp:
queuing disabled
lpc> stat
lp:
printer is on device '/dev/tty00' speed 4800
queuing is disabled
printing is enabled
no entries
no daemon present
lpc> q
#
Controlling the Print Environment
lpr
The lpr commands puts the file on a list to be printed.
EXAMPLE
=======
# lpr -P myfile.lis
lpq
The lpq command lets you examine the queue of jobs waiting to be
printed.
The lpq command invoked without any arguments reports on any requests
currently in the queue. The -P flag can be used to specify a
particular printer; otherwise, the default line printer is used (or
the value of the PRINTER environment variable).
It shows the status of all active printers and find out the request
ID, also known as job number, of what you've printed.
EXAMPLE
=======
# lpq myfile
Rank Owner Job Files Total Size
1st katina 12 myfile 2224895 bytes
lprm
The lprm command lets you delete jobs. It removes the request to
print something.
EXAMPLE
=======
# lprm 12
dfA0121iecc dequeued
lpc
The lpc command is used by the system administrator to control the
operation of the line printer system. For each line printer
configured in the /etc/printcap file, the lpc command may be used to:
. Enable or disable queueing for a particular printer
. Enable or disable printing on a particular printer
. Remove all jobs
. Move a job
. Manipulate the lpd daemon
. Get printer status information
[POPUP Table]
============================================================================
Help Prints a short description of each command specified in the argu-
ment list or, when no arguments are supplied, a list of the
recognized commands.
Abort Terminates an active spooling daemon running on the local host,
and then disables printing. This prevents new daemons from being
started by lpr for the specified printers.
Clean Removes any temporary files, data files, and control files that
cannot be printed (files that do not form a complete printer job)
from the specified printer queue(s) on the local machine.
Disable Turns the specified printer queues off. This prevents new printer
jobs from being entered into the queue by lpr.
Down Turns the specified printer queue off, disables printing, and
puts a message in the printer status file. The message does not
need to be quoted because remaining arguments are treated the
same as echo.
Enable Enables spooling on the local queue for the listed printers.
This allows lpr to put new jobs in the spool queue.
Exit Exit from lpc.
Quit Quit from lpc.
Restart Attempts to start a new printer daemon. This is useful when some
abnormal condition causes the daemon to terminate unexpectedly
and leave jobs in the queue. lpq reports that there is no daemon
present when this condition occurs. When a daemon is stuck, you
must first kill it and then restart.
Start Enables printing and starts a spooling daemon for the listed
printers.
Status Displays the status of daemons and queues on the local machine.
When printer name parameters are not supplied, information about
all printers is provided.
Stop Stops a spooling daemon after the current job has completed and
disables printing.
Topq Places jobs in the order listed at the top of the printer queue.
Up Enables all printing and starts a new printer daemon. Cancels the
effect of the down command.
============================================================================
This command cannot be used across a network.
lprsetup
The lprsetup command provides an interactive easy-to-use facility for
administrating the line printers on your system. The lprsetup program
contains on-line help and default answers to questions about adding,
deleting, or changing the characteristics of any of the line printers
on your system. Whenever a question is asked, the default selection is
given in brackets [ ] . You can press Return in response to the
question to accept the default, or enter an alternate value for the
given parameter.
The program knows about all of the possible symbols in the
/etc/printcap file. After you have entered a printer pecification,
and have verified that it is correct, lprsetup then creates the
spooling directory, links the output filter, and creates an
/etc/printcap entry for the new printer.
If the printer is connected to your system, you must specify the
printer device name which is in the lp printcap entry.
With Digital UNIX Version 4.0, printconfig replaces lprsetup.
SYSTEM V UNIX SYSTEMS
System V Frequently Encountered Problems
Want to see what others are encountering? Check out the following
Notes file: KERNEL::UNIX_PRINTING
These are common questions/problems you may encounter in the field.
Configure Spooling on Solaris
To configure spooling from Solaris to a remote printer, specify
the remote printer as server!printer:
# lpsystem -t bsd server
server has been added
# lpadmin -p rpr1 -s server!pr1 -I and -T unknown
# accept rpr1
Spooling from HP-UX to an lpd Printer
HP-UX has added some of the functionality of lpd to the lpsched
daemon:
# /usr/lib/lpshut
# /usr/lib/lpadmin -rpr1 -mrmodel -v/dev/null -ormserver
-orppr1 -ob3
# /usr/lib/accept rpr1
# /usr/lib/enable rpr1
# /usr/lib/lpsched
Add the client the the server's hosts.equiv or hosts.lpd file.
Spooling from an lpd System to lpsched on HP-UX
HP-UX provides the ability to accept jobs from lpr/lpd systems by
providing a rlpdaemon that gets started at boot time. It accepts
jobs from hosts listed in hosts.equiv or /usr/spool/lp/.rhosts.
Printing Process Overview
The System V printing system was not designed for network printing and
has not scaled well; vendors who currently use it have add numerous
changes.
Using the standard system, when a user wants to print something, he
must either use the program lp or a command that invokes lp:
. The lp command makes a copy of the data to be printed and pc
and places it in a file or set of files in the spool [link to spool
popup]. The spool directory is usually /var/spool/lp/request/dest
where dest is the name by which lp knows the printer.
The files are named xxxn, where n is a job number assigned by lp.
lp checks the LPDEST environment variable if the -d option is not
used to determine where to print the file; if none is set lp queues
the data to the default printer set by the administrator (with
the lpadmin -d command).
[POPUP]
===========================================================================
Destination
A destination (usually a printer) has a name up to 14 alphanumeric
characters. It may be belong to a class (a group of destinations that
serve a similar purpose).
===========================================================================
. The lpsched daemon [link to daemon popup] takes the files placed in
the spool directory and sends them to the correct device, when it is
available.
. The lpsched [link to lpsched command topic] daemon executes an
interface program that formats the data and outputs it to the printer.
Solaris puts some of the lp commands normally found in the /usr/lib in
the /usr/sbin directory. Some of the files normally found in
/usr/spool/lp are found in /etc/lp. lpsched is located in
/usr/lib/lp. Logs are in /var/lp/logs.
Queue Setup and Management Examples
Build lp
To build lp, create a login on the system called "lp" and make
sure the directory /usr/spool/lp does not exist.
Add a New Printer
To add a new printer, execute:
/usr/lib/lpadmin [link to lpadmin topic] -pprinter -vdevice { -eprinter | -mmodel
| -iinterface } [ -cclas ...] [{ -l | -h }]
To specify a printer called pr1 connected to /dev/tty06 in
class pr with interface programs for dumb printers enter:
/usr/lib/lpadmin -ppr1 -v/dev/tty06 -mdumb -cpr
Set the System Default Destination
To set the system default destination to class pr:
/usr/lib/lpadmin -dpr
Remove A Printer
Remove printer pr1 from class pr and adds it to class fast:
/usr/lib/lpadmin -ppr1 -rpr -cfast
To removes printer pr1:
/usr/lib/lpadmin -xpr1
Controlling the Print Environment
lpadmin
The lpadmin command is used to tell the printing system about the
local printer configuration depending on what flags [link to lpadmin
popup table] are set.
It creates text files in /usr/spool/lp.
Most lpadmin commands will not work when lpsched is running, so
lpsched must be stopped with the lpshut command before lpadmin is
used. (Solaris however requires lpsched to be running.)
HP-UX allows you to specify programs that return status information
and cancel print jobs.
Solaris requires you to specify what type of input your device handles
with the -I option. Solaris stores interface programs in the
/etc/lp/interfaces directory.
lp will not accept requests for a new printer until you use the accept
command. (Some versions of Solaris default to accepting jobs when you
first install a printer with lpadmin.)
[POPUP table]
======================================================================
lpadmin flags
Flag Functions
-ddest Makes dest the system default
-xdest Removes dest from the printing system
-pprinter Specifies the printer
-cclass Adds printer to class
-rclass Removes printer from class
-edest Copies interface program from dest for printer
-iinterface Makes interface the interface program for printer
-mmodel Makes printer use the interface program for model
-h Indicates that printer is hardwired
-l Indicates the printer is a login terminal
-vfile Appends output for printer to file
======================================================================
lpsystem
Solaris uses the lpsystem command to manipulate the printing
permissions.
Before you can send or receive jobs, you must enable lpsystem
using the -t option to specify the type of printing the remote machine
has:
. For systems that accept jobs from the lpd command (all BSD and
HP-UX) use: bsd
. For machines running Solaris, use: s5
lpshut
The lpshut command turns off the print spooler.
lpsched
The lpched daemon keeps a log of each file it processes and records
errors in /usr/spool/lp/log. The log file is the first place you
should look to diagnose the problem.
To stop lpsched (to run lpadmin, for example), use the lpshut command.
While lpsched is not running, no jobs will be printed, though lp may
still queue jobs. To restart the daemon, use the lpsched command.
The /usr/spool/lp/SCHEDLOCK file is created to ensure that only one copy
of lpsched is running. SCHEDLOCK must be removed by hand before
lpsched can be started again.
cancel
The cancel command allows jobs that are queued or being printed to be
canceled.
EXAMPLE
=======
# cancel 576 (cancels job 576)
# cancel pr1 (cancels job currently printing on pr1)
reject
The reject command tells lp to stop queuing jobs.
EXAMPLE
=======
# /usr/lib/reject -r"pr1 will be down until Saturday" pr1
accept
The accept command tells lp to begin accepting printing jobs. New
printers are added with lpadmin are configured to reject by default.
EXAMPLE
=======
# accept rpr1
disable
The disable command tells lpsched to stop sending jobs to a printer
but does not stop lp from queuing jobs.
EXAMPLE
=======
# /usr/lib/disable -r"Down for five minutes" pr1
enable
The enable command tells printer to begin printing again.
EXAMPLE
=======
# /usr/lib/enable pr1
lpmove
The lpmove command move jobs queued for one printer or class to another
printer.
EXAMPLE
=======
# /usr/lib/lpmove pr1-324 pr1-325 pr2 (moves jobs 324 and 325 to the
queue for printer pr2)
# /usr/lib/lpmove pr1 pr2 (moves all the jobs on pr1 to pr2)
lpmove cannot be used when lpsched is running.
lpstat
The lpstat command show the status of all parts of the queueing
system, depending on which flags [link to popup table] you specify.
EXAMPLE
=======
% lpstat -ppr1
pr1 is now printing pr-111. enabled since Jan 1 12:15
[POPUP Table]
===========================================================================
lpstat flags
Flag Function
-r Shows the status of the lpsched daemon
-d Shows the default destination
-cclass Lists the members of class
-oarg Shows the status output requests for arg
-uuser Shows the status of jobs submitted by user
-pprinter Lists the status of printer
-vprinter Lists the output device associated with printer
-adest Shows the acceptance status of dest
-s Shows a summary of status information
-t Shows all status information
===========================================================================
Interface programs
An interface program:
. Takes information from a file that lpsched specifies.
. Formats the information.
. Sends the formatted information to its the standard output.
It is also responsible for:
. Setting the correct modes on the output device.
. Generating headers and trailers
Interface programs are usuallly shell scripts.
The lpadmin flag -e, -m, or -i [link to popup table] is used to tell the
queuing system which printer interface program to use. The printer
interface program [link to printer interface topic] is responsible for
formatting jobs before they are sent to the printer.
[POPUP Table]
===========================================================================
Ways to Specify Interface Program
-eprinter Printer is the name of an existing printer. This is useful
if you are adding a printer that is exactly like an
existing one.
-mmodel With this option, model is a type of device. Look in the
/usr/spool/lp/model directory to see which models are
supported.
-iinterface Specifies the full path name of the program to be used as
interface script.
===========================================================================
The interface program for each printer is located in the
/usr/spool/lp/interface/printer directory.
Users can create their interface programs and specify them with the -i
flag. These programs should have the pseudo-user lp and group owner
bin and mode of 644.
lpsched calls interface programs with these arguments
jobid user title copies options files
[POPUP Table]
===========================================================================
jobid is the job identification
user is the user who printed it
title is option, specified by user
copies is the number of copies to print
options are user-supplied
files are the full pathnames of files to print
===========================================================================
The interface program gets its standard input from /dev/null and both
standard output and error are specified by the lpadmin -v command.
Unlike BSD, where there are different interface programs for different
file formats, System V requires interface programs to handle all the
kinds of data the printer can accept.
An interface program should exit with 0 on successful completion and
an integer (1-127) if an error occurs. If a serious error happens,
the interface program should disable the printer.
POPUPS (Glossary terms)
Spooler
A spooler is a system that receives print jobs, stores them,
prioritizes them, and sends them sequentially to the printer.
A print spooler stores print requests in memory, allocating them to
printers. This allows several print requests to be stored in RAM
simultaneously, freeing the users who originate the print requests to
go on with their work.
dpi
Most recent printers are bitmap devices, meaning that the output
is dots. A printer's dpi is the number of dots per inch.
PDL
Most printers accept input in one or more Page Description Languages
that specify the images to be placed on the page. They are device
and resolution-independent.
bitmap
A set of data that specifies which dots are filled in (or what
color each dot is, in the case of color).
RIP
A RIP (Raster Image Processor) system accepts documents in one
or more PDL and converts them to a bitmap format.
PostScript
PostScript is the most common PDL format on UNIX systems.
Designed by and licensed from Adobe Systems Incorporated, almost
all page layout programs can generate PostSCript and many printers
can accept PostScript directly.
HPGL
HPGL is the Hewlett-Packard Graphics language, another PDL. Most
CAD applications can generate HPGL and many large-format output
devices understand it.
PCL
Printer Command Language is HP's alternative to PostScript.
QuickDraw
QuickDraw is a graphics language used on Apple Macintosh systems.
roff
roff is not a PDL but a text formatting language.
Transcript
Transcript is a set of filters written by Adobe that translates some
common formats (such as text) to PostScript.
NeWSPrint
NeWSPrint is a RIP package from Sun that includes translation from some
common formats to PostScript and includes a screen viewer.
JetDirect
JetDirect from Hewlett-Packard allows you to send jobs via TCP/IP to
Hewlett-Packard printers on the network.
ghostscript
ghostscript is a freely-distributed PostScript interpreter that allows you
to view PostScript files on your screen.
CAP and K-Spool
CAP (Columbia AppleTalk Package) and K-Spool (from Xinet) allow you to
accept print jobs form Macintosh computers and to print to AppleTalk
printers from your UNIX queue.
Want more information? See the UNIX System Administration Handbook,
Second Edition by Evi Nemeth, Garth Synder, Scott Seebass, Trent R.
Hein, Prentice Hall PTR Englewood Cliffs, New Jersey 07632
T.R | Title | User | Personal Name | Date | Lines
|
---|