Drucken unter Linux |
Diese Seite ist eine Sammlung meiner Erfahrungen mit meinen Druckern. Das Thema wird also nicht erschöpfend behandelt. Das Thema Druckeradministration wird aber an anderer Stelle ausführlicher behandelt. Hier eine kurze Zusammenfassung der Grundlagen, um dann auf die Installation der konkreten Druckerkandidaten zu kommen.
| Device | Anschluss |
|---|---|
| /dev/lp0 | parallele Schnittstelle (LPT1) |
| /dev/lp1 | parallele Schnittstelle (LPT2) |
| /dev/ttyS0 | serielle Schnittstelle (COM1) |
| /dev/ttyS1 | serielle Schnittstelle (COM2) |
| /dev/usblp0 | per USB angeschlossener Drucker |
Der Druck erfolgt nicht direkt, sondern über den Druckdämon, der gewährleistet, dass die Drucke immer serialisiert werden und das Spooling übernimmt. Um zu verhindern, dass ein Anwender oder ein Anwenderprogramm am Druckdämon vorbei auf die Schnittstelle direkt druckt, ist diese normalerweise für den Anwender nicht beschreibbar.
Damit der Druckerdämon einen logischen Drucker der Schnittstelle zuordnen kann, muss er in die Datei /etc/printcap eingetragen werden. Bei SuSE-Linux beispielsweise wird dies durch das Administrationstool YAST erledigt.
/usr/bin/gs -q -dNOPAUSE -sDEVICE=clj5 -sOutputFile=-Der Name des Skripts (beispielsweise /usr/local/cljf) wird dann unter :if=/usr/local/cljf: in die /etc/printcap eingetragen.
Das Umsetzen der Druckinformationen in die Sprache des Druckers wird durch das Paket ghostscript erreicht, der sich hinter dem apsfilter verbirgt. ghostscript braucht den Namen des passenden Ausgabegerätes und dies ist für den Color Laserjet cljet5.
Der Treiber cljet5 ist nicht in der Liste vorhanden, die YAST anbietet. Man muss ihn als benutzerdefiniert direkt eintragen.
Letztlich muss in der /etc/printcap als Parameter if stehen: :if=/var/lib/apsfilter/bin/cljet5-a4-auto-color-300:
Ab SuSE 8.0 wurde das Druckersystem völlig umgestellt. Leider lief daraufhin mein oben
genannter Eintrag nicht mehr. Immerhin konnte ich dort über Yast2 und den Treiber
cljet5 einen Farbdruck veranlassen. Allerdings dauert der Ausdruck damit für
jede Seite minutenlang.
Die Ursache konnte ich nicht finden.
Der PSC 950 ist von Linux als Drucker und als Scanner ansprechbar. Die
Faxfunktion des Gerätes konnte ich bislang nicht aktivieren. Die Entwicklung
der Treibersoftware wird durch HP gefördert. Die neuesten Versionen und die
ausführliche Dokumentation findet sich hier:
Schließlich kann es sein, dass die USB-Module des Kernels nicht richtig geladen sind.
Das lässt sich feststellen, indem man sich mit dem Befehl lsmod
Alle Module anzeigen lässt, die mit USB zu tun haben.
Sollten die USB-Treiber fehlen muss man sie starten:
Diese drei Kommandos kann man in die Datei /etc/rc.d/boot.local schreiben, damit sie
bei jedem Neuboot ausgeführt werden. Sollte der Verdacht entstehen, dass sie nicht
einwandfrei arbeiten, kann man sie deaktivieren bevor man sie neu startet:
Anmerkung zu usb-ohci: Dies ist abhängig vom USB-Controller. In manchen Geräten kann der
Treiber auch usb-uhci heißen.
Hewlett Packard PSC 950
Der PSC 950 ist ein Nachfolger in der OfficeJet-Serie.
Das Gerät wird über eine USB-Schnittstelle angeschlossen und
enthält einen Drucker, einen Flachbettscanner und ein Fax.
Diese Kombigeräte werden nach ihren ersten Vorgängern auch OfficeJet
genannt. Man kann sie nicht einfach ansprechen wie einen Drucker und einen
Scanner, sondern es wird eine Kommunikationssoftware benötigt. Ansonsten
bewegt sich nichts. Im Gegenteil kann ansonsten das Gerät leicht blockieren,
so dass man es erst aus- und wieder einschalten muss, damit es wieder
erwartungsgemäß arbeitet.
USB
Der PSC wird über den USB angeschlossen. Zunächst muss geprüft werden, ob USB überhaupt
unterstützt wird. Dazu stellt man mit dem Aufruf lspci -v fest, ob der
USB-Controller einen Interrupt zugewiesen bekommen hat.
Sollte kein Interrupt zugewiesen sein, muss im BIOS der USB-Betrieb freigeschaltet werden.
# lsmod | grep usb
usb-ohci 18880 0 (unused)
usbcore 55136 0 [printer usb-ohci]
#
modprobe usbcore
modprobe usb-ohci
modprobe printer
rmmod printer
rmmod usb-ohci
rmmod usbcore
Der HP-Officejet-Treiber
Unter der folgenden Adresse gibt es die Treibersoftware für den HP PSC 950 und andere
HP Officejets.
hpoj.sourceforge.net/suplist.shtml
Die Software findet sich aber auch auf der S.u.S.E. 7.3. Hier gibt es ein Problem: es fehlen die Verzeichnisse /dev/ptal-mlcd und /dev/ptal-printd, die man vor Ausführen des Befehls ptal-init setup mit mkdir anlegen muss (Hinweis von Thomas Brandes).
Auch mit der S.u.S.E. 8.0 gibt es Probleme mit dem hp-officeJet Paket. Der Versuch, die aktuelle Version als rpm zu laden, funktioniert nicht. Es gibt zu viele Abhängigkeiten, die auch aktualisiert werden müssten. Einwandfrei klappte bei mir allerdings das Herunterladen der Sourcen und Generieren der Binaries. Dazu gibt man einfach folgende Befehle nacheinander ein:
tar xvf hpoj-0.90.tgz cd hpoj-0.90 configure make make install
root sollte man natürlich gerne sein, wenn man den letzten Befehl eingibt. Und aus unerfindlichem Grund ist bei SuSE 8.0 das Kommando make nicht mehr in der Standardinstallation. Das sollte man noch nachinstallieren.
ptal-init setupDas Programm fragt zuerst, ob man gern die parallelen Anschlüsse durchsuchen will. Das darf man verneinen. Interessanter ist die Suche der USB-Schnittstelle.
Danach werden die USB-Anschlüsse durchsucht und er meldet ein Device, dessen Namen man in Zukunft braucht und sich notieren sollte. In meinem Fall heißt das Gerät:
mlc:usb:PSC_900_Series
lp=/dev/ptal-printd/mlc_usb_PSC_900_Series: \
Hinter diesem Eintrag verbirgt sich eine Pipe, die den ptal-Treiber aufruft. Nach dem Eintrag in die /etc/printcap muss der lpd neu gestartet werden. Dazu wird mit dem Befehl ps die Prozessnummer des lpds gesucht und dieser mit kill abgeschossen. Anschließend startet man den lpd so wieder, wie er im ps in der Kommandozeile stand. Diese Schritte müssen natürlich als root gemacht werden.
linux> ps -ax | grep lpd 426 ? S 0:00 /usr/sbin/lpd 1330 pts/2 S 0:00 grep lpd linux> kill 426 linux> /usr/sbin/lpd linux>
Um den Drucker bereits nach dem Booten zur Verfügung zu haben, muss der Aufruf von ptal-init in den rc-Skripten erfolgen und zwar vor dem Start des lpd. Falls Sie eine aktuelle Version des OfficeJet-Treibers besitzen, wird automatisch ein Skript namens /etc/init.d/ptal-init installiert. Falls das nicht passiert, muss folgende Änderung in den Skript des lpd eingetragen werden. Beides schadet aber auch nicht.
Im Verzeichnis /etc/init.d findet man den Skript lpd. Hier kann man Aufruf hineinpatch. Direkt hinter den start der Startaufruf und hinter den lpd beim Stopaufruf.
start)
ptal-init start
echo -n "Starting lpd"
...
stop)
echo -n "Shutting down lpd"
killproc -TERM /usr/sbin/lpd
....
ptal-init stop
;;
Ganz korrekt kann man auch einen eigenen Skript ptal schreiben, diesen in /etc/init.d abstellen und mit einem symbolischen Link S08ptal und K14ptal in /etc/init.d/rc2.d darauf verweisen.
Die Installation des Scanners baut auf dem ptal-init auf und wird
hier beschrieben.
Interessant wird die Installation dann, wenn man ihn über eine Netzwerkkarte oder einen
Printserver ansteuert. In meinem Fall ist das eine JetDirect-Karte von HP.
Dazu brauchen wir zwei Dinge: Erstens muss die IP-Nummer ins Netz passen. Dazu muss sie
meist umgestellt werden. Wie das geht, steht im Handbuch des Druckers. Mit etwas Probieren
gelingt es aber auch so. Mein Netz hat die Nummer 192.168.109.0. Also muss eine solche
Nummer verwendet werden, wobei die 0 durch eine im Netzwerk noch nicht vergebene Zahl
ersetzt werden muss. Als Zweites benötigen Sie den Namen des Druckservice innerhalb der
Karte. Jeder lpd-Server kann prinzipiell beliebig viele Drucker verwalten. Da die HP
Jetdirect nur einen Drucker kennt, nennt sie ihn lp. Auf einigen Druckservern
habe ich auch schon LPT1 oder COM1 gesehen.
Ein korrekter, ausreichender Eintrag in der /etc/printcap lautet:
Wichtig sind hier die Einträge unter rm und rp. Sie beschreiben das Ziel des Druckes.
lp wird irrelevant, weil es keine lokale Schnittstelle mehr gibt. Man könnte auch
lp=/dev/null schreiben.
Hewlett Packard Laserjet 5M über Netz
Die dritte Variante ist ein völlig unproblematischer Drucker. Der Laserjet 5M besitzt
Postscript und braucht dadurch nicht einmal eine Ghostscript-Anpassung. Man findet ihn in
jeder Druckerliste und sollte das nicht der Fall sein, gibt es sicher einen allgemeinen
Postscript-Druckereintrag, den man verwenden kann.
lp:\
:lp=:\
:rm=192.168.109.55:rp=lp:\
:sd=/var/spool/lpd/lp:\
:lf=/var/spool/lpd/lp/log:\
:af=/var/spool/lpd/lp/acct:\
:la@:\
:tr=:cl:sh:
Doppeltes Spiel mit Yast2
Lässt man diesen Drucker von Yast2 bei SuSE-Linux installieren, bekommt man zwei
Einträge in der printcap. Der erste Eintrag ist für das lokale Drucksystem.
Der zweite Eintrag wird normalerweise remote genannt und ist für den
Netzwerk-Server.
remote:\
:cm=lpdfilter method=raw color=yes:\
:lp=lp@192.168.109.55:\
:sd=/var/spool/lpd/remote:\
:lf=/var/spool/lpd/remote/log:\
:af=/var/spool/lpd/remote/acct:\
:ar:force_localhost@:\
:tr=:cl:sh:
lp:\
:cm=lpdfilter drv=upp method=auto color=yes redirect=remote:\
:lp=/dev/null:\
:sd=/var/spool/lpd/lp:\
:lf=/var/spool/lpd/lp/log:\
:af=/var/spool/lpd/lp/acct:\
:if=/usr/lib/lpdfilter/bin/if:\
:la@:\
:tr=:cl:sh:
Die Konfiguration des Druckers läuft über den Eintrag cm. Diese Informationen werden
dann vom if-Skript ausgewertet.
| Homepage | (C) Copyright 2001 Arnold Willemer |