7. September 2011

thumbnail

pfSense & CUPS – Ein Printserver mit Hindernissen

Nachdem meine Firewall unter pfSense (FreeBSD) eh die ganze Zeit läuft und ich gerne meinen Drucker von allen Rechnern aus verwenden wollte, sollte der Router diese nebentätigkeit noch mit übernehmen.

Da pfSense allerdings einige kleine Änderungen hat, habe ich mich verzweifelt bemüht mit meinen Standard-Linux-Kenntnissen CUPS zu installieren. Bis ich auf die Funktion Package Add gestoßen bin. Aber auch mit pkg_add cups wollte es nicht, also die ganzen Optionen gewälst und mit pkg_add -r cups lief dann die Installation durch.

Nun war die nächste Schwierigkeit per browser auf die Oberfläche zu kommen.
Dazu geht man auf die Weboberfläche von pfsense und dort geht über Firewall -> Rules auf die LAN Schnitstelle, bzw. auf die Schnittstellen, von denen aus der/die Drucker später erreicht werden soll, und legt eine neue Regel an und wählt:

  • Action: „Pass“
  • Interface: „LAN“ (oder das von wo aus der Druckerzugriff stattfindet)
  • Protocol: „TCP“
  • Source: Auf was man beschränken möchte, z.B. „LAN subnet“
  • Destination: „LAN address“
  • Destination port range: from: „(other)“ „631“
    to: „(other)“ „631“
  • Description: z.B. „CUPS“ oder was man möchte

und nun mit Save speichern.

So und welch Schock, man kommt immer noch nicht per http://IP-Adresse:631 auf die Seite. Nun fand ich die Info, dass man die cupsd.conf anpassen muss. Hier findet ihr meine: cupsd.conf Ihr könnt eigentlich die komplett übernehmen, müsst nur das Subnet evtl. anpassen, wenn ihr einen anderen bereich als 192.168.0.* /24 verwendet.

Jetzt kam ich auf die Oberfläche. Doch wie erkenne ich nun meinen Drucker? Unter „Drucker hinzufügen“ wurde keiner gefunden. Unter „Verfügbare Drucker auflisten“ wurde dann nur der CUPS-PDF Drucker gelistet. Diesen habe ich dann einfach mal mit den Standard-Werten eingerichtet. Aber von meinem HP LaserJet M1005 MFP noch keine Spur.

Mit dem befehl dmesg fang ich dann folgende Zeilen:
ugen1.2: at usbus1
ulpt0: on usbus1
ulpt0: using bi-directional mode

Was mich dazu brachte, dass er den Drucker zwar findet, aber nicht direkt einbinden kann. Also habe ich etwas weitergeforscht und in der /etc/devfs.rules noch folgende Zeilen hinzugefügt:
add path ‚ugen1.2‘ mode 0660 group cups
Das ugen1.2 müsst ihr evtl entsprechend eurer dmesg ausgabe anpassen! Das kommt immer auf den USB Port an.

Nach den Änderungen habe ich noch eine rc.conf.local angelegt, da sich der cupsd nicht starten ließ. Dort steht bei mir:
cupsd_enable=“YES“
devfs_system_ruleset=“system“

Anschließend muss man die beiden Dateien neu laden:
/etc/rc.d/devfs restart
/usr/local/etc/rc.d/cupsd restart

Jetzt haben mir die Treiber gefehlt. Dank foo2zjs habe ich bei ihm die Treiber gefunden und konnte sie mit pkg_add -r foo2zjs installieren.

Nun musste der Drucker natürlich noch die Treiber/Firmware bekommen. Nach einigem Googeln hab ich auch irgendwie herausgefunden wie das geht. Also mittels /usr/local/etc/rc.d/cupsd stop cups lieber wieder angehalten und mit:
cd /usr/local/bin/
./getweb 1005                                                           
# statt 1005 euer Druckermodell nach der Liste von foo2zjs installieren.
Nun müsste dort eine .img Datei im Verzeichnis liegen
arm2hpdl Datei.img > Datei.dl                  # Dann habt ihr die Firmware im Druckerformat.

Nun mit cat /usr/local/bin/Datei.dl > /dev/ugenX.Y die Firmware laden. Anschließend habe ich die Datei noch in den Firmwareordner von foo2jzs kopiert: cp /usr/local/bin/Datei.* /usr/local/share/foo2zjs/firmware (das * im die img und die dl Datei dort zu haben aus Vorsicht 😉 )

CUPS wieder gestartet und: der Drucker wurde leider immer noch nicht erkannt :-(. Dafür habe ich in der printers.conf unter /usr/local/etc/cups/ den bereits installierten PDF-Drucker gefunden. Also cups wieder stoppen und mit dem vi habe ich einfach die ganzen Zeilen mit dem HP Namen in die Datei geschrieben.
Anschließend CUPS wieder gestartet und siehe da, ich hatte meinen Drucker 🙂
Jetzt habe ich ihn noch mal neu konfiguriert mit dem Editor aus der Seite. Dabei habe ich den Hersteller, das Modell und den Treiber noch mal neu geladen und dabei kam dann diese printers.conf heraus.

Gleich mal unter Windows den Drucker eingebunden:
Im Druckermenu „Drucker hinzufügen“ wählen, dann „Netzwerkdrucker“ auswählen und im nächsten Dialog folgendes unter „Verbindung mit einem Drucker im Internet […] herstellen: http://192.168.0.1:631/printers/HP-M1005 (IP-Adresse und Druckername natürlich angepast). Nun noch den Windows Treiber auswählen und dann gleich mal eine Testseite drucken. -> Und es geht 🙂

So viel Spaß und bei Fragen einfach nen Kommentar hinterlassen.

Schöne Grüße,
Felix


2 Comments »

  1. Hans-Peter Podstawa sagt:

    Hi Felix,
    super Tutorial.
    Ich habe die pfSense auf einem Alix 2D13 laufen und frage mich nun, auf welcher Hardware Deine pfSense läuft und welche Cups-Version das ist.
    Da das ALIX ja nun nicht wirklich viele Recourcen übrig hat, bin ich mir nicht wirklich sicher, ob das ganze bei mir zum Erfolg führt.
    Ich hatte bis Dato einen funktionierende Cups/Sane Config mit einem HP-Officejet5600 auf einem NAS mit OpenMediaVault (OMV)laufen und greife darauf ausschließlich mit Debian-Jessie PC´s zu.
    Das OMV lief bis dahin mit Debian6 (Squeeze) und einem Cups 1.4.
    Nach einem Update auf Debian7 (Wheezy) kam Cups 1.5.3 und damit die Probleme.
    Wenn ich den Drucker auf dem OMV starte, kein Problem, übers Netzwerk, wo auf Jessie die Cups-Version 1.7.3 läuft, nichts mehr zu machen.
    Warum auch Sane den Dienst quittiert hat, kann ich noch nicht beurteilen, ist auch erst mal nicht so wichtig.
    Als Alternative nutze ich z.Zt. die, der pfSense vorgeschaltete Fritte7490, die zwar als Druckserver funktioniert, aber keinen Sane-Server integriert hat. (machbar mit Freetz, aber Leihgerät 🙁 )
    Danke für jeden Tipp.
    Gruß Peter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.