23.8.2000

Scanner und Linux


Wie man einen Flachbett-Scanner HP Scanjet 4c (SCSI) mit Linux betreibt:

  • Vorbereitung  (was man nur einmal machen muß) 
  • Scannen (was man jedesmal machen muß) 
  • Skripte (damit man nicht jedesmal alles wieder tippen muß) 

Vorbereitung:

  • Paket sane installieren (und alle Dependencies)
  • Scanner einschalten
  • Neues Device dem Hostadapter melden:
    • echo "scsi add-single-device 1 0 5 0">/proc/scsi/scsi
    • (Host 1, Channel 0, ID 5, LUN 0 ist das Gerät mit ID 5 an Kanal B)
  • Device-Dateien aktualisieren:
    • cd /dev MAKEDEV update
  • Scanner-Device ermitteln:
    • find-scanner
    • Ausgabe ist z.B.: found processor "HP C2520A 3503" at device /dev/sg9
  • Passende Sane-Konfigurationsdatei kontrollieren, z.B. /etc/sane.d/hp.conf:
    • /dev/scanner
  • Link erzeugen:
    • ln -s /dev/sg9 /dev/scanner
  • User und Gruppe hinzufügen:
    • groupadd saned
    • useradd saned
  • Zeile ändern in /etc/group:
    • alt saned:x:<id>:
    • neu saned:x:<id>:saned, joern
  • Zeile ergänzen in /etc/inetd.conf:
    • sane stream tcp nowait saned.saned /usr/sbin/saned saned
  • Zeile ergänzen in /etc/services:
    • sane 6566/tcp # SANE network scanner daemon
  • Scanner suchen:
    • scanimage -L
    • Ausgabe ist z.B.: device `hp:/dev/scanner' is a HP C2520A flatbed scanner
  • Scan-Optionen ermitteln:
    • scanimage --help -d hp:/dev/scanner >scan.options

Scannen:

  • Scanner einschalten
  • Neues Device dem Hostadapter melden:
    • echo "scsi add-single-device 1 0 5 0">/proc/scsi/scsi
  • Scannen:
    • scanimage -d hp:/dev/scanner --mode Color --resolution 300 >bild1.pnm

Aus man sane-hp: The output file out.pnm is a true-color file with wrong header (P4 instead of P6).

Skripte:

Skript "scan" zum Scannen
(Aufruf: scan <datei> [<auflösung>]):

#! /bin/sh
#
# $1 is filename
# $2 is resolution in dpi

if [ "$2" != "" ]
 then RES=$2
 else RES=100
fi

if [ "$1" != "" ]
 then NAME=$1
 else NAME=pic001
fi

scanimage -d hp:/dev/scanner --mode Color --resolution $RES >$NAME.pnm

Skript "scand" ruft scan auf, sobald eine Datei "command" im Verzeichnis erscheint:
(Aufruf: ./scand &)

#! /bin/sh
COMMAND=command
DIR=/home/joern
SCAN=/home/joern/scan
REMOVE=/bin/rm
SLEEP=/bin/sleep

cd $DIR

while [ true ]
do
 if [ -f $COMMAND ]
 then
  OPTIONS=`cat $COMMAND`
  $SCAN $OPTIONS
  $REMOVE $COMMAND
 fi

 $SLEEP 5
done

Datei "command" für scand:

<datei> <auflösung>

z.B.:
 pic003 150
oder
 bild17 300
oder
 testbild

Wenn keine Auflösung angegeben ist, wird 100 dpi genommen (s. "scan").

Weitere Optionen für den zu scannenden Bereich sowie Helligkeit und Kontrast fehlen noch.