Das Linux-Kernel, falls das lp-Device eincompiliert oder geladen wurde
(die Ausgabe von cat /proc/devices
sollte das Device lp
einschließen), stellt ein oder mehr Devices /dev/lp0
,
/dev/lp1
und /dev/lp2
zur Verfügung. Diese werden NICHT
dynamisch zugeordnet, sondern korrespondieren vielmehr mit einer
bestimmten I/O-Adresse der Hardware. Das heißt, das der erste Drucker
entweder lp0
oder lp1
sein kann, abhängig von der verwendeten
Hardware. Testen Sie beides ;)
Man kann nicht die plip- und lp-Treiber gleichzeitig auf einem Port laufen lassen. Man kann aber einen der beiden Treiber entweder manuell oder mit kerneld (mit Version 2 oder späten 1.3.x) laden. Wenn man die Interrupts u.ä. sinnvoll setzt, kann man lp auf dem einen und plip auf dem anderen Port laufen lassen. Jemand hat das gemacht, indem er die Treiber geändert hat, es bleibt abzuwarten, ob es auch eine einfache Kommandozeilen-Methode gibt.
Es gibt eine kleine Utility namens tunelp (http://www.picante.com/~gtaylor/pht/man/tunelp.html
), mit
dem man als root Interrupts, Geschwindigkeit und anderes am lp-Device
einstellen kann.
Wenn die Option in Kernel 2 oder einigen 1.3.x-Kernels compiliert wurde,
kann eine lp=
-Option gewählt werden, um die Portadressen und
Interrupts einzustellen:
Wenn der lp-Treiber in der Kernel eingebaut wurde, kann ein LILO/LOADLIN-Kommando benutzt werden, um die Portadresse und Interrupts einzustellen.
Syntax: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]
Beispiel: lp=0x378,0 oder lp=0x278,5,0x378,7 **
** Standard Port-Einstellungen, der andere Port (<tt/lp0/) liegt bei 0x3bc.
Hinweis: Wenn diese Funktion benutzt wird, müssen alle Ports angegeben werden, die berücksichtigt werden sollen, es gibt keine Voreinstellungen. Man kann einen eingebauten Treiber mit lp=0 deaktivieren.
Wenn das Device als Modul geladen wird (nur in 2.0 und späten
1.3.x Kernels), können die Adressen und Interrupts in der üblichen
Syntax im insmod-Kommando angegeben werden. Die Parameter sind
io=x,y,z
und irq=x,y,z
, wobei x
, y
und z
genau
das sind, was man annimmt. Auf der Man-page zu insmod
gibt es weitere
Informationen.
Serielle Devices werden üblicherweise unter Linux als etwas wie
/dev/ttyS1
bezeichnet. Das Programm stty (http://www.picante.com/~gtaylor/pht/man/stty.html
) erlaubt
es, interaktiv die Einstellungen für die seriellen Schnittstellen
anzusehen oder zu verändern; mit setserial (http://www.picante.com/~gtaylor/pht/man/setserial.html
)
können einige erweiterte Attribute eingestellt werden und IRQs und
I/O-Adressen für nicht-standardmäßige Schnittstellen eingestellt werden.
Weitere Informationen über serielle Schnittstellen können in der
Serial-HOWTO
(http://sunsite.unc.edu/mdw/HOWTO/Serial-HOWTO.html
)
nachgelesen werden.
Wenn man einen langsamen seriellen Drucker mit Flußkontrolle benutzt,
kann es sein, daß einige Druckaufträge abgeschnitten werden. Das kann
an den seriellen Schnittstellen liegen, die standardmäßig 30 Sekunden,
nachdem das Schnittstellendevice geschlossen wurde, alle nicht gesendeten
Zeichen löscht.
Der Puffer hält bis zu 4096 Zeichen, wenn der Drucker Flußkontrolle
verwendet und nicht schnell genug ist, um innerhalb von 30 Sekunden,
nachdem die Software die Schnittstelle geschlossen hat, alle Daten
aus dem Puffer zu empfangen, ist das Ende des Pufferinhalts verloren.
Wenn der Befehl
cat file > /dev/ttyS2
kurze Dateien komplett ausdruckt, bei längeren aber das Ende abschneidet,
könnte genau dieser Fall vorliegen.
Die 30 Sekunden-Wartezeit kann durch das "closing_wait"-Element der
Datenstruktur der seriellen Schnittstelle mit Hilfe eines ioctl()-
Aufrufs eingestellt werden. Setserial
kann dieses Element nicht
einstellen, aber andere in der selben Datenstruktur, so daß es einfach
ist, setserial
entsprechend anzupassen. Dann kann in rc.serial
der setserial
-Befehl so geändert werden, daß closing_wait
verlängert wird.