## The Super Quick Guide to LPRng Printcaps ## Patrick Powell ## 23 Dec 2000 # VERSION=3.7.4 # # This printcap provides a very simple way to configure your UNIX # or Linux or MS or Apple LPRng printcap. There are several choices # to make and some default printcap entries to use. These handle # the majority of printing setups for most simple setups. # # Step 1: Send all jobs to LPD running on Local Host or Remote Host? # # If you want to send all jobs to the LPD spooler running on the localhost # uncomment the following line. This is the normal case for most # single user systems with attached printers or simple network printers. # #lp:force_localhost:client #*:force_localhost:client # [Translation: # lp - default print queue . If you do not want 'lp' to be the # to be the default print queue, set it to the appropriate value # * - wildcard matches all print queue names, and simply causes # the supplied name to be used as the destination print queue. # :force_localhost - connect to the server running on the localhost # :client - for lpr,lpq,lprm, and lpc to use to get information # ] # # If you want to send all jobs to the LPD spooler running on REMOTEHOST # then uncomment the next line and change REMOTEHOST to the IP # address or Fully Qualified Domain Name of REMOTEHOST. If you are # using this entry then your printcap configuration is complete # and you can skip the other steps. # #lp:force_localhost@:client:rm=REMOTEHOST #*:force_localhost@:client:rm=REMOTEHOST # [Translation: # lp - default print queue . If you do not want 'lp' to be the # to be the default print queue, set it to the appropriate value # * - wildcard matches all print queue names, and simply causes # the supplied name to be used as the destination print queue. # :force_localhost@ - do not connect to localhost, use :rm information # :client - for lpr,lpq,lprm, and lpc to use to get information # :rm=REMOTEHOST - the IP address or Fully Qualified Domain Name of # REMOTEHOST. All jobs will be sent there # ] # # Step 2: Default options? # # The printcap entry below sets defaults. Add any other default option # you want here. # .common: :sd=/var/spool/lpd/%P :sh:sf:mx=0:mc=0 # # [Translation: # .common - the period (.) causes LPRng to treat this as a 'information # only entry. This idea was stolen^H^H^H^H^H^H borrowed from the Unix # 'hidden' file convention, i.e. file names starting with a period # are not displayed by 'ls' or matched by '*' # :sd=/var/spool/lpd/%P # Spool queue directory for temporary storage of print jobs. The # %P will be expanded with the print queue name. Each print queue # MUST have a different spool queue directory, and by using %P # this is guaranteed. # :sh - suppress banners or header pages # :sf - suppress form feeds # :mx=0 - maximum job size in K bytes (0 is unlimited) # :mc=0 - maximum number of copies (0 is unlimited) # ] # # Step 3: Define print queues # # A) printer on parallel port (i.e. - /dev/lpt0) #lp:lp=DEVICE:tc=.common:server # Example: # lp:tc=.common:server:lp=/dev/lpt0 # [Translation: # lp - name of the print queue # :tc=.common - include the options in the .common printcap entry # the 'tc' options will be put at the START of the printcap entry # :server - marked as only for lpd server use # :lp=/dev/lpt0 - open and write the print job to /dev/lpt0 # ] # # B) printer on serial port # Use the :stty to set the speed, bits, and parity using 'stty(1)' # options. Note: almost all printers use 8 bits, no parity. #lp:tc=.common:server:lp=DEVICE:stty=STTY OPTIONS # Example: # lp:tc=.common:server:lp=/dev/tty0:stty=19200 cs8 -parenb # [Translation: lp, :tc, :server, :lp as for A) above. # :stty= options used to configure serial port after # opening it # ] # # C) printer on Network Print Server (i.e. - HP JetDirect) # connecting via a TCP/IP socket. IPADDR is IP address or Fully Qualified # Domain Name of the print server, PORT is the TCP/IP port. # # HP JetDirect uses port 9100 by default. # # Warning: check the Network Print Server documentation for correct # port number. Most non-HP Network Print Servers and non-HP printers # do not use port 9100. # #lp:tc=.common:server:lp=IPADDR%PORT # Example: # lp:tc=.common:server:lp=10.0.0.2%9100 # [Translation: lp, :tc, :server as for A) above. # lp=10.0.0.2%9100 - open a connection to 10.0.0.2, port 9100 # and write the print job to this port. # ] # # D) printer on Network Print Server (i.e. - HP JetDirect or LPD server) # connecting via the LPD print protocol. QUEUE is the name of the # print queue and IPADDR is the IP address or Fully Qualified Domain # Name of the print server. # # Warning: check the Network Print Server documentation for correct # QUEUE name. The 'lp' queue is used on the HP JetDirect as the # default print queue. If there are multiple printer ports on the # device then the QUEUE name is used to select the port. # # Warning: Using this protocol with JetDirect units will almost always # cause a 'banner page' to be generated by the JetDirect unit. # Check the HP documentation on how to disable this most annoying feature. # Usually you simply telnet to the JetDirect and then use the # simple configuration menu presented when you first make connection. # #lp:tc=.common:server:lp=QUEUE@IPADDR # # Example: # lp:tc=.common:server:lp=lp@10.0.0.2 # [Translation: lp, :tc, :server as for A) above. # lp=lp@10.0.0.2 - open a connection to 10.0.0.2, port 515, # and use the RFC1179 (LPD) protocol to transfer the job # to the QUEUE print queue. # ] # # Step 4: Format Conversion (Filter) Required? # # You may discover that your printer does not support PostScript or # requires a special initialization to be done. This is handled # by a filter program. The 'ifhp' filter program is supplied with # LPRng and supports a very wide number of printers. If you need # to have a filter, then add the following lines to the printcap # entry: # # :filter=PATH_TO_IFHP_FILTER # :ifhp=IFHP_OPTIONS # # Note: the LPRng :filter= option replaces the legacy BSD lpd options # :if, :vf, ... options that specify filters for 'f' format, 'v' format, # and so forth (yes, yes, :if is for 'f' format, don't ask). # The :filter option specifies a default filter for all job formats. # Most modern filters such as IFHP, Magikfilter, and RedHat print # filters are smart enough to determine the job format and perform # the appropriate conversions. # # Examples: # # lp:tc=.common:server:lp=/dev/lpt0 # :filter=/usr/libexec/filters/ifhp # :ifhp=model=hp4simx # # lp:tc=.common:server:lp=10.0.0.2%9100 # :filter=/usr/libexec/filters/ifhp # :ifhp=model=hp4simx # # lp:tc=.common:server:lp=lp@10.0.0.2 # :filter=/usr/libexec/filters/ifhp # :ifhp=model=hp4simx # # IFHP Options: # For almost all simple configurations you will only need to # supply the model of printer that you have attached. See the # /etc/ifhp.conf file for a complete listing of supported models. # The default model is for an HP Laserjet 4 SiMx, which supports # PostScript, PCL, and PJL. # # Warning: # IF: # Your model of printer normally provides status and error # reporting over a TCP/IP link # AND: # You are using lp=IPADDR%PORT to connect to the printer # THEN: # The IFHP filter will normally expect to have status information # returned by the printer to tell it that the printer is in working # condition. This will have a small but significant overhead # on job throughput, but you will also get error information. # # HOWEVER: # If the printer SHOULD return status but CANNOT due to either # the printer hardware configuration or it is on a unidirectional # and not bidirectional parallel printer port, then you must use # :model=...,status@ # to tell the IFHP filter not to expect status information. # # Example: # lp:tc=.common:server:lp=10.0.0.2%9100 # :filter=/usr/libexec/filters/ifhp # :ifhp=model=hp4simx,status@ # # Step 5: Queue creation and LPD restart # Run the following commands to create your spool queues and # then tell the LPD server that it should use them: # su # checkpc -f # lpc reread