Mich ärgert schon von jeher, dass Hersteller von Tintenstrahldruckern zwar immer schöne Füllstandsanzeigen für ihre Windows-Treiber zur Verfügung stellen, unter Linux habe ich die aber bisher nie zu Gesicht bekommen…
… bis heute
Da bin ich nämlich bei einer Paketsuche über das verdächtig nach Tintenfüllstandermittelundanzeige aussehende Programm “ink” gestoßen. Apt-cache show verriet mir, dass ich unter Umständen einen Volltreffer landen könnte:
Description: tool for checking the ink level of your local printer
Ink is a command line tool based on libinklevel3. It provides a simple way
to check ink level of supported printers.
.
Homepage: http://ink.sourceforge.net/
Also schnell (inkl. libinklevel3) installiert, und mit “ink -p parport -n 0″ einen Testaufruf für meinen Canon i865 gestartet.
Pustekuchen.
“Printer not supported”
Aber nicht mit Stefan!
Denn wo Source, da ein Weg.
Also besorgte ich mir die Quelltexte von libinklevel (Version 0.7.1) über http://libinklevel.sourceforge.net/, sowie von ink 0.4.0 über die Projektseite: http://ink.sourceforge.net/.
Auf der Libink-Seite war der i865 zwar nicht in der Kompatibilitätsliste aufgeführt, aber zumindest fand sich eine Funktionszusage für den i860. Ich war also recht zuversichtlich.
Um die Programme kompilieren zu können, verlangten diese noch nach dem Debian-Paket “libieee1284-3-dev”, das über apt-get install schnell in das System aufgenommen wurde.
Das Kompilieren resp. Installieren war bei beiden Softwarekomponenten sehr einfach:
$ make
$ su
# make install
zuerst im Source-Verzeichnis von libinklevel, dann im entsprechenden Verzeichnis von ink, fertig.
Ein Testaufruf bescherte mir jedoch schon wieder: “Printer not supported”.
Die Lösung war ganz einfach, ein kleiner Patch verhalf meinem Drucker zur gewünschten Berücksichtigung:
<siehe Nachtrag!>
In der Quelldatei canon.c im Libink-Verzeichnis führte die Suche nach “i860″ (das Modell war ja als lauffähig ausgewiesen) zum Block:
{"i860",
{{"VC",6,{CARTRIDGE_BLACK,CARTRIDGE_CYAN,
CARTRIDGE_MAGENTA,CARTRIDGE_YELLOW,
CARTRIDGE_PHOTOCYAN,CARTRIDGE_PHOTOMAGENTA}},
{"CL",6,{CARTRIDGE_BLACK,CARTRIDGE_CYAN,
CARTRIDGE_MAGENTA,CARTRIDGE_YELLOW,
CARTRIDGE_PHOTOCYAN,CARTRIDGE_PHOTOMAGENTA}},
{NULL,RESPONSE_INVALID,{}}}},
Den Block muss man nun einfach noch einmal unter denselben kopieren, die “i860″ durch “i865″ ersetzen, den kompletten Kram dann nochmal übersetzen und installieren (siehe oben), und schon erhält man beim nächsten ink-Aufruf:
[...]
(Wer die Änderungen an der Source-Datei nicht selbst vornehmen möchte, der lade den Patch: canon.patch.zip herunter, entpacke diesen im Libinklevel-Source-Verzeichnis und integriere ihn mit: patch <canon.patch)
</Siehe Nachtrag!>
Nun gab ink endlich die richtigen Werte zurück:
# ink -p parport -n 0 ink v0.4.0 © 2007 Markus Heinz Canon i865 Photoblack: 100% Black: 20% Yellow: 20% Magenta: 100% Cyan: 100%
Hurra
Aber wir sind noch nicht fertig. Denn ich hatte auf der libink-Seite schon “Inkblot” erspäht, ein Programm, das eine grafische Füllstandsanzeige für meinen Drucker unter Gnome verspricht.
Nach dem Download- und Entpackvorgang geht auch bei diesem Programm die Einrichtung und Installation recht einfach:
$ ./configure
$ make
$ su
# make install
Configure meckerte vor dem erfolgreichen Durchlauf bei mir noch folgende Pakete als fehlend an:
- libgnomeui-dev
- libxml-perl
Nachdem ich diese jedoch inkl. ihrer Abhängigkeiten installiert hatte, war auch diese Unzulänglichkeit behoben.
“gksu inkblot” und endlich war sie da: meine grafische Tintenfüllstandsanzeige *freu*
Und um nicht immer gksu für den Programmaufruf benutzen zu müssen, nehme man die Benutzer, die auf die Statuswerte des Druckers Zugriff haben sollen, einfach in die Gruppe “lp” auf. Dann braucht’s auch keine Root-Rechte mehr, nur um die Druckerinfos abzurufen.
Nachtrag:
Da war ich gestern wohl ein wenig zu enthusiastisch, und hatte daher meinen Libinklevel-Patch nicht richtig getestet. Mein i865 verfügt nämlich (anders als der i965, mit dem ich im Büro arbeite) garnicht über Photomagenta oder Photocyan. Lediglich eine extra Schwarz-Kartusche leistet den “Normalfarben” ein wenig Gesellschaft. Außerdem fehlte eine weitere kleine Anpassung im Source.
Deswegen hier der korrigierte Patch: canon.patch.zip, der diese Konstellation berücksichtigt. Einfach in das Libinklevel-Verzeichnis entpacken, und dann mit:
$patch <canon.patch
auf die Source loslassen.
Das weitere beschriebene Vorgehen bleibt aber wie gehabt, also mit “make” die Quellen übersetzen und als root anschließend mit “make install” installieren.
27.08.2007 - Noch ein Nachtrag
Markus Heinz hat meinen Patch in die aktuelle Version 0.7.2 von libinklevel mit aufgenommen. Dieses wurde bereits am 28.07.2007 released. Es ist also keine Patcherei mehr notwendig.

15. Mai 2007 um 09:06
Geil, sollte ich auch mal machen ^^
Allerdings hab ich bis jetzt noch nicht mal geschafft meinen Canon iP3000 zu installieren. Hast du da ne Anleitung ? ^^
-Diego
21. Mai 2007 um 19:45
Ich benutze Turboprint.
28. Mai 2007 um 22:04
Ja, über Turboprint bin ich auch schon gestolpert. Funktioniert auch recht gut.
Allerdings nervt mich was an dem Programm, ES KOSTET WAS !
Für was bin ich auf Linux umgestiegen, wenn ich dann wieder was für einen Drucker Treiber zahlen soll !?
tzzzzzzzz
-Diego
3. Juni 2007 um 15:57
Bei meinem Epson-Drucker läuft die Geschichte gut mit “escputil -q -r /dev/usb/lp0 -s”
26. August 2007 um 23:46
libinklevel3, ich lach mich schlapp!
27. August 2007 um 09:18
@Mattelacchiato:
Ist ja ein netter Kommentar, er bedarf nur ein wenig der Aufklärung … was ist so “lustig” bei libinklevel3??
Gruß
Stefan
30. August 2007 um 11:00
> Diego schrieb:
>
> Für was bin ich auf Linux umgestiegen, wenn ich dann wieder was für einen Drucker Treiber zahlen soll !?
Das “Goal” von Linux ist doch die Tatsache, dass die Software “offen” ist. Sprich: wer will darf den Code frei nutzen, kopieren, verändern, erweitern u.s.w. ohne eine Lizenz kaufen zu müssen. Dadurch erst konnte Linux entstehen, weil auf diese Weise viele Hobby-Progger ihren Beitrag in Linux einbrachten. Und wenn nun aufgrund des Erfolges von Linux einige Leute professionell Software erstellen, dann haben die auch das Recht einen Lohn für ihre Arbeit zu bekommen. Was ist so schlimm daran? Wenn es alles umsonst gäbe, dann bräuchte auch niemand mehr arbeiten gehen. Und dann?
22. Juli 2008 um 17:05
@Mattelacchiato
ja, ich hab auch wahnsinnig gelacht über libinklevel3, hatte sogar teilweise schon in die Hose geschifft vor lachen.
Nur weiß ich jetzt gar nicht mehr genau warum ich überhaupt gelacht habe, aber Du SuperBrain wirst es mir doch noch hoffentlich erzählen können … oder?!