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 &