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

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...