Printserver in heterogenem LAN mit Turboprint, FreeBSD und einem Canon Pixma IP4200

Dass Canon nicht wirklich Vorreiter ist, wenn es um Druckunterstützung für Linux und *BSD geht, wusste ich schon vor dem Kauf des Druckers, trotzdem wollte ich es mit diesem Gerät versuchen, da es Preis-/Leistungsmäßig doch recht viel hergibt. Auf das Rumgemurkse mit den japanischen Linuxtreibern hatte ich allerdings keine Lust, außerdem kann man so die Duplexeinheit sowieso nicht nutzen (geschweigedenn die CD Bedruck-Funktion, aber ob ich die jemals brauchen werde ist ohnehin eine andere Sache). Turboprint soll (leider gegen Lizenz, die sich aber lohnt) sehr gute Treiber für die Pixma Serie bieten, also wollte ich das mal testen. Wunschkonfiguration: FreeBSD 6.0 (ohne X11) als Druckserver mit den Turboprint Treibern. Meine Erfahrungen habe ich zu einem kleinen Howto zusammengefasst, der interessierte Leser möge weiterlesen ;)

Vorab-Info: Wer nicht direkt vom Server aus drucken möchte, kann darauf verzichten, Turboprint auf diesem zu installieren, dann reicht es, eine RAW-Queue über CUPS einzurichten und die Treiber auf den Clients zu installieren.

Allein die Installation von Turboprint (TP) gestaltete sich auf FreeBSD allerdings als nicht intuitiv.

  • Vorbereitung: Linux Emulation und CUPS installieren. Da der Pixma IP4200 ein USB Drucker ist, müssen außerdem folgende Einträge im Kernel vorhanden sein (gegebenenfalls neu bauen):

    device scbus
    device da
    device pass
    device uhci # USB Hub, (kann auch ohci sein) siehe unten!
    device usb
    device umass
    device ulpt # USB Printer device

    Note: To determine whether you need device uhci or device ohci try checking dmesg:

    hivemind# dmesg | grep uhub
    uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1

  • Turboprint Installationsskripte anpassen: Setupfehler der Art

    Begin installation now (y/n)? y
    setup: lib/install-static: not found
    setup: lib/install-post: not found
    setup: lib/install-info: not found

    habe ich behoben, indem ich in den genannten Dateien folgende Änderung vorgenommen habe:
    #!/bin/bash --> #!/usr/local/bin/bash (#!/bin/sh sollte es auch tun). Diese Ersetzungen kann man am besten gleich bei allen Dateien machen, die die Shell brauchen, insbesondere auch bei lib/pstoturboprint.

  • Sollten Fehler über illegal arguments von install erscheinen, dann folgende Ersetzungen in der lib/install-static vornehmen:
    install --mode=644 --> install -m 644
  • Da bei mir weder ein ‘lp’ user noch eine ‘lp’ Gruppe existierte, musste ich diese Zeilen
    chown lp "$TPPATH_LOG/turboprint_lpr.log"
    chown lp "$TPPATH_LOG/turboprint_cups.log"
    chgrp lp "$TPPATH_LOG/turboprint_lpr.log"
    chgrp lp "$TPPATH_LOG/turboprint_cups.log"

    in der install-post noch entsprechend umändern.

  • Danach funzte die Installation mit sh setup einwandfrei. Die Erst-Konfiguration konnte ich nun mit tpsetup vornehmen, da mir für xtpsetup ja das nötige X-Paket (bzw die gtk-libs) fehlen. Bei der Installation sollte CUPS erkannt werden (“Installation for CUPS printing system (TP_CUPS=1)”). Das war allerdings nicht der Fall (“TP_CUPS=0″), also musste ich folgende Einträge in der system.cfg von Turboprint anpassen. Dies sind die angepassten Pfade:

    TPPATH_CUPSDRIVER=/usr/local/share/cups/model
    TPPATH_CUPSSETTINGS=/usr/local/etc/cups/ppd
    TPPATH_CUPSFILTER=/usr/local/libexec/cups/filter

    Gegebenenfalls nochmals setup ausführen. Die Installation solte jetzt ohne weitere (Fehler-)meldungen ablaufen (so war’s zumindest bei mir).

  • Turboprint ist nun installiert und kann angepasst werden: tpsetup ausführen für initiale Konfiguration, den Canon Drucker hinzufügen. Am Ende sollte das Ganze z.B. so aussehen:

    =============================================
    Turboprint Setup - Printer Setup =============================================
    # Print Jobs : 0
    S - Short Name : PixmaIP4200
    L - Long Name : Canon_PIXMA_iP4200
    C - Connection : Local Printer
    N - Device Name : usb:/dev/ulpt0
    ...snip...
  • Wenn nicht schon geschehen, sollte man nun die Datei /usr/local/etc/cups/cupsd.conf anpassen. Dies ist sehr wichtig und muss fehlerfrei geschehen. Ich habe Ewigkeiten gebraucht, rauszufinden, warum der Drucker korrekt erkannt wird, aber einfach nicht drucken will. Es lag ein kleiner Fehler in der cupsd.conf vor, was schwer in der Logfile einzusehen war und den Druck verhinderte. Ich habe die Datei fast so gelassen wie sie kam, habe nur Logfiles, Servername und -admin gesetzt, jedoch die Security Options-Sektion detailliert bearbeitet, hierfür sollte man sich Zeit lassen.
  • Über das CUPS Webinterface kann man nun auf die CUPS Drucker zugreifen:
    http://server-ip:631
    Als nächstes sollte der neue Drucker hinzugefügt werden. Da sich Turboprint mittlerweile sehr gut in CUPS integriert, sollten die TP-Treiber hier nun verfügbar sein. Zunächst trägt man einen Namen und eine Beschreibung ein. Unter ‘Device for PixmaIP4200′ wählt man nun ‘USB Printer #1′. Dieser Eintrag ist allerdings nur verfügbar, wenn das nötige device /dev/ulpt0 existiert, was wiederum nur mit der oben genannten Kerneloption der Fall ist. Nun wählt man den ‘Canon Turboprint’ Treiber und das entsprechende Modell. Der Drucker sollte nun erkannt werden.
  • Um die Installation zu testen, können wir nun Testseiten drucken. Ganz intuitiv unter http://server-ip:631/printers/PixmaIP4200 und/oder direkt mit tpconfig: Drucker auswählen, in die Toolbox wechseln (T) und eine Testpage (T) auswählen und drucken (0 – 2). Bemerkung: PixmaIP4200 ist der gewählte Druckername.
  • Sollte alles funktionieren, kann der Drucker freigegeben werden für das lokale Netz. Das geht z.b. per IPP/CUPS oder Samba. Dabei helfen:
    Drucken über Samba
    Drucken über IPP
    Ich habe das ganze über IPP gelöst, geht einwandfrei schnell und ohne Probleme beim ersten Mal (bei Windows!!)
  • Dazu sei noch folgendes zu sagen: Will man in heterogener Umgebung (d.h. einem LAN mit Win und Linux/*BSD Rechnern) drucken, kann der Drucker als RAW-Printer eingerichtet werden, d.h. ohne Treiber. Nachteil: Vom Server direkt aus ist das Drucken unmöglich. Die Treiber werden dann auf jedem Client einzeln installiert, bei einem “nur-Windows-LAN” ist das auch kein Problem, da der Pixma mit Windows-Treibern kommt. Windows ist es allerdings egal, ob der Drucker auf dem Server dazu als RAW-Printer eingerichtet ist oder nicht. Wir haben den Drucker auf dem Server nicht als RAW-Printer installiert, sondern mit den TP-Treibern. Vorteil: Man kann vom Server aus drucken und von allen Win-Clients. Nachteil: Man kann nicht von Linux-Rechnern drucken, die auch noch im Netz hängen. Dazu muss man den Drucker wie erwähnt zu nem RAW machen. Das Ganze geschieht wieder über das CUPS-Webinterface, Drucker modifizieren und bei ‘Hersteller/Modell’ den Eintrag ‘RAW’ auswählen. Jetzt kann man nicht mehr vom Server aus, dafür von allen Clients drucken, ob Win oder Linux/*BSD. Ich habe noch einen ubuntu-Rechner, auf dem nun also das Drucken über den Server ermöglicht werden soll.
  • Das hat auch eine Weile gedauert, weil es zuerst nicht so funktionierte wie es sollte. Das ubuntu Wiki sagt z.B., in der client.conf solle der ServerName Eintrag angepasst werden. Das hat bei mir allerdings nicht geklappt, weil dann der Eintrag unter System – Systemverwaltung – Drucker den Drucker zwar erkannte, aber immer die Einstellungen des Servers übernahm, also auch, dass der Drucker am lokalen USB-Port hängt, was für den ubuntu Rechner ja nicht zutrifft. Man konnte es zwar in einen IPP Eintrag ändern, jedoch wurde das beim Beenden nicht gespeichert. Der Eintrag in der client.conf blieb bei mir deshalb auskommentiert, ebenso wie das Polling in der cupsd.conf. Die Vorgehensweise war also folgende: TP auf ubuntu installieren, Drucker unter System – Systemverwaltung – Drucker hinzufügen (die TP Treiber sollten in das Treiber-Auswahl-Menü nun integriert sein), Pixma4200 Treiber von Canon (Turboprint) installieren und wie bei den Win Rechnern den gleichen IPP-Pfad. Nun sollte alles funktionieren!
  • Fehlersuche: Sollte etwas nicht klappen, ist die Fehlersuche hier recht schwierig. Es sei zu sagen, dass evtl ein paar zusätzliche Pakete (z.B. für Epson oder HP Drucker) installiert werden müssen/sollten. Auch das Paket a2ps kann nicht schaden, ob man es braucht entzieht sich meiner Kenntnis, ich bin erstmal froh dass alles läuft.

6 Responses to “Printserver in heterogenem LAN mit Turboprint, FreeBSD und einem Canon Pixma IP4200”

  1. Fabian Says:

    Hey!
    Wollte mich nur “bedanken”… ohne deinen Eintrag hier wäre ich wohl an meinem Canon Pixma Ip4000 verzweifelt;).
    Vielen Dank!

  2. dondc Says:

    hallo,

    danke der beitrag hat mir sehr geholfen meinen canon pixma ip 5000 unter freebsd betreiben zu koennen.

    danke und weiter so,
    mfg,
    dondc

  3. Andrea Says:

    Hi,

    im Prinzip super, nur wie sieht Deine “Security Options”-Sections in der cupsd.conf-Datei aus?
    Der Drucker druckt nämlich nicht :-(

    Andrea

  4. Michael Says:

    Super :)

  5. Margarette Knowlton Says:

    Sehr gut geschriebener Artikel, danke dafür.

  6. Custom dancing Mickey & Mini iPad Sleeve (one side) Says:

    The heart of your writing whilst sounding reasonable originally, did not work properly with me personally after some time. Somewhere throughout the paragraphs you actually were able to make me a believer unfortunately only for a while. I nevertheless have a problem with your leaps in assumptions and you might do nicely to fill in all those gaps. In the event that you can accomplish that, I would certainly be amazed.

Leave a Reply