Printserver mit HPLIP und CUPS auf der TS-119

  • Hallo,


    für alle HP-Drucker bietet HP die HPLIP-Linuxtreiber (GPL-Lizenz) an. Zusammen mit CUPS kann man damit aus jedem 'billigen Tintenstrahler' mit USB-Anschluss einen vollwertigen multiusertauglichen Postscript-Netzwerkdrucker machen. Wie das geht möchte ich hier kurz erklären.


    Diese Anleitung bezieht sich ganz konkret auf ein TS-119 mit Firmware 3.3.1 und einen beliebigen USB-Drucker von HP. Alle erforderliche Software außer den HPLIP-Treibern wird per ipkg installiert. HPLIP gibt es auch als ipkg, aber damit habe ich keinen Erfolg gehabt. Bei mir sind auch Perl und Python über ipkg installiert, die es alternativ auch als qpkg gibt. Alle Pfade in dieser Anleitung passen nur, wenn man Perl und Python über ipkg installiert hat.


    1.) Die folgenden Pakete über IPKG installieren:

    Code
    ipkg install sedipkg install gawkipkg install grepipkg install coreutils   (für basename)ipkg install diffutils    (für diff)ipkg install makeipkg install gccipkg install py25-usbipkg install perlipkg install net-snmpipkg install cups-devipkg install cups-docipkg install cups-locale-de   (optional: deutsche Menus in Cups)ipkg install ghostscript


    Neben diesen Standard-Ipkgs ist das udev-ipkg erforderlich, dass es vom User flexobrian speziell für die TS-119 erstellt wurde. Siehe http://forum.qnapclub.de/viewtopic.php?f=33&t=3882
    Es ist aber eigentlich nicht anders zu installieren als alle anderen ipkgs auch:

    Code
    ipkg install http://rieger.info/tsx19/udevd_1.42-1_arm.ipk


    2.) Den Suchpfad um die Verzeichnisse erweitern, in denen die Programme liegen:

    Code
    export PATH=$PATH:/opt/bin:/opt/sbin


    3.) Einen Link setzen, damit Python gefunden wird:

    Code
    ln -s /opt/bin/python2.5 /opt/bin/python


    4.) Die Sourcen von HPLIP von http://hplipopensource.com downloaden (die Datei hplip-3.10.9.tar.gz)


    5.) Die Datei entpacken:

    Code
    tar xvfz hplip-3.10.9.tar.gz


    6.) In das beim entpacken erzeugte Verzeichnis wechseln:

    Code
    cd hplip-3.10.9


    7.) Das folgende Configure-Script läuft nicht mit den von QNAP mitgelieferten Versionen von sed und awk, sondern erfordert die zuvor schon per ipkg installierten Versionen. Damit diese gefunden werden, müssen die von QNAP umbenannt werden. (Bitte beachten: /bin ist eine Ramdisk, nach dem nächsten booten ist die alte Datei wieder da)

    Code
    mv /bin/sed /bin/sed_qnapmv /bin/awk /bin/awk_qnap


    7.) Genauso wird lpr umbenannt. Wobei diese Datei nicht beim Configure genutzt wird, sondern später bei jedem Drucken. (Die Datei liegt nicht auf einer Ramdisk, das Umbenennen bleibt wirksam bis zum nächsten Update der Qnap-Firmware. Danach muss dieses Umbenennen wiederholt werden. :(

    Code
    mv /usr/bin/lpr /usr/bin/lpr_qnap


    9.) der Aufruf des Configure-Scripts, das das Makefile erzeugt, mit den für die TS-119 passenden Optionen:

    Code
    ./configure --with-hpppddir=/opt/share/cups/model --prefix=/opt --libdir=/opt/lib --disable-qt4 --enable-foomatic-drv-install --enable-foomatic-rip-hplip-install --enable-cups-ppd-install --disable-hpijs-install --disable-pp-build --disable-gui-build --enable-cups-drv-install --enable-hpcups-install  --enable-network-build --disable-dbus-build --disable-scan-build --disable-fax-build --with-cupsfilterdir=/opt/lib/cups/filter/  --with-cupsbackenddir=/opt/lib/cups/backend --with-mimedir=/opt/etc/cups/


    10.) In der nun erzeugten Datei 'Makefile' müssen zwei Zeilen angepasst werden:

    Code
    rulesdir = /etc/udev/rules.d

    muss durch

    Code
    rulesdir = /opt/etc/udev/rules.d

    ersetzt werden.


    Code
    hplip_confdir = /etc/hp

    muss durch

    Code
    hplip_confdir = /opt/etc/hp

    ersetzt werden.


    11.) Das Kompilieren:

    Code
    make


    12.) Die Installation (kopieren der Dateien nach /opt...)

    Code
    make install


    13a.) /dev/mtdblock5 temporär zum editieren mounten (gemäß http://wiki.qnap.com/wiki/Runn…wn_Application_at_Startup:(

    Code
    mount -t ext2 /dev/mtdblock5 /tmp/config


    13b.) Eine Datei '/tmp/config/autorun.sh' mit folgendem Inhalt anlegen:

    Code
    /share/HDA_DATA/MY_CONFIG/my_autorun.sh &


    13c.) Die Datei ausführbar machen:

    Code
    chmod +x /tmp/config/autorun.sh


    13d.) /dev/mtdblock5 unmounten:

    Code
    umount /tmp/config


    14.) Ein Verzeichnis 'MY_CONFIG' unter '/share/HDA_DATA/' anlegen:

    Code
    mkdir /share/HDA_DATA/MY_CONFIG/


    15.) In diesem Verzeichnis eine Datei 'my_autorun.sh' mit folgenden Inhalt anlegen:

    Bash
    #!/bin/sh#Warten bis /opt/ gemountet ist (dies ist noch nicht der Fall wenn die eigentliche 'autorun.sh' ausgefuert wird)while [ ! -d /opt/etc/init.d ];dosleep 1done#/opt/lib zu LD_LIBRARY_PATH hinzufügenecho "/opt/lib" >> /etc/ld.so.conf/sbin/ldconfig # Loads /etc/ld.so.conf#UDEV starten/opt/etc/init.d/S50udevd restart &>/tmp/udev-start.log/opt/sbin/cupsd &


    15.) In diesem Verzeichnis eine weitere Datei 'my_set_usb_device_access_rights.sh' mit folgenden Inhalt anlegen:

    Bash
    #!/bin/shchmod 666 /proc/bus/usb/001/*


    16.) Beide Dateien ausführbar machen:

    Code
    chmod +x /share/HDA_DATA/MY_CONFIG/*.sh


    17.) Im Verzeichnis /opt/etc/udev/rules.d/ den Inhalt der Datei 01-usb-storage-custom.rules durch folgenden Inhalt ersetzen (dies führt dazu, das die Datei '/share/HDA_DATA/MY_CONFIG/my_set_usb_device_access_rights.sh' beim Erkennen eines beliebigen USB-Devices ausgeführt :(

    Code
    # Check for USB devicesBUS=="usb", RUN+="/share/HDA_DATA/MY_CONFIG/my_set_usb_device_access_rights.sh"


    18.) Nun muss die TS-119 einmal neu gebootet werden, damit die Scripte ausgeführt werden


    19.) Nach dem Booten ein paar Sekunden warten und den USB-Drucker, kurz aus- und danach direkt wieder einstecken. (Beim ersten Einstecken wird das USB-Device durch irgendetwas anders blockiert)


    20.) Die USB-Adresse des Druckers ermitteln:

    Code
    lsusb

    Die Ausgabe dieses Befehls sollte etwa wie folgt aussehen:

    Code
    Bus 001 Device 004: ID 03f0:6004 Hewlett-Packard DeskJet 5550Bus 001 Device 002: ID 058f:6254 Alcor Micro Corp.Bus 001 Device 001: ID 1d6b:0002

    Die USB-Adresse des Druckers wäre in diesem Beispiel 001:004.


    21.) In das Verzeichnis /opt/share/hplip wechseln

    Code
    cd /opt/share/hplip


    22.) Dort hp-makeuri mit der ermittelten USB-Adresse aufrufen:

    Code
    hp-makeuri 001:004


    Code
    Die Ausgabe müsste in etwa so aussehen:HP Linux Imaging and Printing System (ver. 0.0.0)Device URI Creation Utility ver. 5.0Copyright (c) 2001-9 Hewlett-Packard Development Company, LPThis software comes with ABSOLUTELY NO WARRANTY.This is free software, and you are welcome to distribute itunder certain conditions. See COPYING file for more details.CUPS URI: hp:/usb/deskjet_5550?serial=MY2A81R27B2LDone.

    Das Ergebnis ist die CUPS-URI des Druckers, über die der Drucker ab jetzt identifiziert wird.


    23.) Im Webbrowser den Servernamen der TS119 mit Port 631 aufrufen:

    Code
    http://servername:631/


    24.) Verwaltung->Drucker hinzufügen->Lokale Drucker-hp auswählen


    25.) Unter Verbindung die zuvor ermittelte CUPS-URI des Druckers einfügen, und die folgenden Dialoge bestätigen und dabei die pps-Datei Eures Druckers auswählen (die mit hpcups im Namen).


    26.) Der Server ist nun fertig aufgesetzt. Nun müsst Ihr auf Eurem PC nur noch einen Postscript-Drucker einrichten, dazu benötigt Ihr die pps-Datei, die Ihr zuvor beim Anlegen des CUPS-Druckers ausgewählt habt. Ihr findet sie unter /opt/share/cups/model
    Die PPS-Datei beschreibt die Features(Schwarzweiß oder Farbe, Papierformat, Duplex-Druck,...) Eures Druckers, ohne sie könnt Ihr nur einen Generic-Drucker mit minimalen Features einrichten.


    Bekannte Probleme:
    a.) Beim ersten erkennen des Druckers nach dem Booten wird das USB-Device jedes mal durch etwas anderes blockiert und hplip kann nicht darauf zugreifen. Einmal kurz USB-Stecker ziehen hilft (u.a. erhält der Drucker dadurch eine neue USB-Adresse).


    b.) Die hp-... Befehle funktionieren nur wenn man sie von /opt/share/hplip/ aufruft
    Die hp-... Kommandozeilenbefehle wie hp-levels funktionieren nur wenn man sie im Verzeichnis /opt/share/hplip/ aufruft, ansonsten erhält man eine Fehlermeldung.


    c.) Ich habe mit meinem hp5550 bei einigen Grafiken falsche Farben. Das Fehlerbild ähnelt diesem Bug https://bugs.launchpad.net/hplip/+bug/675936 der dortige Patch half bei mir aber nicht. Es wäre interessant zu erfahren, ob dieses Fehlerbild vom verwendeten Druckermodell oder vom Prozessor abhängt.


    Sonstiges:
    -Beim debuggen ist der Befehl 'hp-levels' sehr hilfreich. Dieser zeigt eigentlich den Füllstand der Tintenpatronen an, aber wenn dieser Befehl Erfolg hat, weiß man, dass man eventuelle Probleme nicht bei USB und hplip suchen muss, sondern bei CUPS.
    Der Befehl hp-check zeigt dagegen immer jede Menge fehlende Abhängigkeiten an.
    -hplip ist hier so konfiguriert worden, dass nur die USB-Druckerunterstützung kompiliert wird. Wenn man darüber hinausgehende Funktionen von Multifunktionsgeräten wie Scannen oder Faxen nutzen möchte, muss man die ./configure-Parameter ändern. Dadurch ergeben sich aber jede Menge neue Installationvorraussetzungen.
    -Das setzen der USB-Access-Rights durch udev (01-usb-storage-custom.rules und my_set_usb_device_access_rights.sh) ist nur eine Quick&Dirty-Lösung, da die eigentlichen Regeln (die Dateien 55-hpmud.rules und 56-hpmud_support.rules) nicht zum QNAP-Linux passen. Das Problem ist seitens HP auch beschrieben:

    Aber bisher ist es mir nicht gelungen, dies in eine saubere Lösung umzusetzen.


    Ich hoffe das kann jemand gebrauchen. Ich drucke eigentlich nur noch so. Das ganze geht mit der TS119 sehr fix und abgesehen von den genannten 3 Bugs problemlos und mit guter Qualität.


    Gruß Jörg

  • Hallo


    Ich bin neu zu QNAP und diese club.
    Ich suche eine moglichkeit meinem HP 970CXI uber USB an meine QNAP TS-410 zu kopeln mit HPLIP.
    In meine zuche hab ich diese bescheibung gefunden.
    Die ist aber fur die TS119........ kan ich die blind folgen oder muss ich die andern?


    Oder hat jemand HPLIP installiert af einem TS-410??


    Danke fur ihre hilfe.