4.1. The lp device (kernels <=2.1.32)
4.1. The lp device (kernels <=2.1.32)
The Linux kernel (<=2.1.32), assuming you have compiled in or
loaded the lp device (the output of cat /proc/devices should include the device lp if it is
loaded), provides one or more of /dev/lp0,/dev/lp1, and /dev/lp2.
These are NOT assigned dynamically, rather, each corresponds to a
specific hardware I/O address. This means that your first printer
may be lp0 or lp1
depending on your hardware. Just try both.
A few users have reported that their bidirectional lp ports aren't
detected if they use an older unidirectional printer cable. Check
that you've got a decent cable.
One cannot run the plip and lp drivers at the same time on any
given port (under 2.0, anyway). You can, however, have one or the
other driver loaded at any given time either manually, or by
kerneld with version 2.x (and later 1.3.x) kernels. By carefully
setting the interrupts and such, you can supposedly run plip on
one port and lp on the other. One person did so by editing the
drivers; I eagerly await a success report of someone doing so with
only a clever command line.
There is a little utility called
tunelp
floating about with which you, as root, can tune the
Linux 2.0 lp device's interrupt usage, polling rate, and other
options.
When the lp driver is built into the kernel, the kernel will
accept an lp= option to set
interrupts and io addresses:
When the lp driver is built in to the kernel, you may use the
LILO/LOADLIN command line to set the port addresses and interrupts
that the driver will use.
Syntax: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]
For example: lp=0x378,0 or lp=0x278,5,0x378,7 **
Note that if this feature is used, you must specify *all* the ports
you want considered, there are no defaults. You can disable a
built-in driver with lp=0.
|
When loaded as a module, it is possible to specify io addresses
and interrupt lines on the insmod command line (or in/etc/conf.modules so as to affect kerneld)
using the usual module argument syntax. The parameters areio=port0,port1,port2 and irq=irq0,irq1,irq2. Read the man page for
insmod
for more information on this.
**For those of you who can never find the standard port
numbers when you need them, they are as in the second example
above. The other port (lp0) is at 0x3bc.
I've no idea what interrupt it usually uses.
The source code for the Linux 2.0 parallel port driver is in
/usr/src/linux/drivers/char/lp.c.