1) The Printer:
Hardware Flow Control should be used whenever a printer is having buffer overruns, is losing sections of a file, or is having problems with garbled or mis-formatted data. Most printers are simply more reliable when using hardware flow control, but special attention must be paid to cabling, and ensuring that the proper serial signals are connected to each other.
Many printers use the DTR signal for flow control (Okidata printers should be set for SSD- and Ready/Busy), but the RTS signal may sometimes used as well. Please refer to your Printer documentation for further details on how to enable Hardware Flow Control, as well as what pin(s) the Printer can do hardware flow control on.
2) The Cable:
The wiring of the Printer Cable must take into consideration the type of flow control. Software flow control would require use of only 3 serial pins (RxD, TxD, SG), while Hardware Flow Control would also need to include either the DSR/DTR or RTS/CTS pair of signals, for a total of 5 pins.
3) The Portserver or Digi One family Serial Server configuration:
from factory defaults:
- connect a terminal (set for 9600, 8-N-1, vt100 emulation) to a port on the portserver
set conf ip=%%.%%.%%.%% subm=%%.%%.%%.%% [%% is the appropriate ip address]
set conf gateway=%%.%%.%%.%%
- then telnet to the portserver from your host and:
set port ra=## dev=prn (## is a port number, or * for all ports)
set flow ra=## altpin=on (as necessary for 8 wire RJ45 cable if DCD is used)
set flow ra=## cts=on ixon=off ixoff=off
4) Options on the Unix Server
The PortServer and Digi One family Serial Servers have 'lpd' running by default. By setting up a remote print spooler from unix, you can print directly using the 'lpd' protocol. This only applies to the Portserver II, Portserver TS and Digi One family products. This was not available on the original PortServer. Refer to the appropriate User Guide for further configuration info.
Another simple way to print is by piping thru a remote command. Typical remote commands such as telnet, rcmd, rsh (unrestricted), remsh. Several examples are below: The telnet example uses '2016' as the port address, 20xx is the TCP/IP service numbers the portserver uses, and 16 is the actual port on the portserver.
cat /etc/passwd | telnet portserver_name 2016
cat /etc/passwd | rsh portserver_name 16
cat /etc/passwd | rcmd portserver_name 16
A print spooler can also be used. The following example shows a common way to setup print spooling in SCO Unix.. Other Unix versions may need to be setup differently, this is just one example:
Not all versions of Unix allow named pipes to be used for this application.
1. Create the named pipe:
mknod /dev/a_named_pipe p
2. Edit /etc/inittab:
d1:23:respawn:sleep 99999999 >/dev/a_named_pipe
d2:respawn:rcmd portserver_name 4
These lines use the named pipe and keep it open continuously. You can also replace 'rcmd' with other remote cmds (depending on the OS - some remote cmds work better than others) such as: rsh(unrestricted), remsh, or telnet (last resort). The above example shows portserver_name. You can use the portserver name or ip address. The port number either be the physical port number, or if you are using telnet, 2000+the_port_number, as in the Remote Commands Option above.
Last updated: May 20, 2019