Scanner am USB-Port #

Wer LinuxScanner betreiben will, interessiert sich natürlich oft auch für die preiswerten USB-Geräte. Hier meine Erfahrung mit einem solchen. -- ThomasBayen

Treiber finden #

Aus der Liste der unterstützten Geräte auf der SANE-Homepage habe ich mir meinen Scanner herausgesucht. Es handelt sich um einen Mustek Scan Express 1200 UB Plus. Wie die Liste verrät, basiert er auf einem GT6801-Chip, der wohl im Bereich preiswerter Scanner relativ weit verbreitet ist. Übrigens scheint dieser Scanner in ähnlicher Form auch gerne von Tevion oder Medion (also bei Aldi) Verwendung zu finden.

Firmware #

Die GT68xx-Scanner benötigen jeweils eine Firmware-Datei, die bei der Initialisierung des Scanners in diesen hochgeladen werden muss. Auf der unten angegebenen Treiber-Homepage habe ich einen Link für meinen Scanner gefunden, ansonsten kann man diese nach Anleitung von der Windows-Cd extrahieren. Die Firmware-Datei (in meinem Falle sbfw.usb) habe ich dann wie unten beschrieben in das Firmware-Verzeichnis des Treibers kopiert.

Ich konnte diese Firmware nicht aus dem Internet holen und habe sie deshalb auf der mitgelieferten CD gesucht. Sie steht tatsächlich im Unterverzeichnis 'WinXP'. Ich habe sie dann einfach ins geforderte Verzeichnis /usr/share/sane/gt68xx mit der geforderten Umbenennung PS1fw.usb kopiert und es funktionierte. -- KaiEhlers --

Installation #

Erkennung des USB-Gerätes #

Zur Erkennung von USB-Geräten läuft bei mir das Paket usbmgr. Wer das nicht hat, sollte es erstmal installieren.

Ich arbeite in der Weile mit 'hotplug'. Es scheint mir sogar einfacher damit zu funktionieren. --KaiEhlers --

Zuerstmal habe ich mit <tt>tail -f /var/log/syslog</tt> das System-Log beobachtet und dann den Scanner eingesteckt. In meinem Falle wurde der Scanner nicht automatisch erkannt:

  Jan  2 14:32:59 jupiter kernel: hub.c: new USB device 00:02.2-1, assigned address 2
  Jan  2 14:32:59 jupiter kernel: usb.c: USB device 2 (vend/prod 0x5d8/0x4002) is not claimed by any active driver.
  Jan  2 14:33:00 jupiter usbmgr[546]: vendor:0x5d8 product:0x4002
  Jan  2 14:33:00 jupiter usbmgr[546]: class:0xff subclass:0xff protocol:0xff
  Jan  2 14:33:00 jupiter usbmgr[546]: USB device isn't matched the configuration
  Jan  2 14:38:01 jupiter usbmgr[546]: bye!

Trotzdem steht hier eine interessante Information: Die Vendor- und Product-ID identifizieren dieses Gerät eindeutig. Daraufhin habe ich folgende Zeilen in die Datei /etc/usbmgr/usbmgr.conf eingefügt:

  ### THOMAS_BAYEN
  # Mustek ScanExpress 1200 UB Plus [Mustek]
  vendor 0x05d8 product 0x4002 module scanner

Jetzt weiss der usbmgr, dass er das Modul scanner laden soll, wenn dieses Gerät eingesteckt wird. Man kann davon ausgehen, daß dieser Eintrag in zukünftigen Versionen des usbmgr-Paketes bereits enthalten sein wird.

Zugriff für Benutzer #

Mit

  chmod o+w /proc/bus/usb/002/002

habe ich allen Benutzern Schreibzugriff auf den Scanner erteilt. Das funktioniert dann aber nur bis zum nächsten Reboot bzw. Umstöpseln des Gerätes am USB-Bus.

Nacj einigem Überlegen und Studium der Kernel-Sourcen habe ich dann auch herausgefunden, wie es besser geht... Man kann dem usbfs sagen, welche Zugriffsrechte die von ihm eingerichteten Inodes bekommen, wenn ein USB-Gerät eingestöpselt wird. Dabei kann man User, Gruppe und Mode angeben. Näheres steht im Kernel in src/drivers/usb/inode.c. Der richtige Weg wäre jetzt, eine Gruppe usb einzurichten. Ein User müsste dann dieser Gruppe angehören, wenn er auf usb-Geräte zugreifen will. Ähnliches geschieht unter Debian bereits mit den Gruppen audio oder floppy. Eine noch perfektere Methode wäre, den usbmgr dazu zu bringen, daß er nach dem Erkennen eines Gerätes spezielle Permissions für genau dieses Gerät vergibt.

Für ein einfaches Setup ohne Zugriffsschutz reicht es aber, die Modes entsprechend zu setzen. Dazu habe ich folgende Zeile in die /etc/fstab geschrieben:

  usbfs   /proc/bus/usb   usbfs   defaults,devmode=0666   0 0

...jetzt ist das scanner-Kernelmodul richtig geladen. Nun können wir uns dem SANE-Treiber widmen:

=== grundsätzliche Scannererkennung ==

...geht bei SANE mit sane-find-scanner und scanimage -L. Dies ggf. als root und als User testen.

Der SANE-Treiber gt68xx #

Es gibt wie zu allen SANE-Backends eine Manpage, die mit man sane-gt68xx aufgerufen werden kann. Da mein Mustek scheinbar die gleiche USB-ID wie einige andere Scanner (aber doch einige Unterschiede) hat, habe ich wie in der manpage beschrieben eine Zeile in /etc/sane.d/gt68xx.conf auskommentiert.

Dann habe ich die Firmwaredatei nach /usr/share/sane/gt68xx/ kopiert.

Dann konnte ich auch schon mit

  scanimage >test.pnm

scannen! :-)

Andere Treiber #

Wer einen BrotherDrucker mit integriertem Scanner besitzt, sollte dort einmal nachlesen.

Mehrere Devices

Ein kleines Problem kann auftreten, wenn man mehrere Scan-Devices hat. Dies war bei mir der Fall, weil ich eine TV-Grabber-Karte im Rechner habe, an die ich erstmal gar nicht als "Scanner" gedacht habe. Falls also scanimage -L mehrere Scanner anzeigt, scannt man z.B. mit:

  scanimage -d gt68xx:libusb:002:002 >test.pnm

Ich habe statt mit 'scanimage' mit 'xsane' gearbeitet und nur beim ersten Mal bot er mir die TV-Karte und den Scanner an. Nachdem ich den Scanner gewählt hatte, benutzte er diesen automatisch bei jedem weiteren Start. -- KaiEhlers --

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-3) was last changed on 23-Oct-2007 17:17 by ThomasBayen