.\" This file Copyright (C) 1992-1997 Michael K. Johnson <johnsonm@redhat.com>
.\" This file Copyright (C) 1998      Andrea Arcangeli   <andrea@e-mind.com>
.\" It may be distributed under the terms of the GNU General Public License,
.\" version 2, or any higher version.  See section COPYING of the GNU General
.\" Public license for conditions under which this file may be redistributed.
.\"
.\" Polished a bit - aeb
.TH tunelp 8 "7 May 1999" "tunelp" "Linux Programmer's Manual"
.SH NAME
tunelp \- set various parameters for the lp device
.SH SYNOPSIS
.B tunelp
.I device
.RB [ \-i
.IR IRQ ]
.RB [ \-t
.IR TIME ]
.RB [ \-c
.IR CHARS ]
.RB [ \-w
.IR WAIT ]
.RB [ \-a
.RB { on | off }]
.RB [ \-o
.RB { on | off }]
.RB [ \-C
.RB { on | off }]
.RB [ \-r ]
.RB [ \-s ]
.RB [ \-q
.RB { on | off }]
.RB [ \-T
.RB { on | off }]
.SH DESCRIPTION
\fBtunelp\fP sets several parameters for the /dev/lp\fI?\fP devices, for better
performance (or for any performance at all, if your printer won't work
without it...)  Without parameters, it tells whether the device is using
interrupts, and if so, which one.  With parameters, it sets the device
characteristics accordingly.  The parameters are as follows:

.TP
.BI \-i " IRQ"
specifies the IRQ to use for the parallel port in question.  If this
is set to something non-zero, \-t and \-c have no effect.  If your port
does not use interrupts, this option will make printing stop.
The command
.B tunelp -i 0
restores non-interrupt driven (polling) action, and your printer should
work again.  If your parallel port does support interrupts,
interrupt-driven printing should be somewhat faster and efficient, and
will probably be desirable.

NOTE: This option will have no effect with kernel 2.1.131 or later since
the irq is handled by the parport driver. You can change
the parport irq for example via
.IR /proc/parport/*/irq .
Read
.I /usr/src/linux/Documentation/parport.txt
for more details on parport.

.TP
.BI \-t " TIME"
is the amount of time in jiffies that the driver waits if the
printer doesn't take a character for the number of tries dictated by
the \-c parameter.  10 is the default value.  If you want fastest
possible printing, and don't care about system load, you may set this
to 0.  If you don't care how fast your printer goes, or are printing
text on a slow printer with a buffer, then 500 (5 seconds) should be
fine, and will give you very low system load.  This value generally
should be lower for printing graphics than text, by a factor of
approximately 10, for best performance.

.TP
.BI \-c " CHARS"
is the number of times to try to output a character to the
printer before sleeping for \-t \fITIME\fP.  It is the number of times around
a loop that tries to send a character to the printer.  120 appears to
be a good value for most printers in polling mode.  1000 is the default,
because there are some printers that become jerky otherwise, but you \fImust\fP
set this to `1' to handle the maximal CPU efficiency if you are using
interrupts. If you have a very fast printer, a value of 10 might make more
sense even if in polling mode.
If you have a \fIreally\fP old printer, you can increase this further.

Setting \-t \fITIME\fP to 0 is equivalent to setting \-c \fICHARS\fP
to infinity.

.TP
.BI \-w " WAIT"
is the number of usec we wait while playing with the strobe signal.
While most printers appear to be able to deal with an extremely
short strobe, some printers demand a longer one.  Increasing this from
the default 1 may make it possible to print with those printers.  This may also
make it possible to use longer cables. It's also possible to decrease this
value to 0 if your printer is fast enough or your machine is slow enough.

.TP
.BR \-a " {" on | off }
This is whether to abort on printer error - the default
is not to.  If you are sitting at your computer, you probably want to
be able to see an error and fix it, and have the printer go on
printing.  On the other hand, if you aren't, you might rather that
your printer spooler find out that the printer isn't ready, quit
trying, and send you mail about it.  The choice is yours.

.TP
.BR \-o " {" on | off }
This option is much like \-a.  It makes any
.I open()
of this device check to see that the device is on-line and not reporting any
out of paper or other errors.  This is the correct setting for most
versions of lpd.

.TP
.BR \-C " {" on | off }
This option adds extra ("careful") error checking.  When
this option is on, the printer driver will ensure that the printer is
on-line and not reporting any out of paper or other errors before
sending data.  This is particularly useful for printers that normally
appear to accept data when turned off.

NOTE: This option is obsolete because it's the default in 2.1.131 kernel
or later.

.TP
.B \-s
This option returns the current printer status, both as a
decimal number from 0..255, and as a list of active flags.  When
this option is specified, \-q off, turning off the display of the
current IRQ, is implied.

.TP
.BR \-T " {" on | off }
This option is obsolete. It was added in Linux 2.1.131,
and removed again in Linux 2.3.10. The below is for these
old kernels only.

This option tells the lp driver to trust or not the IRQ.
This option makes sense only if you are using interrupts.
If you tell the lp driver to trust the irq, then, when the lp driver will
get an irq, it will send the next pending character to the printer
unconditionally, even if the printer still claims to be BUSY.
This is the only way to sleep on interrupt (and so the handle the irq
printing efficiently) at least on Epson Stylus Color Printers.
The lp driver automagically detects if you could get improved
performance by setting this flag, and in such case it will warn you
with a kernel message.

NOTE: Trusting the irq is reported to corrupt the printing on some hardware,
you must try to know if your printer will work or not...

.TP
.B \-r
This option resets the port.  It requires a Linux kernel version of
1.1.80 or later.

.TP
.BR \-q " {" on | off }
This option sets printing the display of the current IRQ setting.


.SH NOTES
.BR \-o ,
.BR \-C ,
and
.B \-s
all require a Linux kernel version of 1.1.76 or later.

.B \-C
requires a Linux version prior to 2.1.131.

.B \-T
requires a Linux version of 2.1.131 or later.

.SH BUGS
By some unfortunate coincidence the ioctl LPSTRICT of 2.0.36 has the same
number as the ioctl LPTRUSTIRQ introduced in 2.1.131. So, use of the \-T option
on a 2.0.36 kernel with an tunelp compiled under 2.1.131 or later may have
unexpected effects.

.SH FILES
.I /dev/lp?
.br
.I /proc/parport/*/*

.SH AVAILABILITY
The tunelp  command is part of the util-linux-ng package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
