PSfilter Setup for Sun 4.x on SPARC Workstation
===============================================


==============================================================
1. Overview
==============================================================

PSfilter is a proprietary printing protocol that provides the
user with many print options, while allowing use of the standard
lp printing subsystem.

To use the PSfilter program, you must have a C compiler on the
host so that psfilter.c can be compiled to an executable file.

Install.sh is provided to compile PSfilter and install printers
to use PSfilter.


* To compile and install PSfilter, run the supplied INSTALL.SH
  program. This program will create the desired system printer
  objects. The printer filter file is used to route print jobs
  through PSfilter to the Print Server's printers. See USING
  INSTALL.SH for more information.

* Refer to PSfilter OPTIONS (.psopts file) for details of using
  PSfilter to set print job parameters.

* To test PSfilter, print a file directly to the Print Server,
  ignoring the system printing process. See PSfilter DIRECT
  PRINTING for more information.

* To print normally (through PSfilter), use the normal system
  printing commands, such as lpr.

* Note that is it not necessary to define LOGICAL PRINTERS on
  the Print Server, and it fact PSfilter cannot send jobs to a
  logical printer, but only to a physical port.

* Refer to the TROUBLESHOOTING section if you have any problems


================================================================
2. RUNNING INSTALL.SH
================================================================

Overview
========
Install.sh needs to be run for each printer you wish to create.
Install.sh will prepare your system for printing using PSfilter
by:
* Obtaining the necessary information from you to create a new
  printer.
* Compiling PSfilter if it is not already compiled.
* Creating the required termcap entry.
* Setting the of (output filter) entry in termcap to invoke
  PSfilter. IT IS NOT POSSIBLE TO USE A REAL OUTPUT FILTER.
* Invoking lpc to create the necessary printer.

There are 2 methods of running install.sh - Quickset and
Interactive.

Quickset Method
===============
1. Copy files
   Insert the TCP/IP Support CD in your CD-ROM drive and use
   the Unix program tar to copy all of the files to the desired
   directory.
  
2. Execute install.sh with the following command.
   ./install.sh  printer_name  PS_NAME  pn=#\
   im=IF_script  port=r_port  d=n  text
  
Printer_name  Name of the printer to be created.
PS_NAME       Name of the Print Server, as entered in \etc\hosts
pn=#          # is the port number on the Print Server used by
              this printer. Use 1 to 3 as appropriate.
port=r_port   r_port is the port to be used for redirection, if
              pn is busy. Valid values are 1, 2, 3, (parallel
              ports) or S (serial port) as appropriate.
d=n           n is the number of minutes allowed before the
              print job is aborted due to printer faults. If n
              is -1, the print job will not be aborted. Not
              specifying this option will cause the default
              value -1 to be used.
text          If provided, this parameter causes each LF to be
              converted to CR+LF


Interactive Method
==================
1. Copy files
   Insert the TCP/IP Support CD in your CD-ROM drive and use
   the Unix program tar to copy all of the files to the desired
   directory.
  
2. Execute install.sh with the following command.
         ./install.sh

3. The install.sh program will ask you to input the following
   information:

Model         Select your Print Server model from the menu.

UNIX system   Select your system from the menu.

Printer name  Enter the name for the printer you wish to create.
              The name will be used by the lp print sub-system

Host Name     The Print Server name as entered in /etc/hosts

PSfilter path The directory to which you copied the files from
              the floppy.

Port          Port on the Print Server to which the printer is
              connected. Enter 1, 2, or 3 to indicate the port.
              3 means either the serial port or parallel port 3,
              depending on which is fitted.

Re-routing?   If, yes, print jobs for this printer will be
              switched to another port if the printer is busy.

Routing port  The port to which print jobs will be re-routed if
              pn is bush. Select from the menu.

Pre-string    String to send before a print job. This string
              must be text only - no control characters. To use
              control characters, you must use headfile.

Post-string   String to send after a print job. This string must
              be text only - no control characters. To use
              control characters, you must use tailfile.

Headfile      File to be sent before a print job. The file can
              contain control characters. Enter the full
              pathname.

Tailfile      File to be sent before a print job. The file can
              contain control characters. Enter the full
              pathname.

Delay         Delay time in minutes before the print job aborts
              after a printer fault. A value of -1 means do not
              abort.

Convert CR    If YES, CR are converted to CR+LF.


===============================================================
3. Psfilter OPTIONS (.psopts file)
================================================================

When run, PSfilter will search for the file .psopts in the
printer spool directory.
The .psopts file contains the options which apply to all print
jobs sent to the printer. The install.sh script will create the
initial .psopts file, but you may wish to modify it later.

The .psopts file format rules are as follows:

* The first line identifies the Print Server on which the
  printer is installed. The letter D is followed by the name of
  the Print Server as entered in /etc/hosts.
* Each line contains only one option.
* The first character in a line is an identifier of an option.
* Arguments of an option follow its option identifier but there
  is a space between the identifier and the argument.

Example: Contents of the .psopts file
------------------------------------------Start file
D Marketing
S
T
p "This is a prefix string"
------------------------------------------End file

This example would make PSfilter reroute the printing job to the
serial port of the Print Server, "Marketing", with the pre-
string "This is a prefix string" and convert all LF codes into
LF+CR codes.
NOTE: If no port is specified, jobs are sent to port 1 on the
Print Server.

PSfilter OPTIONS in .psopts ( Do NOT enter the [] )
===========================
P             Selected print port is parallel port 2.
o3            Selected print port is parallel port 3.
S             Selected print port is serial port.
T             Text mode. LF will be converted to CR + LF.
a [AP]        Send the print job to AP (Another Port) if the
              selected printer is busy. AP can have the
              following values:
                  serial             serial port
                  para1              parallel port 1
                  para2              parallel port 2
                  all                any of these ports.
b             If the network traffic is very heavy, PSfilter
              will retry more times and wait twice as long as
              usual before the print job is aborted.
d [n]         n is the number of minutes allowed before the
              print job is aborted due to printer faults. If n
              is -1, the print job will NOT be aborted and
              PSfilter will continue to wait for the printer
              fault to recover. The default is -1.
p [string]    Send string before the print job to initialize the
              printer.
s [string]    Send string after the print job to reset the
              printer.
h [head_file] Send head_file before print job to initialize the
              printer. Head_file must be specified with a full
              path.
t [tail_file] Send tail_file after the print job to reset the
              printer. Tail_file must be specified with a full
              path.

Note:File Permissions
     The .psopts file should have read permission rights by
     everyone.

Note:Default Port
     The default print port is parallel port 1. This port will
     be used if no port is specified.

Note:Prefix String
     The string should be placed in single or double quotes. A
     string may only contain printable characters; control
     characters are NOT allowed.
     To use control characters, use the "head_file" and/or -
     "tail_file" options.


================================================================
4. PSFILTER DIRECT PRINTING
================================================================

PSfilter Direct Printing means invoking the PSfilter program
directly, bypassing the lpr printing sub-system. This means no
queue is used, so direct printing should only be used to test
that PSfilter is working properly.

Syntax ( Do NOT enter the [ ] )
======
PSfilter -D[PS_name] [options] < [filename]&

Where
  [PS_name] is the name of the Print Server, as entered in the
  /etc hosts file
  
  [options] are as described in PSfilter PARAMETERS & OPTIONS
  above. If no options are specified, the defaults are used.
  (For example, parallel port 1 is used.)
  
  [filename] is the file to be printed.

If the command fails, check for an error log file
(PSErrLogXXXXX) in the /tmp directory.


================================================================
5.   Trouble Shooting
================================================================

Problem 1
---------
  When the interface program detects that the printer device is
  not a printer, a printer error message appears on the screen.
  
Solution 1
----------
  Mark out all stty commands in the interface script.

Problem 2
---------
  The .psopts file format is not accepted.
  
Solution 2
----------
  Check the Prefix and Suffix strings. If they must contain
  control words or are too long, use the headfile or tailfile
  option instead of prefix string or suffix string.

Problem 3
---------
  Jobs are not being printed.
  
Solution 3
----------
* Check the /etc/printcap file. Make sure that the
  /etc/printcap file contains the proper line to invoke PSfilter:
     of=/full_path/PSfilter
* Check the spooler directory. Make sure that .psopts resides in
  the spooler directory
  /usr/spool/printer_name and that all options are properly set.
* Go to the spooler directory and run PSfilter.
  If .psopts is in the directory, then run PSfilter with this
  command:
     /full_path/PSfilter < file_name &
 

