%
% sane.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kapitel SANE backends %%%%%%%%%%%%%%%%%%%%%

\chapter{SANE - Scanner Access Now Easy}
\index{SANE}


\section{Allgemein}

    Scanner Access Now Easy, kurz SANE, ist ein freies Application Programming
    Interface (API) f"ur den Zugriff auf bildgebende Ger"ate wie Scanner,
    Digitale Kameras, Videokameras und andere "uber verschiedene Schnittstellen
    (USB, SCSI etc.) Es ist die Alternative zu TWAIN als Programmierschnittstelle.

    Im Gegensatz zu TWAIN sind bei SANE die Funktionalit"aten von Frontend
    und Backend strikt getrennt.

    Aufgabe der Backends ist die Kommunikation mit dem jeweiligen
    Bilderfassungsger"at "uber eine der zahlreichen unterst"utzten Schnittstellen
    (USB, Firewire, SCSI, Parallele Schnittstelle oder Serielle Schnittstelle).

    Die Frontends stellen den zum Benutzer gerichteten Teil des
    Arbeitsablaufes dar und sind normalerweise in ein Anwendungsprogramm
    integriert.

    Durch die standardisierte Schnittstelle k"onnen alle Frontends mit allen
    Backends ohne Probleme verwendet werden, die verf"ugbaren Optionen werden
    lediglich durch die tats"achlichen F"ahigkeiten der Bildquelle
    (Aufl"osung, Farbtiefe, mit oder ohne Einzelblatteinzug, Diawechsler usw.)
    beschr"ankt.


    Das SANE-Paket enth"alt bereits ein fertiges Frontend, das Programm
    'scanimage', mit dem sich in einem Skript automatisch Bilder einlesen
    lassen ohne daf"ur eine grafische Benutzeroberfl"ache zu ben"otigen.
    [Quelle: Wikipedia]


    Es werden die Ausgabeformate:

    \begin{itemize}
        \item pnm
        \item tiff
        \item jpg
        \item png
        \item pdf
        \item ps
    \end{itemize}

    an der Konsole unterst"utzt.

    F"ur das Ausgabeformat jpg und png ist das 'netpbm' Paket erforderlich.


    Zus"atzliche Pakete die extra installiert werden m"ussen.


    Um die Scannertasten(button) benutzen zu k"onnen. Es kann aber immer
    nur eines davon aktiv geschaltet werden.

    \begin{itemize}
        \item scanbd
        \item scanbuttond
    \end{itemize}


    Sehr Hilfreich auch f"ur die Konfiguration der USB-Devices durch udev.

    \begin{itemize}
        \item Sane-Autoconfig
    \end{itemize}


    Eine Erweiterung f"ur Epson Modelle.

    \begin{itemize}
        \item sane-iscan
    \end{itemize}


\section{Das Men"u im Setup-Programm}

    SANE kann auch als Benutzer, ohne Administratorrechte, auf der Konsole
    ausgef"uhrt werden.

    Das Men"u im Setup-Programm ist f"ur den Administrator wie folgt aufgebaut:

    \mbox{}

    \begin{tabular}{llll}
    & 4. &  Service administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{1cm}llll}
    & x. & SANE Scanner Access \\
    \end{tabular}
\eline
    \begin{tabular}{p{2cm}llll}
    & 1. & Sane server configuration \\
    \end{tabular}
\eline
    \begin{tabular}{p{3cm}rlll}
    & 1. & View documentation \\
    & 2. & Edit configuration \\
    & 3. & Show status \\
    & 4. & Stop service \\
    & 5. & Start service \\
    & 6. & Scanner database \\
    & 7. & Find scanners \\
    & 8. & Test scanner \\
    & 9. & List all activated backends \\
    & 10. & Scan image \\
    & 11. & Sane backend configuration \\
    & 12. & Sane scanbuttond configuration \\
    \end{tabular}
 \eline
    \begin{tabular}{p{2cm}llll}
    & 2. & List all activated backends \\
    & 3. & Scan image \\
    \end{tabular}

    \mbox{}

    Das Men"u im Setup-Programm ist f"ur den Benutzer, mit Benutzerrechten,
    wie folgt aufgebaut:

    \mbox{}

    \begin{tabular}{llll}
    & 4. &  Service administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{1cm}llll}
    & x. & SANE Scanner Access \\
    \end{tabular}
\eline
    \begin{tabular}{p{2cm}llll}
    & 1. & List all activated backends \\
    & 2. & Scan image \\
    \end{tabular}

    \mbox{}


    Das Men"u ist f"ur den Benutzer 'saned' mit Benutzerrechten,
    wie folgt aufgebaut:

    \mbox{}

    \begin{tabular}{llll}
    & 1. & List all activated backends \\
    & 2. & Scan image \\
    \end{tabular}

    \mbox{}



\section{Die "Anderung der Konfiguration}

    Die Konfiguration kann "uber den Men"upunkt 'Edit configuration'
    ge"andert werden.

    Nachdem der Editor beendet wurde, wird abgefragt, ob die Konfiguration
    aktiviert werden soll. Wird dies best"atigt, so werden "uber ein Skript
    die Anpassungen umgehend wirksam gemacht.


\section{Die Konfigurationsdatei}

    In der Konfigurationsdatei, die "uber das Men"u zug"anglich ist, sind
    folgende Parameter vorhanden; wer sie von Hand editieren will, findet sie
    unter\\
    \texttt{/etc/config.d/sane}


\section{Die Parameter}

\subsection{SANE}

\begin{description}

\config{START\_SANE}
{START\_SANE}
{STARTSANE}
{
    F"ur die Aktivierung von 'SANE' muss diese Variable
    lediglich auf den Wert 'yes' gestellt werden. Die Einstellung
    'no' schaltet 'SANE' ab.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{START\_SANE='no'}
}


%\config{SANE\_PORT}
%%{SANE\_PORT}
%{SANEPORT}
%{
%    Auf welchen Port soll der saned service laufen?
%
%    G"ultige Werte: Portnummer
%
%    Standardeinstellung: \texttt{SANE\_PORT='6566'}
%}


\config{SANE\_NETACCESS\_N}
{SANE\_NETACCESS\_N}
{SANENETACCESSN}
{
    Anzahl der Net-Eintr"age

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{SANE\_NETACCESS\_N='1'}
}


\config{SANE\_NETACCESS\_x\_NET}
{SANE\_NETACCESS\_x\_NET}
{SANENETACCESSxNET}
{
    Hostname, IP-Adresse oder Netzwerk der Clients, die auf den
    sane service zugreifen d"urfen

    Standardeinstellung: \texttt{SANE\_NETACCESS\_x\_NET='192.168.0.0/24'}
}


\config{SANE\_BACKEND\_N}
{SANE\_BACKEND\_N}
{SANEBACKENDN}
{
    Anzahl der verwendeten backends

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{SANE\_BACKEND\_N='2'}
}


\config{SANE\_BACKEND\_x\_NAME}
{SANE\_BACKEND\_x\_NAME}
{SANEBACKENDxNAME}
{
    Name des backends f"ur den verwendeten Scanner

    G"ultige Werte:  Ein Treiber aus der Auswahlliste

    abaton agfafocus apple artec artec\_eplus48u as6e avision bh
    canon canon630u canon\_dr canon\_lide70 canon\_pp cardscan coolscan
    coolscan2 coolscan3 dc25 dc210 dc240 dell1600n\_net dmc epjitsu
    epson epson2 epsonds fujitsu genesys gphoto2 gt68xx hp hp3500 hp3900
    hp4200 hp5400 hp5590 hpsj5s hpljm1005 hs2p ibm kodak kodakaio
    kvs1025 kvs20xx kvs40xx leo lexmark ma1509 magicolor matsushita
    microtek microtek2 mustek mustek\_pp mustek\_usb mustek\_usb2 nec
    net niash pie pieusb pixma plustek plustek\_pp qcam ricoh ricoh2
    rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan sp15c st400
    stv680 tamarack teco1 teco2 teco3 test u12 umax umax\_pp umax1220u
    v4l xerox\_mfp p5


    Welches Backend f"ur den Scanner das richtige ist,
    erfahrt ihr hier:
    \link{http://www.sane-project.org/sane-supported-devices.html}{SANE Backends}

    Eine Kurzfassung ist unter dem Menupunkt 'Scanner database' abgelegt.

    Standardeinstellung: \texttt{SANE\_BACKEND\_x\_NAME='abaton'}
}

\end{description}


\subsection{Scan User}


    Als default wird der Benutzer 'saned' eingerichtet. Um mit dem Benutzer
    'saned' arbeiten zu k"onnen muss daf"ur ein Passwort angelegt werden.

    Als root: passwd saned


    dann laesst sich der Benutzer 'saned' "uber ssh starten \\

    ssh saned@eis


    Der Benutzer 'saned' hat als default '/public/scans' als Ablageort


    Andere Benutzer auf dem \eisfair-Server k"onnen ebenfalls, in ihrem
    Home Verzeichnis, scannen.
    Der default Ablageort ist dann /home/\$user/scans


    Damit das alles klappt werden die Benutzer, bei der Konfiguration, der
    Gruppe 'lp' hinzugef"ugt.


\begin{description}

\config{SANE\_SCAN\_USER\_N}
{SANE\_SCAN\_USER\_N}
{SANESCANUSERN}
{
    "Uber diesen Parameter wird die Anzahl der Benutzer angegeben.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{SANE\_SCAN\_USER\_N='0'}
}


\config{SANE\_SCAN\_USER\_x\_NAME}
{SANE\_SCAN\_USER\_x\_NAME}
{SANESCANUSERxNAME}
{
    Hier wird der Benutzer Namen angebenen der in seinem Homeverzeichnis
    scannen k"onnen soll.

    G"ultige Werte: Benutzername

    Standardeinstellung: \texttt{SANE\_SCAN\_USER\_x\_NAME='{}'}
}


\config{SANE\_SCAN\_USER\_x\_ACTIVE}
{SANE\_SCAN\_USER\_x\_ACTIVE}
{SANESCANUSERxACTIVE}
{
    "Uber diesen Parameter wird eingestellt, ob der Datensatz
    aktiv sein soll.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{SANE\_SCAN\_USER\_x\_ACTIVE='no'}
}

\end{description}


\subsection{SCANBD}


    'scanbd' ist ein Optionales Paket und muss extra installiert werden.

    'scandb' benutzt die backends von SANE. Alle Scanner die von SANE
    unterst"uzt werden, werden auch durch 'scanbd' unterst"uzt.


\begin{description}

\config{SANE\_START\_SCANBD}
{SANE\_START\_SCANBD}
{SANESTARTSCANB}
{
    Soll scanbd gestartet werden?

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{SANE\_START\_SCANBD='no'}
}


\config{SANE\_SCANBD\_SCAN\_FOLDER}
{SANE\_SCANBD\_SCAN\_FOLDER}
{SANESCANBDSCANFOLDER}
{
    Absoluter Pfad an dem die Scans abgelgt werden sollen.

    Default: /public/scans

    G"ultige Werte: Absoluter Pfad

    Standardeinstellung: \texttt{SANE\_SCANBD\_SCAN\_FOLDER='/public/scans'}
}

\end{description}


    Die Konfiguration und die Skripte liegen in '/etc/scanbd' und m"ussen an
    die Gegebenheiten angepasst werden. Dieser Vorgang l"asst sich nicht "uber
    die gewohnte Konfigurationsdatei abbilden.

    Alle Skripte sind auch als Vorlage unter '/usr/share/scanbd' abgelegt und
    k"onnen von da wieder kopiert werden.

    Es ist schwierig den Vorgang im einzelnen zu beschreiben, da es auch je nach
    Scanner Modell Unterschiede mit den Tasten gibt. Bitte dazu die Informationen
    im Web nachlesen.

    Ob die Tasten am Scanner erkannt werden sollten, kann im Terminal mit dem
    Aufruf von 'scanimage -A' "uberpr"uft werden. Die erkannten Tasten ('Sensors')
    werden am Ende der Ausgabe aufgef"uhrt.

    Um n"ahere Informationen dar"uber zu erlangen, welche Tasten 'scanbd' erkennt,
    kann zun"achst im Terminal ein Aufruf mit dem Befehl


    export SANE\_CONFIG\_DIR=/etc/scanbd/sane.d/ \\
    scanbd -f -d7 \\

    erfolgen. Dazu muss der SANE-Daemon ausgeschaltet sein (am einfachsten geht
    das "uber das Menu - Stop service und es darf keine weitere scanbd Instanz
    laufen wenn der Dienst vorher gestartet wurde), sonst erkennt scanbd keine
    Scanner. Mit dem Befehl l"auft scanbd im Vordergrund im h"ochsten 'debugging'
    -Level, im Terminal erscheinen zun"achst die Angaben zum Ger"at sowie
    Ergebnisse die Standard-Filter-Abfragen, die in der scandb.conf vorgesehen sind.


    Die vorstehenden Angaben sind dem \link{https://wiki.ubuntuusers.de/scanbd/}{Ubuntu Wicki}
    entnommen, wo auch weiteres erkl"art wird.


    Die Filter in der scanbd.conf m"ussen den Tasten entsprechend zugeordnet werden.


\subsection{SCANBUTTOND}


    'scanbuttond' ist ein Optionales Paket und muss extra installiert werden

    'scanbuttond' benutzt seine eigenen backends. Die unterst"utzten Scanner
    sind im Anschluss gelistet.

\begin{description}

\config{SANE\_START\_SCANBUTTOND}
{SANE\_START\_SCANBUTTOND}
{SANESTARTSCANBUTTOND}
{
    Soll der scanbuttond daemon gestartet werden?

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{SANE\_START\_SCANBUTTOND='no'}
}


\config{SANE\_SCANBUTTOND\_BUTTON\_N}
{SANE\_SCANBUTTOND\_BUTTON\_N}
{SANESCANBUTTONDBUTTONN}
{
    Anzahl der buttons am Scanner

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{SANE\_SCANBUTTOND\_BUTTON\_N='3'}
}


\config{SANE\_SCANBUTTOND\_BUTTON\_x\_EXEC}
{SANE\_SCANBUTTOND\_BUTTON\_x\_EXEC}
{SANESCANBUTTONDBUTTONxEXEC}
{
    Pfad und Name des Scripts, welches f"ur diesen Button verwendet
    werden soll

    Standardeinstellung:  \texttt{SANE\_SCANBUTTOND\_BUTTON\_x\_EXEC='/etc/scanbuttond/button1.sh'}
}

\end{description}

Supported scanners by Scanbuttond

Supported by the epson backend (via libusb): \\
* Epson Expression 1600 (expected to work) \\
* Epson Expression 1680 (expected to work) \\
* Epson Perfection 610 (expected to work) \\
* Epson Perfection 636U (expected to work) \\
* Epson Perfection 640 (expected to work) \\
* Epson Perfection 1200U (expected to work) \\
* Epson Perfection 1240 (working, tested) \\
* Epson Perfection 1640 (expected to work) \\
* Epson Perfection 1650 (working, tested) \\
* Epson Perfection 1660 (working, tested) \\
* Epson Perfection 2400 (working, tested) \\
* Epson Perfection 2450 (expected to work) \\
* Epson Perfection 3200 (expected to work) \\
* Epson Stylus CX3200 (working, tested) \\
* Epson Stylus Scan 2500 (working, tested) \\

Supported by the fujitsu backend (via libusb): \\
* Fujitsu ScanSnap S1500 \\
* Fujitsu fi-5110EOX \\
* Fujitsu fi-5220C \\
* Fujitsu fi-6130 \\
* Fujitsu fi-6130Z \\

Supported by the genesys backend (via libusb): \\
* Canon CanoScan LiDE 60 \\
* Canon CanoScan LiDE 35 \\
* Xerox Travel Scanner 100 \\

Supported by the gt68xx backend (via libusb): \\
* Genius Colorpage Vivid4 (working, experimental) \\

Supported by the hp3500 backend (via libusb): \\
* HP ScanJet 3500C (expected to work) \\
* HP ScanJet 3530C (expected to work) \\
* HP ScanJet 3570C (expected to work) \\

Supported by the hp3900 backend (via libusb): \\
* HP ScanJet 3800 (working, tested) \\
* HP ScanJet 3970 (working, tested) \\
* HP ScanJet 4070 (working, tested) \\
* HP ScanJet 4370 (working, tested) \\
* HP ScanJet G2710 (working, tested) \\
* HP ScanJet G3010 (working, tested) \\
* HP ScanJet G3110 (working, tested) \\
* Umax Astra 4900/4950 (expected to work) \\
* BenQ 5550T \\

Supported by the hp5590 backend (via libusb): \\
* HP ScanJet 4500 \\
* HP Scanjet 4570 (expected to work) \\
* HP Scanjet 5550 (expected to work) \\
* HP Scanjet 5550c \\
* HP Scanjet 5590 (expected to work) \\
* HP Scanjet 7650 (expected to work) \\

Supported by the mustek backend (via libusb): \\
* Mustek BearPaw 2448TA (experimental) \\

Supported by the niash backend (via libusb): \\
* Agfa Snapscan Touch (expected to work) \\
* HP Scanjet 3300c (expected to work) \\
* HP Scanjet 3400c (expected to work) \\
* HP Scanjet 4300c (expected to work) \\

Supported by the plustek backend (via libusb): \\
* Canon CanoScan N1220U (expected to work) \\
* Canon CanoScan D660U (expected to work) \\
* Canon CanoScan N650U (expected to work) \\
* Canon CanoScan LiDE 20 (experimental) \\
* Canon CanoScan LiDE 25 (experimental) \\
* Canon CanoScan LiDE 30 (experimental) \\
* Epson Perfection 1250 \\
* Epson Perfection 1260 (working, tested) \\
* Hewlett-Packard ScanJet 2200c (experimental) \\
* Genius (KYE) ColorPage-HR6 V2 (experimental) \\

Supported by the plustek\_umax backend (via libusb): \\
* UMAX Astra 3400/3450 (experimental) \\

Supported by the snapscan backend (via libusb): \\
* Epson Perfection 2480 (expected to work) \\
* Epson Perfection 2580 (expected to work) \\
* Epson Perfection 1670 (working, tested) \\
* Epson Perfection 3490 (working, tested) \\
* Epson Perfection 3590 (working, tested) \\
* Epson Perfection 1270 (working, tested) \\
* Fujitsu ScanSnap S1500 \\

Supported by the gt68xx backend (via libusb): \\
* Genius Colorpage Vivid4 (working, experimental) \\
* Mustek Bearpaw 1200CS (working, experimental) (needs "scanimage -n" to load firmware) \\

Supported by the gt68xx\_plustek backend (via libusb): \\
* Plustek OpticSlim 2400 (expected to work) \\
* Plustek OpticSlim 2400+ (working, tested) \\

Note: the mustek, niash, plustek, plustek\_umax, gt68xx and snapscan backends
were implemented using information gathered by "sniffing" the communication
between the Windows driver and the scanner, because there is no technical
documentation available for these devices! This means that there may be some
weird issues (e.g. button press events reported twice).


=======================================================================


Weitere Infos und Fehlerbehebung

Wenn der Scanner zwar gefunden wird aber nicht funktioniert, einfach auf der
Konsole folgende Befehle ausf"uhren:

saneeis \# sane-find-scanner \\
saneeis \# export SANE\_DEBUG\_DLL=12 \\
saneeis \# export SANE\_DEBUG\_[backend]=12 \\
saneeis \# scanimage -L

Dies aktiviert die Debugausgaben von sane und kann helfen den Fehler
einzugrenzen. \\
Bitte anstatt [backend] den Namen des verwendeten Backends angeben.


Probleme mit dem Scan image Men"upunkt

Es kann sein das das Scannen fehlschlaegt, da scanimage immer meldet das der
Scanner besch"aftigt sei oder "ahnliches.

In diesem Fall kann es helfen, wenn man das Modul 'ehci\_hcd' entl"adt
bzw. neul"adt.
D.h. auf der Konsole: \\
saneeis \# modprobe -r ehci\_hcd \\
bzw. \\
saneeis \# modprobe -r ehci\_hcd \\
saneeis \# modprobe ehci\_hcd \\

Das Scanfrontend l"asst sich auf der Konsole dann auch einfachheitshalber
aufrufen mit dem Befehl:

/var/install/bin/sane\_ScanImage


Weiterf"uhrende Informationen und Tipps zur Fehlerbehebung \\
http://www.sane-project.org/sane-frontends.html \\
http://www.sane-project.org/docs.html \\
http://tldp.org/HOWTO/Scanner-HOWTO/index.html \\


infos zu scandb \\
https://wiki.ubuntuusers.de/scanbd/ \\
https://wiki.archlinux.org/index.php/Scanner\_Button\_Daemon \\
https://bbs.archlinux.de/viewtopic.php?id=20954 \\

