Mit scanbd Scannertasten an einem Canon MX700 nutzen Teil1/2

Nach langem hin und her habe ich es endlich geschafft mit meinen Canon MX700, der über LAN angeschlossen ist, per Tastendruck zu scannen. Das hört sich jetzt vielleicht nicht so spektakulär an, aber es war alles gar nicht so einfach. Zuerst stellte ich fest, das man in den sane-backends die Unterstützung für die Tasten vergessen bzw. nicht implementiert hatte. Wenn der Drucker über USB angeschlossen ist, funktionieren die Tasten schon mit einer früheren Version von Sane. Über das Netzwerk angeschossene Drucker/Scanner funktionieren leider nicht. Das hat sich seit der Saneversion 1.0.23 geändert. In der zur Zeit aktuellen Version 1.0.24 sind noch weitere Änderungen in das Pixmabackend eingeflossen, somit sollte mindestens dieses Release verwendet werden. Mit dem folgendem Befehl kann man die Saneversion überprüfen. Sollte hier schon 1.0.24 stehen, kann gleich mit der scanbd Installation weiter gemacht werden.

scanimage -V

Ich habe in Debian Squeeze die Version 1.0.21 installiert. Folgende Pakete soll man installieren, um scanbd compilieren zu können.

aptitude install libconfuse-dev libsane-dev libudev-dev libusb-dev

Wenn er hier auch ein paar andere Sachen von Sane mit installiert, ist das nicht weiter tragisch, da er die alten Dateien mit den neuen ersetzt.

Sane Installation
In ein Arbeitsverzeichnis wechseln und die aktuelle Version aus dem Git Respotory holen.

cd /usr/local/src
git clone git://git.debian.org/sane/sane-backends.git

Um ein Update des Git durchzuführen, werden die folgenden Befehle benötigt.
cd /usr/local/src/sane-backends
git pull

In das neue Verzeichnis wechseln und den configure Befehl ausführen. Mit diesem wird sane in /usr installiert und die Konfigurationsdateien liegen in /etc.

cd sane-backends
./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var

Fast zum Schluss gibt es einen Hinweis welche Backend’s gebaut werden. Hier sollte dann auch pixma auftauchen. Jetzt kann Sane gebaut werden.

make
make install

Wenn alles durchgelaufen ist, sollte scanimage -V die neue Version 1.0.24 ausgeben.

linux:/# scanimage -V
scanimage (sane-backends) 1.0.24git; backend version 1.0.24

Jetzt kann man das neue Backend testen und hoffen das der angeschlossene Drucker/Scanner gefunden wird.

linux:/# scanimage -L
device `pixma:MX700_Drucker‘ is a CANON Canon PIXMA MX700 multi-function peripheral


ScanBD Installation
In ein Arbeitsverzeichnis wechseln und die aktuelle Version downloaden. Hier ist der Sourceforge-Link zu dieser.

cd /usr/local/src
wget -O scanbd-1.2.1.tgz http://downloads.sourceforge.net/project/scanbd/releases/scanbd-1.2.1.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fscanbd%2Ffiles%2F&ts=1355743398&use_mirror=ignum

Das Archiv entpacken und in den neuen Ordner wechseln.

tar xvzf scanbd-1.2.1.tgz
cd 1.2.1/

Jetzt werden die Binarys gebaut. Mit dem Befehl wird scanbd mit Sanesupport gebaut. Das bedeutet, fast alle Scanner die mit Sane funktionieren, werden auch mit scanbd laufen.

USE_SANE=yes make -e clean all

Mit dem folgendem Befehl wird scanbd nach /usr/local/bin installiert und die Configfiles werden nach /usr/local/etc/scanbd geschrieben.

make install

Jetzt müssen noch ein paar Anpassungen in den Dateien vorgenommen werden. Zuerst wird die dll.conf aus dem sane Verzeichnis in die scanbd Installation kopiert. Dabei ist darauf zu achten das das net Backend nicht aktiv ist. Einfach eine „#“ davor setzten.

cp /etc/sane.d/dll.conf /usr/local/etc/scanbd/

Nach dem Kopieren wird in der originalen dll.conf in /etc/sane.d alles entfernt oder kommentiert außer net.

Jetzt müssen wir den Server zum starten konfigurieren.
Variante inet.d – /etc/inetd.conf bearbeiten.

sane-port stream tcp4 nowait saned /usr/local/bin/scanbd scanbd -m -c /usr/local/etc/scanbd/scanbd.conf

oder Variante xinet.d – /etc/xinetd.d/sane anlegen bzw. bearbeiten.

service sane-port
{
        port        = 6566
        socket_type = stream
        wait        = no
        user        = saned
        group       = scanner
        server      = /usr/local/bin/scanbd
        server_args = scanbd -m -c /usr/local/etc/scanbd/scanbd.conf
        disable     = no
}

Anschließend wird die Datei /etc/sane.d/net.conf bearbeitet und folgendes eingefügt.

connect_timeout = 60
localhost

Jetzt werden noch alle Backends im Ordner /etc/sane.d/ nach /usr/local/etc/scanbd/ kopiert. Dabei darf nichts überschrieben werden. Also alles mit nein beantworten.

cp -i /etc/sane.d/*.conf /usr/local/etc/scanbd/

Jetzt stellen wir in der Datei /usr/local/etc/scanbd/scanbd.conf das Debuglevel auf mindestens 3, um die einzelnen Optionen des Scanners zu sehen. Bei dem Canon MX700 sind das ca. 20 Optionen. Wichtig für einen ersten Test sind die Bezeichnungen für die Tasten am Scanner. In meinem Fall sind das button-1 und button-2.
In der Datei /usr/local/etc/scanbd/scanbd.conf bei dem Abschnitt „action globaltest“ solltet ihr eine kleine Änderungen vornehmen. Einfach message mit button-1 ersetzen.

action globaltest {
                     filter = „^button-1.*“
                     desc   = „Test (print all env vars)“
                     # script must be an absolute pathname to the action script without arguments
                     script = „/usr/local/etc/scanbd/test.script“
        }

Hier sollte die Datei /tmp/scanbd.script.env überprüft werden, die durch das Script erstellt wurde. In dieser finden sich alle Variablen die das Script auslesen konnte.

Jetzt kann man scanbd zum ersten mal starten, um zu sehen ob alles richtig konfiguriert ist. Der erste Befehl exportiert die Globale Variable SANE_CONFIG_DIR und der 2. Befehl startet scanbd im Vordergrund mit dem angegebenen Configfile.

export SANE_CONFIG_DIR=/usr/local/etc/scanbd
/usr/local/bin/scanbd -df -c /usr/local/etc/scanbd/scanbd.conf

Wenn dieser Test erfolgreich war, dann wird das Programm mit Strg-C wieder beendet, das Startscript kopiert und in die Runlevel eingetragen.

cp /usr/local/src/1.2.1/scanbd.debian /etc/init.d/scanbd
update-rc.d scanbd defaults

Jetzt kann man mit /etc/init.d/scanbd start den Deamon starten und er wird auch beim Systemstart geladen.

Vielen Dank an die guten Leute, die mir bei der Umsetztung dieses Problem’s geholfen haben.Insbesondere geht mein Dank an den Entwickler des Pixma Backends, Louis Lagendijk und natürlich an den Entwickler von Scanbd, Wilhelm Meier. Er war mit mir immer sehr sehr geduldig. 🙂
Ohne die Beiden würde mein Scanner immer noch nicht unter Linux funktionieren.
Im 2. Teil möchte ich ein paar Scripte vorstellen die das Scannen erleichtern sollen.
Weiter zu Teil 2