Der Linuxserver als Scannerserver

Gliederung
1 Einleitung
2 Voraussetzungen
3 SANE selbst kompilieren
4 Konfiguration des Servers
5 Konfiguration eines Linux-Clients
6 Konfiguration eines Windows-Clients
7 Probleme

1 Einleitung

Ein Linuxrechner kann mittels spezieller Software im Netzwerk den gemeinsamen Zugriff auf einen Scanner ermöglichen. Ich habe im Moment zwar noch ein kleines Problem mit der Konfiguration, halte das Thema aber für so interessant, daß ich im Gegensatz zu meinen sonstigen Gepflogenheiten hier eine "unvollständige" Beschreibung ins Netz stelle, da ich bisher im Netz zu diesem Thema noch nicht viel Informationen gefunden habe.

Vielleicht hat auch jemand eigene Erfahrungen, die mir eventuell weiterhelfen könnten. Für entsprechende Anregungen wäre ich dankbar, ich bin mir nicht sicher, ob meine Probleme mit meinem Scanner oder mit Konfigurationsfragen zusammenhängen.

2 Voraussetzungen

Natürlich müssen Sie über einen Scanner verfügen und dazu noch über einen Scanner, der von Linux unterstützt wird. Die aktuelle Liste finden Sie auf der Homepage des SANE-Projekts.  Dieses Projekt hat sich zum Ziel gesetzt, mittels freier Software den Zugriff auf Scanner und vergleichbare Geräte zu ermöglichen.

Sie müssen die SANE-Module Ihrer Distribution installieren. Beachten Sie, daß bei SuSE-Linux (jedenfalls bis einschließlich Version 6.1) das Programm für den Scannerserver nicht im Standardpaket enthalten ist. Sie müssen hier zumindestens für den Server die Software selbst kompilieren (Anleitung dazu folgt)!
Wenn Sie unsicher sind, ob die Software bei Ihnen komplett ist, suchen Sie auf der Festplatte nach der Datei saned (meistens im Verzeichnis /usr/local/sbin oder /usr/sbin).

Wenn Sie dauerhaft und häufiger über das Netzwerk auf einen Scanner zugreifen wollen, ist auch die Geschwindigkeit im Netz von größerer Bedeutung. Ein DIN-A4-Farbscan kann leicht 30 MByte an Daten bedeuten. Hier macht es sich stark bemerkbar, ob Sie über 10 MBit oder über 100 MBit-Netzwerkkarten verfügen.

Auf den Linuxclients reicht unter S.u.S.E. die normale Installation mittels YaST. Sane befindet sich im Paket gra "Alles rund um Grafik". Den Quellcode, den Sie im Falle eines Linuxservers benötigen, finden Sie unter S.u.S.E. im Paket zq "Quellpakete" oder Sie besorgen ihn vom oben genannten Server des SANE-Projektes. Wenn Sie auf der SANE-Hompeage sind, sehen Sie nach, ob es für Ihren Scanner aktuelle Patch-Dateien gibt. Bei mir steht ein Agfa Snapscan zur Verfügung und der funktioniert nur, wenn der entsprechende Patch installiert ist (Traditionell ein Ärgernis der S.u.S.E.-Distribution, daß der nicht installiert ist!).

3 SANE selbst kompilieren

Quellprogramme werden in der Regel in gepackter Form zur Verfügung gestellt. Das entsprechende Archiv müssen Sie sich, wie bereits gesagt entweder von den CDs Ihrer Distribution oder von der SANE-Homepage oder woher auch immer besorgen. Ich erläutere die folgenden Schritte am Archiv der Version 1.00 von SANE. Das heißt sane-1.00.tar.gz. Kopieren Sie dieses in ein beliebiges Verzeichnis, für das Sie Lese- und Schreibrechte haben. Dann müssen Sie das Paket auspacken. Geben Sie den Befehl:
tar -xvzf sane-1.00.tar.gz
an der Kommandozeile ein oder benutzen Sie die Entpackfunktionen Ihres Dateimanagers.
Wenn dieser Schritt erfolgreich war, finden Sie im aktuellen Verzeichnis ein neues Unterverzeichnis mit dem Namen sane-1.00. Wechseln Sie in dieses Verzeichnis, indem Sie
cd sane-1.00
eingeben. Wenn Sie einen Patch installieren wollen oder müssen, kopieren Sie die entsprechende Patch-Datei in das richtige Verzeichnis. Bei mir gehört z.B. die Datei patch0.5-0.6 in das Verzeichnis backends. Wechseln Sie in das entsprechende Verzeichnis und installieren Sie den Patch (logischerweise unbedingt vor dem Kompilieren !!!).
patch < patch0.5-0.6
Dann müssen Sie mit Hilfe des Skriptes configure die Konfiguration Ihres Rechners abfragen. Wichtig ist, daß Sie an dieser Stelle unter anderem die Voreinstellungen für die Verzeichnisse festlegen können. Hier kommt für S.u.S.E. wieder eine Besonderheit ins Spiel. SANE ist normalerweise z.B. darauf eingerichtet, die Konfigurationsdateien unter usr/local/etc/sane.d zu speichern, bei S.u.S.E. ist das aber /etc/sane.d. Soweit ich das sehe, muß configure für S.u.S.E. wie folgt aufgerufen werden:
./configure --mandir=/usr/man --libdir=/usr/lib --prefix=/usr --sysconfdir=/etc
Wenn Sie die Standardeinstellungen bevorzugen, reicht der Aufruf:
./configure
Dann werden alle Programmdateien und Bibliotheken erzeugt:
make
Zur Installation müssen Sie entweder als root eingeloggt sein oder Sie müssen Superuser-Rechte haben (Geben Sie su ein und dann das root-Passwort).
Durch Eingabe von
make install
werden die Dateien endgültig installiert. Wenn Sie knapp mit Platz auf der Festplatte sind, können Sie jetzt das Verzeichnis löschen, in dem Sie die Quellen von sane-1.00 gespeichert hatten.

4 Konfiguration des Servers

Die Konfiguration des Servers wird durch Konfigurationsdateien im Verzeichnis /etc/sane.d (S.u.S.E.) bzw /usr/local/etc/sane.d (Standard) bestimmt.
Die Datei dll.conf bestimmt, welche Geräte zur Verfügung stehen. Auf dem Server muß hier eine Zeile mit dem Wort net enthalten sein und eine Zeile für das Interface zu Ihrem Scanner. Bei mir ist es ein Agfa Snapscan, deshalb steht dort snapscan. Die komplette Datei dll.conf auf dem Server muß also lediglich zwei Zeilen enthalten:
net
snapscan

Die Datei net.conf auf dem Server ist bei mir leer. Es soll aber einige Geräte geben, wo hier localhost eingetragen sein muß, weil dann auch auf dem Server über das Netzwerkinterface auf das Gerät zugegriffen wird. Das ermöglicht wohl einige spezielle Parameter.

In der Datei saned.conf auf dem Server wird angegeben, welche Rechner auf den Scanner zugreifen dürfen. Es ist ganz wichtig, daß hier die sogenannten voll qualifizierten Rechnernamen stehen. Achten Sie bitte darauf, daß diese auch in der Datei /etc/hosts mit der entsprechenden IP-Nummer eingetragen sind. Ansonsten würde bei jedem Scanvorgang auf den Nameserver zugegriffen und das kostet bei Netzen mit Dial-Up-Verbindung Telefoneinheiten.
calluna.meinnetz.com
begonia.meinnetz.com
Wenn auch lokal das Netzinterface benötigt wird, fügen Sie noch eine Zeile
localhost
hinzu (Das schadet auch dann nicht, wenn Sie lokal nicht mit dem Netzinterface arbeiten).

Dann muß in der Datei, die zu Ihrem Scanner gehört, noch angegeben werden, um welches "Gerät" es sich handelt. In den meisten Fällen gibt es einen symbolischen Link /dev/scanner, der bei der Installation erzeugt wird. Andernfalls können Sie auch z.B. das SCSI-Gerät direkt angeben (/dev/sg0 oder /dev/sga oder ähnliches). Wenn bei Ihnen kein Link /dev/scanner existiert, überprüfen Sie durch Eingabe von find-scanner, an welchem anschluß der Scanner erkannt wird. Tragen Sie das dann entsprechend in die Konfigurationsdatei ein. Bei mir ist das snapscan.conf und dort steht:
/dev/scanner

Damit der Scanner im Netz zur Verfügung gestellt wird, müsse Sie noch zwei Dateien im Verzeichnis /etc ändern. Öffnen Sie die Datei /etc/services und fügen Sie eine Zeile mit dem Inhalt
sane    6566/tcp
hinzu. Zusätzlich müssen Sie in der Datei /etc/inetd.conf die Zeile
sane stream tcp nowait root /usr/local/sbin/saned saned
ergänzen. Beachten Sie, daß hier die Pfadangabe den Verhältnissen auf Ihrem Rechner entsprechen müssen. Für meine S.u.S.E.-Konfiguration muß dort z.B. stehen:
sane stream tcp nowait root /usr/sbin/saned saned

Das müßte es gewesen sein. Überprüfen Sie jetzt z.B. mit scanimage oder xscanimage, ob die Konfiguration lokal funktioniert. Das ist natürlich Voraussetzung dafür, daß Sie den Scanner im Netz zur Verfügung stellen können.

5 Konfiguration eines Linux-Clients

Auf einem Linuxclient muß saned nicht installiert sein, daher reicht auch unter S.u.S.E. die Standardinstallation von SANE. Für die Konfiguration reichen hier dann die zwei Dateien dll.conf und net.conf .
In der dll.conf auf dem Client muß lediglich der Netzzugriff aktiviert werden:
net

In der Datei net.conf auf dem Client muß der voll qualifizierte Name des Servers eingetragen sein.
azalea.meinnetz.com

Auch hier sollte dieser in /etc/hosts eingetragen sein.

6 Konfiguration eines Windows-Clients

Für Windows gibt es meines Wissens nach derzeit zwei Portierungen der SANE-Software.

Eine davon ist noch in einem sehr frühen Stadium (Version 0.1). Sie ist zu finden unter http://www.sunshinecomputing.com/winsane/ und hat zum Ziel eine völlig freie Implementierung der Client-Software zu realisieren. Es soll langfristig ein TWAIN-Modul enstehen, so daß aus jeder Windows-Anwendung mit Scanner-Interface auf den Netzdrucker zugegriffen werden kann.

Eine zweite stammt von der Firma Integramicro. Sie ist zwar auch noch nicht fertiggestellt (Version 0.9), es kann aber bereits damit gearbeitet werden. Als Freeware und mit vollem Quellcode stehen Kommandozeilenprogramme zum Zugriff auf einen Netzwerkscanner und ein Tool zur Identifikation von Netzwerkscannern zur Verfügung. Zusätzlich wird derzeit als Freeware auch ein Twain-Interface (Dies aber nicht als Quellcode) zur Verfügung gestellt. Die Installation ist in den readme-Dateien beschrieben. Aufgrund des frühen Stadiums der Software spare ich mir hier größere Details. Lediglich die winSANE.ini-Datei soll hier abgedruckt werden:

;WinSANE.ini for WinSANE data source
;
[ScannerParams]
; ScanPartner: 0 --> L/A, 1 --> H/T, 2 --> Gray and 3 --> Color
Mode=3
; -100 to +100
Brightness=0
Contrast=0
; 1 to 1200
XResolution=300
YResolution=300
; 0 --> F/B, 1 --> ADF
ADFScan=0
NoOfXfers=1
; scan window parameters
X=0
Y=0
Width=100
Height=100
; Devices
DeviceList=azalea.meinnetz.com:snapscan:/dev/scanner
ScanDevice=azalea.meinnetz.com:snapscan:/dev/scanner

Scannen per Kommandozeile sollte dann wie folgt möglich sein:
scanimg -d azalea.meinnetz.com:snapscan:/dev/scanner > Bild.ppm

7 Probleme

Derzeit habe ich noch folgendes Probleme beim Netzzugriff. In der Datei /var/log/messages erscheinen folgende Meldungen:

May 15 15:34:58 azalea saned[363]: access by saned-user@calluna.meinnetz.com accepted
May 15 15:38:14 azalea saned[363]: process_request: received unexpected procedure number 0
May 15 15:38:14 azalea saned[363]: exiting

Diese Meldungen erscheinen sowohl beim Zugriff eines Linux-Clients als auch eines Windows-Clients. Ein Linux-Client erhält wenigstens ein Preview-Window, allerdings ohne vernünftigen Inhalt.
Alles andere führt zu keinen brauchbaren Ergebnissen.

Soweit ich die Diskussionen in der SANE-developers-mailingliste verfolgt habe, liegt dieses Problem wohl an einem Fehler in dem speziellen Scannermodul. Die beschriebene Konfiguration müßte also mit anderen Scannern funktionieren.



Zurück zur Hauptseite