Das Linux-Kernel (<=2.1.32), 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 einfach beides ;)
Einige Leute haben berichtet, daß ihre bidirektionalen lp Ports nicht erkannt wurden, wenn sie ein altes, unidirektionales Kabel verwendeten. Überprüfen Sie also, ob Sie über ein vernünftiges Kabel verfügen.
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 Kernelversion 2.x 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 ein kleines Utility namens tunelp (http://www.picante.com/~gtaylor/pht/man/tunelp.8.html
),
mit dem man als root Interrupts, Geschwindigkeit und anderes am
lp-Device einstellen kann.
Wenn die Option in Kernel 2.x oder einigen 1.3.x-Kernels
compiliert wurde, kann eine lp=
Option (über
LILO/LOADLIN) gewählt werden, um
die Portadressen und Interrupts einzustellen:
Syntax: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]
Beispiel: lp=0x378,0 oder lp=0x278,5,0x378,7 **
** Für alle diejenigen, die sich nie an die
Standard-Porteinstellungen erinnern können, wenn sie sie brauchen
(so wie ich): sie entsprechen dem zweiten Beispiel oben. Der
andere Port (lp0
) liegt bei 0x3bc; keine Ahnung, was für
einen Interrupt er benutzt.
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.x und späten
1.3.x Kernels), können die Adressen und Interrupts in der üblichen
Syntax im insmod-Kommando angegeben werden (oder in
/etc/conf.modules
für den kerneld). Die Parameter sind
io=port0,port1,port2
und irq=irq0,irq1,irq2
. Auf der
Man-page zu insmod
gibt es weitere Informationen.
Der Quelltext für den Linux Parallelporttreiber befindet sich in
/usr/src/linux/drivers/char/lp.c
.
parport
-Device (Kernelversionen >= 2.1.33)Beginnend mit Kernel 2.1.33 (und verfügbar als Patch für Kernel
2.0.30) ist das lp Device eigentlich nur noch ein Client des neuen
parport
-Device. Die Erweiterung um das parport
-Device
beseitigt einige der Probleme, die den alten lp Treiber quälen -
es kann den Port mit anderen Treibern "teilen", es ordnet
verfügbaren Parallelports dynamisch Device-Nummern zu, anstatt
eine feste Zuordnung zu erzwingen, und einiges mehr.
Die Verfügbarkeit des parport
-Device hat eine ganze Reihe
neuer Treiber für den Parallelport ermöglicht, so z.B. für
ZIP-Laufwerke, externe CD-ROMs und Festplatten usw. Einige davon
sind auch für Kernel 2.0.x verfügbar; schauen Sie sich im Web um.
Ich werde den parport
-Treiber vollständiger beschreiben,
sobald ich ihn selbst benutze; in der Zwischenzeit können Sie das
File Documentation/parport.txt
in den Kernelquellen oder
auf http://www.cyberelk.demon.co.uk/parport/parport.txt
lesen, oder einen Blick auf die parport-Webseite
(http://www.cyberelk.demon.co.uk/parport.html
)
werfen.
Serielle Devices heißen üblicherweise unter Linux
/dev/ttyS1
oder ähnlich. Das Programm stty (http://www.picante.com/~gtaylor/pht/man/stty.1.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.8.html
)
können einige erweiterte Attribute eingestellt werden und IRQs bzw.
I/O-Adressen für nicht-standardmäßige Schnittstellen konfiguriert
werden. Weitere Informationen über serielle Schnittstellen können
in der Serial-HOWTO
(http://sunsite.unc.edu/LDP/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öschen.
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 die
"closing_wait"-Kommandozeilenoption von setserial
(Version 2.12 oder später) eingestellt werden. Die seriellen
Schnittstellen eines Rechners werden üblicherweise durch einen
Aufruf von setserial
im rc.serial
Bootfile
initialisiert. Der Aufruf für den Port, an dem der Drucker hängt,
kann so modifiziert werden, daß zusammen mit den anderen
Parametern die "closing_wait"-Option eingestellt wird.