PJL-Kommandos für Linuxprinting.org gesucht

Aufmacher News

Kurt Pfeifle
12.02.2001

Jeder Linux-Anwender, der einen Drucker am Parallelport (oder auch an einem USB) betreibt,kann jetzt mithelfen, die Unterstützung dieses Druckers unter Linux zu verbessern (falls sie nochnicht optimal ist).

PJL und die Linuxprinting-Datenbank

Es geht darum, die Linuxprinting-Datenbankmit Informationen über verfügbare PJL-Kommandos zu befüllen. Diese Datenbank baut GrantTaylor, Autor des Linux PrintingHOWTO schon seit längerer Zeit auf. Sie ist der Schlüssel für dieVerwirklichung von einem (oder mehreren) bestmöglichen freien Drucksystem(en) fürLinux. Bei vielen Druckermodelle sind die Datenbank-Einträge der funktionierendenPJL-Kommandos jedoch noch sehr lückenhaft. Je besserund schneller die Datenbank befüllt wird, umso umfassender und rasanter wird dieDruckerunterstützung für Linux (und, nebenbei gesagt, auch für *BSD und andere freie --oder auch unfreie! -- UNIX-Betriebsysteme) in den nächsten Monaten vorankommen.Die Datenbank dient nicht nur CUPS -- auch andere Spool- und Drucksysteme wie BSD-LPD,LPRng oder PDQ werden davon profitieren.

Über die Hintergründe dieser Datenbank lässt sich bereits einiges in derCUPS-FAQ nachlesen. Bei Interessekann auch eine umfassende und für Laien verständliche Beschreibung der Hintergründedieser Aktion nachgeliefert werden. (Das Honorar geht an das KDE-Projekt... ;-) Hier nur in aller Kürze, was aktuell wichtig ist.

Ein Shell-Script zum Auslesen der PJL-Fähigkeiten des Druckers

Das Übertragen von PJL-Fähigkeiten für tausende von Druckern aus denHerstellerdokumentationen in die Datenbank ist sehr langwierig und fehlerbehaftet.Lässt sich diese Dokumentation denn überhaupt auftreiben? Ist sie vollständig? Istsie fehlerfrei? -- Es gibt einen besseren Weg: man fragt einfach den Drucker selbst...Till Kamppeter, Architekt des neuen Mandrake 7.2-Drucksystems (und auch Autordes freien GUI-Tools für CUPS, XPP), hat ein kleines Shell-Script vorgelegt,das jedem Linux- (oder BSD-)Anwender ermöglicht, seinen Drucker zu befragen und soeinen Beitrag für die Datensammlung auf Linuxprinting.org zu leisten.Hierfür sollte man das folgende 6-zeilige Shellscript verwenden, das wir auf unseren FTP-Server agbelegt haben (weil es Sonderzeichen enthält).

Ich beschreibe gleich kurz, wie das Script funktioniert. Zuerst noch einige (hoffentlich auch für Linux-Anfänger nachvollziehbare) Punkte, die jedem Freiwilligen helfen sollten, die benötigten Daten für Linuxprinting.org einzusammeln:

  • Auf meinem Rechner heisst das Script get_pjl_info.sh und befindet sich in meinem Homeverzeichnis.
  • Mit chmod a+x get_pjl_info.sh wurde es ausführbar gemacht.
  • Mit ./get_pjl_info.sh kann ich es in meinem Homeverzeichnis ausführen.

Was das Shellscript braucht

Damit die Sache klappt, müssen mehrere Voraussetzungen zutreffen:

  • Es muss ein Drucker mit dem Parallelport des Rechners verbunden sein.
  • Es muss ein neueres Parallelkabel verwendet werden, das bi-direktionale Kommunikation zulässt.
  • Es darf im BIOS des Rechners keine bi-direktionale Kommunikation ausgeschaltet sein.
  • Es muss durch root ausgeführt werden.
  • Es muss im Kernel die Parallelport-Unterstützung aktiv sein.

Letztere kann meist als Modul nachgeladen werden, wenn sie nicht bereits zur Bootzeit aktiviert ist. ["Warum erzählt der Pfeifle das?", fragen sich vielleicht manche, "wer keinen Parallelport aktiv hat, hat auch keinen Drucker dran und kann den Test eh' nicht machen." -- Falsch. Da Till (und ich) momentan noch nicht wissen, wie wir die bi-di Kommunikation mit dem Skript über das Ethernet zuwege bringen, müssen Helfer mit Netzwerk-Druckern ihre Geräte kurzzeitig an ein Parallelkabel hängen. Ich musste diese Dinge selbst erst rausfinden, als ich den LaserJet 5L meines Chefs von seinem Schreibtisch auslieh (heut' ist Sonntag und er nicht da ;-), um den Test zu fahren...] Also -- Nachladen des Moduls, falls nötig:

root@espprintpro:/home/kurt > modprobe parport_pc
root@espprintpro:/home/kurt > modprobe printer

Überprüfen des Ergebnisses:

root@espprintpro:/home/kurt > lsmod

Zeigt es Einträge über parport_pc, parport, printer und lp an?Dann ist alles OK... Bei Verwendung eines USB-Druckers muss das Skript leicht abgeändertwerden. Anstelle von /dev/lp0 muss an zwei Stellen /dev/usb/lp0eingetragen werden. Und selbstverständlich muss im Kernel ebenfalls USB aktiviert sein.

Wie das Shell-Skript funktioniert

Das Skript benutzt ein PJL-Kommando, um den Drucker zu fragen, welche anderenPJL-Komandos er kennt und unterstützt. Falls eine Verständigung zustande kommt,schreibt das Script die Rückmeldungen des Druckers in die Datei opts.txt.Wenn das Skript nicht selbst zum Ende kommt, nachdem der Drucker mit seiner Antwortfertig ist, kann man es mit STRG + C abbrechen. Die gewonnene Datei sollteman erst einmal anschauen: wenn sie leer ist, kam keine Kommunikation zustande. Einenicht-leere Datei könnte auch bedeuten, dass der Drucker zwar keine PJL, jedoch ASCIIunterstützt. Vor dem Test des nächsten Druckers sollte man die Datei umbenennen, damitsie nicht überschrieben wird:

root@espprintpro:/home/kurt > mv opts.txt HP_LaserJet_5L_opts.txt.

Till sammelt alle umbenannten und nicht-leeren opts.txt-Dateien. Einfach eine EMail an die Adresse till.kamppeter@NOSPAM_gmx.net schicken. Bitte auch dafür Sorge tragen, dass die zutreffende Modellbezeichnung des Druckers möglichst exakt wiedergegeben wird. Die Inhalte dieser Dateien werden schnellstmöglich zu Einträgen in die Datenbank übersetzt. Jeder zusätzliche Eintrag bringt die Druckerunterstützung durch freie Software einen kleinen Schritt weiter (und zwar nicht nur mit CUPS, sondern auch mit LPD, LPRng und PDQ!). Till bittet darum, das Script selbst dann auszuprobieren, wenn in der linuxprinting-Datenbank behauptet wird, dass der betreffende Drucker keine PJL unterstützt, da diese Information falsch sein könnte. Weiterhin könnten Informationen, die in der Datenbank bereits enthalten sind, unvollständig sein.

Die meisten jetzigen Einträge bezüglich PJL sind aufgrund von Informationen in den offiziellen Hersteller-Dokumentationen zustande gekommen. Till hat jedoch mittels des Skripts beispielsweise herausgefunden, dass der HP LaserJet 4050 seine voreingestellte Sprache am User-Display mittels eines PJL-Kommandos ändert. Und dies, obwohl es weder am User-Display noch im Druckerhandbuch einen Hinweis auf diese Möglichkeit gibt.

Information:
Kurt Pfeifle: Autor der CUPS-FAQ
e-Mail: kpfeifle@NOSPAM_danka.de

Weitere Infos:



Lizenzierung dieses Textes:
Copyright 2001 Kurt Pfeifle, Autor der CUPS-FAQ
EMail: kpfeifle@NOSPAM_danka.de.

  • Diese Lizenzierungserklärung muss in jedem Falle mit dem Text gemeinsam erhalten bleiben.
  • Der Text darf ohne Abänderung per EMail, auf Webseiten, auf Datenträgern undin Print-Medien frei und kostenlos weiterverbreitet werden.
  • Der Text darf Änderungen oder Kürzungen nur dann per e-Mail, auf Webseiten, auf Datenträgern und in Print-Medien frei und kostenlos weiterverbreitet werden,wenn die Änderungen geeignet kenntlich gemacht sind.
  • Der Autor bittet bei Veröffentlichung jedoch um eine kurze Nachricht.

Ähnliche Artikel

Kommentare

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...