sane-sharp(5)

BEZEICHNUNG
sane-sharp - SANE-Backend für Scanner von SHARP

BESCHREIBUNG
Die Bibliothek sane-sharp implementiert ein SANE-(Scanner Access Now Easy) Backend zum Zugriff auf Sharp-SCSI-Scanner. Dieses Backend sollte als Software im Beta-Stadium betrachtet werden! Im aktuellen Zustand arbeitet sie mit JX-610- und JX-250-Scannern zusammen. Sie ist für die Verwendung mit den Scannern der JX-330-Serie vorbereitet, was wir aber nicht testen konnten.

Mit anderen SHARP-Scannern kann es funktionieren oder auch nicht.

Gegenwärtig sollten die folgenden Scanner mit diesem Backend funktionieren:

    Anbieter  Produktkennung:
    -----     -----------
    Sharp     JX-610
    Sharp     JX-250
    Sharp     JX-320
    Sharp     JX-330
    Sharp     JX-350

Die folgenden Scanner wurden vom Backend erkannt, sind aber nicht getestet:

    Anbieter  Produktkennung:
    -----     -----------
    Sharp     JX-325

GERÄTENAMEN
Dieses Backend erwartet Gerätenamen der folgenden Form:

    Spezialdatei

Die angegebene Spezialdatei ist der Pfadname eines Spezialgeräts, das einem SCSI-Scanner entspricht. Der Name des Spezialgeräts muss ein generisches SCSI-Gerät oder ein symbolischer Link zu so einem Gerät sein. Unter Linux könnte ein solcher Gerätename beispielsweise /dev/sga oder /dev/sge sein. Siehe sane-scsi(5) für Details.

SCAN-OPTIONEN

--mode
    Scan-Modus. Mögliche Einstellungen sind: Lineart (1 bit schwarz-und-weiß-Scans), Gray (8 bit Graustufenscans), Lineart Color (zweistufige Farbscans) und Color (8 bit RGB-Scans). Der Vorgabewert ist Color.

--halftone-pattern
    Rastermuster. Nur für die Scanner der JX-330-Serie verfügbar. Mögliche Einstellungen sind: none, Dither Bayer, Dither Spiral, Dither Dispersed und Error Diffusion. Der Vorgabewert ist none.

--source
    Papierquelle. Diese Option ist nur verfügbar, falls ein automatischer Dokumenteneinzug oder ein Transparenz-Adapter installiert ist. Mögliche Einstellungen sind: Flatbed, Automatic Document Feeder und Transparency Adapter. Falls ein ADF oder ein Transparenz-Adapter installiert ist, ist deren Verwendung die Vorgabe.

--custom-gamma
    Angepasstes Gamma. Diese Option bestimmt, ob eine eingebaute oder eine angepasste Gammatabelle verwendet wird. Mögliche Einstellungen sind: yes (aktiviert angepasste Gamma-Tabellen) oder no (aktiviert eine eingebaute Gamma-Tabelle).

--gamma
    Gamma. Diese Option ist nur verfügbar, falls Custom Gamma auf no gesetzt ist. Mögliche Werte sind: 1.0 oder 2.2. Der Vorgabewert ist 2.2. (Die JX-250 und JX-350 haben keine eingebaute Gammakorrektur; für diese Scanner wird eine Gamma-Tabelle vom Backend zum Scanner heruntergeladen.)

--gamma-table
    Gamma-Tabelle. Erlaubte Werte: 0…255. 256 Zahlen müssen definiert werden. Die Vorgabewerte sind 0, 1, 2, … 255 (d.h. Gamma == 1). Diese Tabelle wird nur für Graustufen-Scans verwendet.

--red-gamma-table
    Rote Gamma-Tabelle. Erlaubte Werte: 0…255. 256 Zahlen müssen definiert werden. Die Vorgabewerte sind 0, 1, 2, … 255 (d.h. Gamma == 1).

--green-gamma-table
    Grüne Gamma-Tabelle. Erlaubte Werte: 0…255. 256 Zahlen müssen definiert werden. Die Vorgabewerte sind 0, 1, 2, … 255 (d.h. Gamma == 1).

--blue-gamma-table
    Blaue Gamma-Tabelle. Erlaubte Werte: 0…255. 256 Zahlen müssen definiert werden. Die Vorgabewerte sind 0, 1, 2, … 255 (d.h. Gamma == 1).

--resolution
    wählt die Auflösung des gescannten Bildes. Erlaubte Werte: 30…600 (JX-330, JX-350 und JX-610) und 30…400 (JX-250). Der Vorgabewert ist 150.

-l, -t, -x, -y
    Scan-Fenster. Obere linke x-Position des Scanbereichs (-l), obere linke y-Position des Scanbereichs (-t), untere rechte Position des Scanbereichs (-x) und untere rechte Position (-y) des Scanbereichs. Die möglichen Einstellungen hängen vom Scannermodell und, für den JX-250 und den JX-350, auch vom Einsatz des automatischen Dokumenteneinzugs bzw. des Transparenz-Adapters ab. Bitte schauen Sie sich die erlaubten Werte in xscanimage(1) oder xsane(1) an. Bei scanimage(1) geben Sie einen der folgenden Befehle ein, um die erlaubten Parameterwerte für das Scan-Fenster zu sehen:
    scanimage -d sharp --source "Automatic Document Feeder" --help scanimage -d sharp --source Flatbed --help scanimage -d sharp --source "Transparency Adapter" --help

--edge emphasis
    Randbetonung. Diese Option ist für den JX-250 und den JX-350 nicht verfügbar. Mögliche Einstellungen: None, Middle, Strong und Blur. Die Vorgabe ist None.

--threshold
    setzt den Schwellwert für schwarze und weiße Pixel im Modus Lineart. Mögliche Werte sind 1…255. Der Vorgabewert ist 128. Diese Option ist nur im Scanmodus lineart verfügbar.

--threshold-red
    setzt den Schwellwert für die rote Komponente eines Pixels im Lineart-Farbscan-Modus. Mögliche Werte sind 1…255. Der Vorgabewert ist 128. Diese Option ist nur im Farb-Scanmodus lineart verfügbar.

--threshold-green
    setzt den Schwellwert für die grüne Komponente eines Pixels im Lineart-Farbscan-Modus. Mögliche Werte sind 1…255. Der Vorgabewert ist 128. Diese Option ist nur im Farb-Scanmodus lineart verfügbar.

--threshold-blue
    setzt den Schwellwert für die blaue Komponente eines Pixels im Lineart-Farbscan-Modus. Mögliche Werte sind 1…255. Der Vorgabewert ist 128. Diese Option ist nur im Farb-Scanmodus lineart verfügbar.

--lightcolor
    setzt die Farbe der Lichtquelle. Mögliche Werte sind white, red, green und blue. Der Vorgabewert ist white. Diese Option ist nur in den Scanmodi lineart color und color verfügbar.

ADF-VERWENDUNG
Falls ein Papierstau auftritt, muss der Wartungsdeckel geöffnet und geschlossen werden, selbst wenn das verstopfte Papier ohne Öffnen der Wartungsklappe entfernt werden kann. Andernfalls wird der Fehlerzustand nicht zurückgesetzt.

KONFIGURATION
Der Inhalt der Datei sharp.conf ist eine Liste von Optionen und Gerätenamen, die Sharp-Scannern entsprechen. Leere Zeilen und Zeilen, die mit einer Raute (#) beginnen, werden ignoriert. Siehe sane-scsi(5) für Details über Gerätenamen.

Zeilen, die eine Option setzen, beginnen mit dem Schlüsselwort option, gefolgt vom Optionsnamen und dessen Wert. Derzeit sind drei Optionen definiert: buffers, buffersize und readqueue.

Optionen am Anfang von sharp.conf gelten für alle Geräte; Optionen, die nach Gerätenamen definiert sind, gelten für dieses Gerät.

Die Optionen buffers und readqueue sind nur von Bedeutung, falls das Backend so kompiliert wurde, dass jeder Scan einen zweiten, mit Fork gestarteten Prozess auslöst (Schalter USE_FORK in sharp.c). Dieser Prozess liest die Scandaten aus dem Scanner und schreibt diese Daten in einen Block gemeinsam benutzten Speichers. Der Elternprozess liest die Daten aus diesem Speicherblock und liefert sie an die Oberfläche aus. Die Optionen steuern die Größe und die Verwendung dieses gemeinsamen Speicherblocks.

option buffers definiert die Anzahl der verwendeten Puffer. Die kleinste erlaubte Zahl ist 2.

option buffersize definiert die Größe eines Puffers. Da jeder Puffer mit einem einzelnen Lesebefehl, der an den Scanner gesendet wird, gefüllt wird, wird seine Größe automatisch auf die durch das Betriebssystem oder durch die SANE-SCSI-Bibliothek für SCSI-Lesebefehle erlaubte Größe begrenzt. Für Scan-Auflösungen von 300 DPI oder höher wird eine Puffergröße von 128 kB oder 256 kB empfohlen.

option readqueue definiert, wie viele Lesebefehle, die an den Scanner gesandt werden sollen, in die Warteschlange sollen. Derzeit unterstützt die SANE-SCSI-Bibliothek Warteschlangen für Lese-Befehle nur unter Linux. Für andere Betriebssysteme sollte option readqueue auf 0 gesetzt werden. Für Linux sollte option readqueue auf 2 gesetzt werden. Größere Werte als 2 für option readqueue sind in den meisten Fällen nicht vernünftig. option buffers sollte größer als option readqueue sein.

Leistungsbetrachtungen
Dieser Abschnitt fokussiert sich auf das Problem des Anhaltens des Schlittens des Scanners während eines Scans. Schlittenstops passieren hauptsächlich bei dem JX-250. Dieser Scanner hat offensichtlich nur einen kleinen internen Puffer verglichen zu seiner Geschwindigkeit. Das bedeutet, dass das Backend die Daten so schnell wie möglich vom Scanner lesen muss, um die Schlittenstopps zu vermeiden.

Selbst der JX-250 benötigt nur weniger als 10 Sekunden für einen A4-Graustufenscan in 400 DPI, was zu einer Datenübertragungsrate von mehr als 1,6 MB pro Sekunde führt. Das bedeutet, dass die vom Scanner erstellten Daten recht schnell verarbeitet werden müssen. Aufgrund des kleinen internen Puffers des JX-250 muss das Backend Leseanforderungen für den nächsten Datenblock nach dem Lesen eines Datenblock so früh wie möglich ausgeben, um Schlittenstopps zu vermeiden.

Der Schlitten kann aus folgenden Gründen stehen bleiben:

    - zu viel »Verkehr« auf dem SCSI-Bus
    - langsame Antworten des Backends an den Scanner
    - ein Programm, das die vom Backend erlangten Daten verarbeitet, ist zu langsam

Zu viel »Verkehr« auf dem SCSI-Bus: Dies passiert beispielsweise, falls Festplatten an den gleichen SCSI-Bus wie der Scanner angeschlossen sind und wenn der Datentransfer von/zu diesen Festplatten einen beträchtlichen Teil der SCSI-Bandbreite während eines Scans benötigt. Falls dies der Fall ist, sollten Sie in Betracht ziehen, den Scanner an einen separaten SCSI-Adapter anzuschließen.

Langsame Antworten durch das Backend an den Scanner: Unglücklicherweise haben im Allgemeinen UNIX-artige Betriebssysteme keine Echtzeitfähigkeiten. Daher gibt es keine Garantie, dass das Backend unter allen Bedingungen in der Lage ist, mit dem Scanner so schnell wie möglich zu kommunizieren. Um das Problem zu minimieren, sollte das Backend so kompiliert werden, dass ein separater Leseprozess mit Fork gestartet wird: Stellen Sie sicher, dass USE_FORK definiert ist, wenn Sie sharp.c kompilieren. Falls weiterhin das Problem der langsamen Antworten durch das Backend bleibt, könnten Sie versuchen, die Systemlast zu reduzieren. Selbst obwohl das Backend und der Leseprozess nur einen geringen Anteil der Prozessorzeit benötigen, können andere laufende Prozesse zu einer Erhöhung der Zeitverzögerung zwischen zwei Zeitfenstern, die dem Leseprozess zugeteilt werden, führen. Auf langsameren Systemen kann solch eine Verzögerung groß genug sein, um einen Schlittenstopp bei dem JX-250 auszulösen. Für Linux wird die Verwendung des SG-Treibers Version 2.1.36 oder neuer empfohlen, da er im Zusammenspiel mit der SCSI-Bibliothek von Sane Version 1.0.2 das Einreihen von Befehlen im Kernel unterstützt. Diese Implementierung, kombiniert mit einer Puffergröße von mindestens 128 kB, sollte die meisten Schlittenstopps vermeiden.

Langsame Verarbeitung der Scan-Daten: Ein Beispiel für diese Situation ist der Zugriff auf den Scanner über eine 10-MBit-Ethernet-Verbindung, die definitiv für die Übertragung der Scandaten in der Geschwindigkeit, in der sie der Scanner erstellt, zu langsam ist. Falls Sie über genug Arbeitsspeicher verfügen, können Sie option buffers erhöhen, so dass das gesamte Bild in diesen Puffern gespeichert werden kann.

Um herauszufinden, ob das Backend oder die weitere Verarbeitung der Daten zu langsam ist, setzen Sie die Umgebungsvariable SANE_DEBUG_SHARP auf 1. Wenn ein Scan abgeschlossen ist, schreibt das Backend die Zeile »buffer full conditions: nn« auf die Standardfehlerausgabe. Falls nn null ist, werden Schlittenstopps durch zu langsame Verarbeitung des Backends oder durch zu viel »Verkehr« auf dem SCSI-Bus ausgelöst. Falls nn größer als null ist, musste das Backend nn mal warten, bis ein Puffer durch die Oberfläche verarbeitet wurde. (Bitte beachten Sie, dass option buffers größer als option readqueue sein muss, um nützliche Ausgaben für die »Puffer-Voll-Bedingung« zu erhalten.)

DATEIEN

/etc/sane.d/sharp.conf
    Die Backend-Konfigurationsdatei.

/usr/lib/sane/libsane-sharp.a
    Die statische Bibliothek, die dieses Backend implementiert.

/usr/lib/sane/libsane-sharp.so
    Die dynamische Bibliothek, die dieses Backend implementiert (auf Systemen verfügbar, die dynamisches Laden unterstützen).

UMGEBUNGSVARIABLEN

SANE_DEBUG_SHARP
    Falls die Bibliothek mit Debug-Unterstützung kompiliert wurde, steuert diese Umgebungsvariable die Debug-Stufe für dieses Backend. Beispielsweise bewirkt ein Wert von 128 die Anzeige sämtlicher Debug-Ausgaben. Kleinere Werte reduzieren die Ausführlichkeit.

BEKANNTE PROBLEME
1. ADF-Modus
    Nach verschiedenen Scans aus der automatischen Dokumentenzuführung fährt der Scanner den Schlitten in die ADF-Ruheposition zurück, bevor ein Scanvorgang beginnt. Wir wissen nicht, ob dies am Scanner liegt oder ein Fehler im Backend ist. Momentan ist es nötig, den Scanner aus- und wieder einzuschalten, um dieses ärgerliche Verhalten zu beheben.
2. Höhe des Schwellwertes funktioniert nicht (nur JX-610).

3. Die maximale Auflösung ist auf 600 DPI (JX-610-Unterstützung bis zu 1200 DPI) bzw. 400 DPI (JX-250) begrenzt.

4. Falls der JX250 mit einem ADF verwendet wurde, kann folgende Situation auftreten: Nach mehreren Scans und dem Laden eines neues Blatts bewegt der Scanner den Schlitten zu der Leerlaufposition und zurück zur Position für ADF-Scans. Dies passiert für jeden Scan, im Gegensatz zur Kalibrierung, die nach 10 Scans erfolgt. (Für die Kalibrierung wird der Schlitten auch zur Leerlaufposition gefahren.) Wir wissen nicht, ob das Verhalten durch das Backend ausgelöst wird oder ob es ein Fehler in der Firmware des Scanners ist.

5. Die Verwendung der Transparenzeinheit (Film-Scan-Einheit) wird unterstützt, wurde aber nicht getestet.

SIEHE AUCH
sane(7), sane-scsi(5)

AUTOREN
Kazuya Fukuda, Abel Deuring

DANKSAGUNGEN
Das Sharp-Backend basiert auf dem von Helmut Koeberle geschriebenen Canon-Backend.

Teile dieser Handbuchseite sind eine direkte Kopie von sane-mustek(5) von David Mosberger-Tang, Andreas Czechanowski und Andreas Bolsch.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer (debian-l10n-german@lists.debian.org).