Druckertreiber

Im Backend bietet CUPS z.T. generische Treiber für die Drucker-Hersteller an, die i.d.R. schon sehr gut funktionieren. Wie bereits beschrieben, unterstützen alle halbwegs modernen Netzwerk-Drucker bereits das IPP Everywhere. Darüber ist es CUPS möglich driverless-printing anzubieten. Für den MF623Cn gibt es einen proprietären Treiber von Canon als auch einen generischen Treiber für Canon Drucker. Es sollen beide Treiber engerichtet und deren Druck-Ergebnisse miteinander verglichen werden.

driverless printing

Über das driverless-printing CUPS müsste in einer Standard Installation des Ubuntu (18.04) resp. Debian Desktop Systems (mit CUPS) einem der IPP fähige Drucker bereits im Setup unter „Geräte“ angeboten werden. Alternativ kann man in den Druckereinstellungen auch auf „Zusätzliche Druckereinstellungen“ drücken womit das Programm system-config-printer gestartet wird.

Figure (system-config-printer-gui.png)

system-config-printer: CUPS GUI für Drucker- Konfiguration und Statusabfrage.

In dem Fenster kann man Hinzufügen klicken und über einen geführten Dialog den Drucker einrichten. Eine detallierte Anleitung findet sich in Kapitel „Netzwerk-Drucker Setup“. Hier beim MF623Cn musste die generisch erzeugte PPD Datei aus genannten Gründen angepasst werden:

Bemerkung

Den driverless Drucker sollte man als erstes testen. Mit einem modernen PDF-fähigen (oder PS-fähigen) Drucker (application/pdf) von einem Hersteller, der IPP Everywhere beherrscht wird man i.d.R. schon sehr respektable Erzeugnisse anfertigen können.

Beim MF623Cn gibt es allerdings noch einige Kinderkrankheiten, die z.T. auch schon beschrieben wurden. In solchen Fällen gibt es zwei Möglichkeiten.

Entweder

man installiert sich den proprietären Druckertreiber des Herstellers, siehe Kapitel „MF620C-Serie URF-II (MF623Cn)“.

oder

man steigt etwas tiefer in die Materie CUPS und CUPS-Filter und ggf. IPP ein und richtet sich eine eigene PPD-Datei ein, resp. ändert die bestehende PPD. Hier im Beispiel musste der Wert für HWMargins in der PPD korrigiert werden. Hier noch ein paar Verweise, die dabei ggf. Information bieten können:

MF620C-Serie URF-II (MF623Cn)

Sofern für Linux vorhanden, kann man sich auch mal die Druck-Ergebnisse mit dem proprietären Treiber vom Hersteller anschauen. Doch ACHTUNG: wie im Kapitel „Druckbild Canon VS driverless“ gezeigt, kann der Treiber vom Hersteller auch mal gewaltig schlechter sein als der generische Druckertreiber von CUPS. Zumindest bei Canon noch ein weiteres Problem; die Softwarepakete von Canon für Linux installieren jede Menge Schrott der nicht funktioniert und bestenfalls nicht noch andere Problem mit sich zieht. Es ist schon eine ziemliche Unverschämtheit, was Canon seinen Kunden für eine schrottige Software zur Installation anbietet und das ziehen die schon seit Jahren „so“ durch.

Figure (MF623Cn-printer-spec.png)

MF623Cn: technische Angaben

Die moderneren Canon Drucker unterstützen Ultra Fast Renderer (UFR) welches man sich über einen proprietären Treiber auch auf dem PC installieren kann. Die Linux Treiber für die Drucker der MF620C Serie gibt es bei Canon:

Dort sind auch Installationsanleitungen gegeben, diesen sollte man nicht folgen: Die Linux Pakete von Canon sind schon immer dafür bekannt, diversen Schrott zu installieren. Das gilt sowohl für die Druck- als auch für die SCAN- Funktionen. Es empfiehlt sich von daher nur die nötigsten Sachen (die binären Treiber und die PPDs) aus dem Treiber-Download zu installieren. In den linux-UFRII-drv-v{xxx}-uken.tar.gz Archiven gibt es zwei, max. drei Pakete die man installieren muss, mehr bitte nicht:

  • cndrvcups-common_{4.10}-1_amd64.deb

  • cndrvcups-ufr2-uk_{3.70}-1_amd64.deb

  • cndrvcups-utility_{1.10}-1_amd64.deb (funktioniert i.d.R nicht)

Die .tar.gz Datei im Download-Ordner auspacken (über rechte Maustaste „Hier entpacken“). In dem dann angelegten Ordner muss man sich etwas nach unten durchklickern: 64-bit_Driver/Debian. Dort sieht man dann auch schon die Debian Pakete mit der Dateiendung .deb. Diese kann man mit einem Doppelklick einfach installieren.

Leider ist die Installation damit nicht erledigt, da Canon seit jeher unfähig ist, echte 64-bit Bibliotheken zu compilieren: in den mit amd64 gekennzeichneten Paketen ist der UFRII-Closed-Source-Treiber in Form von 32-Bit Bibliotheken enthalten, die wiederum auf anderen 32-Bit Bibliotheken des Betriebssystems aufbauen. Welche aber auf dem (eigenen) 64-Bit Betriebssystem i.d.R. nicht zu erwarten sind.

Normalerweise kann der Paket-Ersteller solche Abhängigkeiten in den .deb Dateien beschreiben und dann würde der Paket-Manager darauf reagieren können, aber auch dazu ist Canon als Paket-Ersteller seit jeher nicht in der Lage. Mit dem Effekt, dass der Anwender mal wieder Blutdruck bekommt, weil Drucken nicht funktioniert, es aber er auch keine hilfreichen Fehlermeldungen gibt.

Diese Abhängigkeiten zu den 32-Bit Bibliotheken müssen wir manuell installieren (i.d.R. muss man das auch, wenn man die Installation-Anweisungen von Canon befolgen würde). Man installiert daher zuerst die benötigten 32-Bit Bibliotheken:

sudo -H apt-get install lib32stdc++6 libxml2:i386

Bei moderneren Druckern, sollte der Drucker nun automatisch gefunden und eingebunden werden. Falls das bei dem eigenen Drucker noch nicht klappt, sollte man mit dem Netzwerk-Drucker Setup fortfahren.

Auch die PPD, die Canon mit dem Treiber ausliefert ist ziemlich lieblos zusammengeschustert weshalb ich eine selbst-erstellte bevorzuge:

Druckbild Canon VS driverless

Hier ein Vergleich des Druckbilds des All-in-One Drucker MF623Cn, einmal mit dem origignal Canon URF-II Treiber (links) und dem driverless-printing (rechts). Es sind die Druckbilder, die man bekommt, wenn man nichts an den PPD Dateien geändert hat.

Das Bild unten zeigt den rechten-oberen Ausschnitt eines A4-Drucks, bei dem oben in der Ecke ein QR-Code (wiki) gedruckt werden sollte.

Figure (MF620C-Series-driverless-vs-canon.png)

Druckbild MF620C Series: Canon URF-II Treiber (links) driverless-printing (rechts)

Links sieht man, dass der Original Canon Treiber zwar bis in die Ecken druckt aber den QR-Code im PDF nur zerstört ausdruckt. Bei genauerer Betrachtung (nicht im Bild zu erkennen) stellt man auch fest, dass der original Treiber nicht farbecht ist. Mir erscheint der ganze Ausdruck wie ein kaputtes JPEG, die Farben sind nicht echt und das der QR Code auch noch zerstört wird, mag evtl. auch an einer (JPEG) Komprimierung liegen.

Der Druck über den Drucker des driverless-printing (rechts im Bild) zeigt das Problem, dass er nicht bis in die Ecken drucken kann, dafür wird aber der QR-Code nicht zerstört, was im Fall von Fahrkarten wichtiger sein wird. Bei genauerer Betrachtung (nicht im Bild zu erkennen) hat man den Eindruck, dass der Druck Farbecht ist, jedoch scheint die Auflösung und Farbtiefe nicht ganz ausgereizt zu werden.

Bemerkung

Der Rand beim driverless Druck konnte durch setzten der Rahmen des ImageableArea auf 0 0 ... korrigiert werden (siehe Druckbereich korrigieren).

Debug LOG der Druckerzeugnisse

Debug-LOG für den driverless-printing Druck (rechts):

D [11/Feb/2019:14:39:00 +0100] [Job 82] 4 filters for job:
D [11/Feb/2019:14:39:00 +0100] [Job 82] pdftopdf (application/pdf to application/vnd.cups-pdf, cost 66)
D [11/Feb/2019:14:39:00 +0100] [Job 82] gstoraster (application/vnd.cups-pdf to image/pwg-raster, cost 99)
D [11/Feb/2019:14:39:00 +0100] [Job 82] - (image/pwg-raster to printer/CNMF620C-Series/image/pwg-raster, cost 0)
D [11/Feb/2019:14:39:00 +0100] [Job 82] - (printer/CNMF620C-Series/image/pwg-raster to printer/CNMF620C-Series, cost 0)
D [11/Feb/2019:14:39:00 +0100] [Job 82] job-sheets=none,none
D [11/Feb/2019:14:39:00 +0100] [Job 82] argv[0]="CNMF620C-Series"
D [11/Feb/2019:14:39:00 +0100] [Job 82] argv[1]="82"
D [11/Feb/2019:14:39:00 +0100] [Job 82] argv[2]="markus"
D [11/Feb/2019:14:39:00 +0100] [Job 82] argv[3]="8B653235.pdf"
D [11/Feb/2019:14:39:00 +0100] [Job 82] argv[4]="1"
D [11/Feb/2019:14:39:00 +0100] [Job 82] argv[5]="InputSlot=Auto print-content-optimize=auto PageSize=A4 number-up=1 MediaType=Auto noCollate print-scaling=auto ColorModel=RGB job-uuid=urn:uuid:81164725-dc83-35d0-4be7-2588d85eefc4 media=0 job-originating-host-name=localhost date-time-at-creation= date-time-at-processing= time-at-creation=1549892340 time-at-processing=1549892340"
D [11/Feb/2019:14:39:00 +0100] [Job 82] argv[6]="/var/spool/cups/d00082-001"

Debug-LOG für den Canon URF-II Treiber Druck (links):

D [11/Feb/2019:14:32:00 +0100] [Job 81] 3 filters for job:
D [11/Feb/2019:14:32:00 +0100] [Job 81] pdftopdf (application/pdf to application/vnd.cups-pdf, cost 66)
D [11/Feb/2019:14:32:00 +0100] [Job 81] pdftops (application/vnd.cups-pdf to application/vnd.cups-postscript, cost 100)
D [11/Feb/2019:14:32:00 +0100] [Job 81] pstoufr2cpca (application/vnd.cups-postscript to printer/MF623C-TWF19694, cost 0)
D [11/Feb/2019:14:32:00 +0100] [Job 81] job-sheets=none,none
D [11/Feb/2019:14:32:00 +0100] [Job 81] argv[0]="MF623C-TWF19694"
D [11/Feb/2019:14:32:00 +0100] [Job 81] argv[1]="81"
D [11/Feb/2019:14:32:00 +0100] [Job 81] argv[2]="markus"
D [11/Feb/2019:14:32:00 +0100] [Job 81] argv[3]="8B653235.pdf"
D [11/Feb/2019:14:32:00 +0100] [Job 81] argv[4]="1"
D [11/Feb/2019:14:32:00 +0100] [Job 81] argv[5]="noCNDraftMode BindEdge=Left OutputBin=Auto number-up=1 noCollate CNBarCodeMode=None PageSize=A4 InputSlot=Auto CNSpecialSmooth=Mode1 CNColorMode=color CNColorHalftone=Resolution MediaType=Auto CNHalftone=Resolution job-uuid=urn:uuid:1fb4ea86-8cb1-380d-60a9-4f211deae89e print-quality=3 job-originating-host-name=localhost date-time-at-creation= date-time-at-processing= time-at-creation=1549891920 time-at-processing=1549891920 cupsPrintQuality=Draft"
D [11/Feb/2019:14:32:00 +0100] [Job 81] argv[6]="/var/spool/cups/d00081-001"