Freitag, 4. Januar 2008

Nun aber wirklich: NSLU2, SANE, SaneTwain! (2)

In Teil 1 des Tutorials haben ich sane besorgt, unter Debian kompiliert und installiert.

Wie geht's weiter?

Der Scanner muss angeschlossen werden: Mein Canon Lide 30 zieht anscheinend mehr als die bei USB spezifizierten 500mA - zumindest lässt er sich nicht direkt an der NSLU2 betreiben. Ein aktiver USB-Hub schafft Abhilfe, wie ein Blick in den syslog beweist:

Jan  4 12:53:38 NSLU2 kernel: usb 3-1.2: new high speed USB device using ehci_hcd and address 5
Jan 4 12:53:38 NSLU2 kernel: usb 3-1.2: configuration #1 chosen from 1 choice
Jan 4 12:53:38 NSLU2 kernel: hub 3-1.2:1.0: USB hub found
Jan 4 12:53:38 NSLU2 kernel: hub 3-1.2:1.0: 4 ports detected
Jan 4 12:53:39 NSLU2 kernel: usb 3-1.2.3: new full speed USB device using ehci_hcd and address 6
Jan 4 12:53:39 NSLU2 kernel: usb 3-1.2.3: configuration #1 chosen from 1 choice

Dann schauen wir doch mal, ob der Scanner erkannt wird:

//NSLU2~/sane/sane-backends# sane-find-scanner

# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.
# Also you need support for SCSI Generic (sg) in your operating system.
# If using Linux, try "modprobe sg".

found USB scanner (vendor=0x04a9 [Canon], product=0x220e [CanoScan], chip=LM9832/3) at libusb:003:006
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.
//NSLU2~/sane/sane-backends# scanimage -L
device `plustek:libusb:003:006' is a Canon CanoScan N1240U/LiDE30 flatbed scanner

Sehr schön, soweit alles okay. Nun kann man scanimage unter Debian nutzen um zu scannen, wobei das natürlich nicht die bequemste Methode ist. Meine Rechner im LAN sind in der Regel Microsoft-Clients (jaja ;-) ), die zum Scannen auf TWAIN zurückgreifen. Nun gibt es zum Glück ein nettes Tool namens SaneTwain, das genau dieses (über's Netzwerk) für Windows zur Verfügung stellt.

Zuvor muss aber noch saned auf der Slug konfiguriert werden. Saned ist der Daemon von SANE, der sozusagen als Dienst gestartet werden kann. Es sollte sich nach der Installation im Pfad befinden und kann über einen einfachen Aufruf ´von der Konsole gestartet werden. Die Option "-d" schaltet das Debugging ein (0 bedeutet kein Debug-Output).

//NSLU2~# saned -d128
[saned] main: starting debug mode (level 128)
[saned] main: trying to get port for service `sane' (getservbyname)
[saned] main: port is 6566
[saned] main: socket ()
[saned] main: setsockopt ()
[saned] main: bind ()
[saned] main: listen ()
[saned] main: waiting for control connection

Damit kann man jetzt etwas 'rumspielen, saned besitzt auch eine eigene man-page.

Als Startpunkt für weitere Experimente mal hier meine saned.conf:

//NSLU2~# cat /usr/local/etc/sane.d/saned.conf
#
# saned.conf
#
# The contents of the saned.conf file is a list of host names, IP
# addresses or IP subnets (CIDR notation) that are permitted to use local
# SANE devices. IPv6 addresses must be enclosed in brackets, and should
# always be specified in their compressed form.
#
# The hostname matching is not case-sensitive.
#
#scan-client.somedomain.firm
#192.168.0.1
#192.168.0.1/29
192.168.1.0/24
#[2001:7a8:185e::42:12]
#[2001:7a8:185e::42:12]/64
#
# NOTE: /etc/inetd.conf (or /etc/xinetd.conf) and
# /etc/services must also be properly configured to start
# the saned daemon as documented in saned(8), services(4)
# and inetd.conf(4) (or xinetd.conf(5)).

Da ich allen Clients in meinem Netzwerk den Zugriff auf meinen Scanner ermöglichen will, habe ich in der Konfig oben das gesamte Netz freigegeben. Der Rest ist auskommentiert, also alles sehr simpel.

Wenn man den saned nun mit dieser Konfig neu startet, sollte man sich mit ScanImage.exe aus dem SaneTwain-Paket von einem Windows-PC aus verbinden können. Hier auch die Settings auf der Windows-Seite, wichtig ist halt Host und Port (bei mir Default).

SaneTwain1 SaneTwain_settings

Nach der Installation von SaneTwain kann man genauso bequem aus jeder TWAIN-kompatiblen Anwendung heraus scannen als wäre der Scanner lokal am PC angeschlossen!

Zuletzt sollten wir noch dafür sorgen, dass saned automatisch startet. Dies passiert über den inetd bei mir.

Dazu ist folgende Zeile in die /etc/inetd.conf einzutragen ...

# saned
sane-port stream tcp nowait root /usr/local/sbin/saned saned

... und der inetd neu zu starten:

//NSLU2~# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.

Wie man sieht, läuft saned bei mir als root (mit saned:saned habe ich es nicht zum Laufen bekommen). Das ist natürlich nicht die sicherste Methode, man sollte sich also davor hüten, solche Dienste über das Internet zugänglich zu machen. Also genau überlegen, was man tut. Ich bewege mich in einem ziemlich abgeschottetem Netzwerk, lebe also mit dem kalkulierbaren Risiko.

Das sollte es erstmal gewesen sein.

Die nächsten Schritte?

  • Momentan ist alles zum Testen nur frei verkabelt. Mir schwebt eine Verkabelung von Drucker (der ja auch an der Slug hängt), Scanner und USB-Hub an einer Master-Slave-Steckdose vor.
  • Scanner-Buttons: da gibt es sicherlich Möglichkeiten, diese per Skript anzusteuern - muss ich mal googeln. Da kann man sicher einen (PC-losen) Kopierer bestehend aus Scanner/Drucker bauen. ;-)
  • phpSANE will ich mir auch nochmal anschauen.
  • Gerhard Jäger für seine Hilfe danken!

blog comments powered by Disqus

Design von Dicas Blogger, angepasst durch Mario Ruprecht