Login
Newsletter
Werbung

Fr, 21. Mai 2004, 00:00

HP PSC Drucker mit CUPS einrichten

USB-Printer Kernelmodul

Um einen Drucker am USB-Port zu betreiben, benötigt man das Kernelmodul printer.o. Zuerst muss man auf der obengenannten Seite [1] überprüfen, welche Minimalvoraussetzungen für seinen Drucker gelten. Für den PSC 2210 benötigt man einen Kernel 2.4.19 oder neuer. Dieser dürfte allerdings noch nicht weit verbreitet sein (z.Zt. nur bei SuSE 8.1). Auf meiner Maschine befindet sich noch ein 2.4.10 Kernel (SuSE 7.3). Für diesen Fall geht man auf David's modified version of printer.c unter [2]. Im "README" wird ausführlich besprochen, wie man OHNE den Kernel neu zu kompilieren ein neues (modifiziertes) Kernelmodul printer.o erstellt. Dies hat ganz gut funktioniert, wobei ich noch zwei Sachen erwähnen will:

  • Für diesen Vorgang benötigt man die Kernel-Sourcen, die zumindest bei SuSE standardmäßig nicht installiert sind. Also mit YAST das Paket "kernel-source" aus der Serie d (Development) nachinstallieren.
  • Das Kompilieren mit "make" lief nicht durch, wobei die Fehlermeldung allerdings selbsterklärend war. Um das neue Kernelmodul über den Kernel zu informieren, musste ich die Kernel-Headerdatei im /boot Verzeichnis an eine andere Stelle mit anderem Namen kopieren:
    cp /boot/vmlinuz.version.h /lib/modules/`uname -r`/build/include/linux/version.h
    Das `uname -r` ist hier eine Kommandosubstitution und steht bei mir z.B. für "2.4.10-4GB".

Der HPOJ-Treiber

HPOJ ist nicht etwa der Druckertreiber. Es ist ein sog. low-level Treiber, der für die Kommunikation zu den Extra-Funktionen (Scannen, Photocard-Zugriff...) verantwortlich ist. Daneben läuft auch noch ein Druckerdämon, der allerdings nur in Verbindung mit dem alten Spoolersystem lpd benötigt wird. Im Paket gibt es zudem ein kleines grafisches Frontend xojpanel, welches das Druckerdisplay darstellt. In den längerfristigen Planungen des HPOJ-Maintainers (David Paschal) soll dieses Programm aber Schritt für Schritt mehr Aufgaben übernehmen.[3]

Erwähnenswert ist noch, dass das Kommunikationsprotokoll MLC (Multiple Logical Channels) von einem IEEE-Standard abgeleitet ist, und es erlaubt, auch mehrere Geräte mit den PTAL-Kommandos zu kontrollieren.

Zum Thema Installation lässt sich folgendes sagen: Wer eine (egal welche) SuSE-Distribution verwendet, sollte als erstes das bestehende hpoj-Paket mit rpm -e hpoj entfernen. Bei Mandrake sieht's wohl besser aus, da der dortige Maintainer (Till Kamppeter) regelmäßig bei der hpoj-devel list [4] vorbeischaut.

Man lädt sich also auf der Download-Seite das .tgz herunter und führt wie immer folgende Schritte aus:

  1. z.B. im Verzeichnis /usr/local das Paket mit tar -xzvf hpoj-0.90.tgz entpacken
  2. ins hpoj-Verzeichnis wechseln und ./configure ausführen
  3. make
  4. make install (spätestens hier sind Root-Rechte erforderlich)

Der ./configure-Schritt blieb bei mir hängen, da SNMP-Support nicht gefunden wurde. Dieser ist notwendig für Geräte, die an einem HP JetDirect Printserver hängen. Lösung:

  • Entweder ein ./configure --without-snmp
  • Oder den Pfad zur Headerdatei snmp.h angeben, z.B. ./configure --with-snmp /usr/src/`uname -r`/include/net

Verbindung testen

Nach der erfolgreichen Installation stehen einige Kommandos, die mit ptal- beginnen, zur Verfügung (wenn nicht, muss evtl. die PATH-Variable mit /usr/local/sbin erweitert werden). Zur einmaligen Initialisierung gibt es den Befehl ptal-init setup. Nach erfolgreichem Abschluß dürfte folgender Eintrag

mlc:usb:PSC_2200_Series

existieren.

ptal-devid mlc:usb:PSC_2200_Series gibt auf der Konsole ein paar Infos zum Drucker aus.

Der ptal-Daemon läuft jetzt, sollte aber, wenn's geht, beim Reboot auch wieder automatisch anlaufen. Gemäß dem SysV Init-Konzept ist folgendes zu tun:

  1. Ins Verzeichnis /etc/init.d wechseln und einen symlink zu ptal-init anlegen. Bei mir war das ln -s /usr/local/sbin/ptal-init ptal-init
  2. Ins passende Runlevel-Verzeichnis wechseln (normalerweise rc.5d) und dort Start/Stop-Skripte (mit symlinks) anlegen
  3. Das Startskript muss vor CUPS (bei mir S12cups) sein, also ln -s ../ptal-init S11ptal-init
  4. Das Stopskript muss nach CUPS sein (bei mir K11cups) ln -s ../ptal-init K12ptal-init

Seit SuSE 8.0 (und ich vermute, auch bei anderen neuen Distributionen) kann man auch via Konfigurationsprogramm (z.B. YaST2->System->Runlevel Editor) das Skript in das Runlevel-System einbinden. Allerdings scheint mir z.Zt. nicht gesichert, ob dann auch die Reihenfolge (zuerst ptal-init, dann CUPS) eingehalten wird.

Probleme beim Neustart wird es geben, falls das Kernelmodul printer.o nicht automatisch beim Hochfahren mitgeladen wird. Abhilfe schafft man entweder in einer Startdatei, z.B. /etc/init.d/boot.local mit dem Eintrag /sbin/insmod printer oder wie bspw. in neueren SuSE-Distributionen im YAST2-sysconfig-Bereich durch Anhängen von printer in der HOTPLUG_USB_HOSTCONTROLLER_LIST oder HOTPLUG_USB_STATIC_MODULES.

Ein weiteres Problem, wenn auch weitaus unwahrscheinlicher, könnte durch ein falsch geladenes USB-Kernmodul entstehen. Falls tatsächlich die Verbindungstests schiefgehen sollten, würde ich an einer der im letzten Abschnitt genannten Stellen, z.B. usb-uhci durch usb-ohci oder uhci ersetzen. Falls jetzt ein kleines Chaos bei den Modulen oder bei den gestarteten Dämonen herrscht, kann man ja neu starten.

Der HPIJS-Treiber und Ghostscript

Die Basisfunktionalität des Druckens übernimmt das Gespann HPIJS (HP Inkjet Server) und Ghostscript. Das HPIJS Modul ist eine Art Plug-In für Ghostscript. Diese Plug-In Architektur von Ghostscript erlaubt das Dazuladen von "Druckertreibern", ohne gleich das ganze Programm neu übersetzen zu müssen.

Allerdings erfordert dies mindestens die GNU Ghostscript Version 6.53 (eingeschränkt) oder gleich 7.05 (testen mit dem Kommando gs -v). Daneben empfehle ich unabhängig von der Distribution, das neueste hpijs.tgz von [5] herunterzuladen und zu installieren. Das Dreiergespann (./configure; make; make install) sollte keine Probleme bereiten, nichtsdestotrotz stellt HP eine detaillierte Installationsanweisung, bei der auch auf die Ghostscript-Problematik eingegangen wird, unter [6] zur Verfügung.

Kurt Pfeifle machte mich darauf aufmerksam, dass es besser sei, ESP Ghostscript 7.05 zu verwenden, welches dann auch mit anderen Druckern (die nicht HPIJS verwenden) besser zusammenarbeitet [7].

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung