Copyright 1999 by Verlag Heise Heise. Zweitveröffentlichung mit freundlicher Genehmigung der c't-Redaktion.
Unterthema: SCSI unter Linux
Unterthema: Farbmanagement
Während Linux bei der Unterstützung `lebenswichtiger´ Hardware wie Netzkarten oder Massenspeicher längst mit anderen Betriebssystemen mithalten kann, steht das PC-Unix in dem Ruf, dem Betrieb `exotischer´ Hardware einige Hindernisse in den Weg zu legen. Die wenigsten Hardware-Hersteller legen ihren Geräten Linux-Treiber bei; und so ist unter Linux häufig Bastelei angesagt, wo andere Betriebssysteme das Leben des Anwenders mit `Plug and Play´ erleichtern.
Scanner hingegen - zumindest in ihrer SCSI-Spielart - lassen sich sehr einfach betreiben. Das SANE-Projekt (Scanner Access Now Easy; die phonetische Ähnlichkeit zu TWAIN ist nicht ganz unbeabsichtigt) stellt unter Linux und Unix ein einfaches und komfortables Interface zwischen Scanner und Anwendungen zur Verfügung [1]. SANE begreift nicht nur Flachbett-Scanner als `Scanner´, sondern auch Videokameras oder Webcams - kurzum alles, was ein Bild aufnehmen und an den Rechner liefern kann. Selbst Grafikdateien lassen sich mit SANE als Bildquelle verwenden.
Auch die Bildbearbeitung - lange Zeit eher ein Stiefkind in der Linuxwelt - hat inzwischen gewaltig zugelegt: Mit dem GNU Image Manipulation Program Gimp [2] steht unter Linux ein ernst zu nehmendes Bildbearbeitungsprogramm zur Verfügung, das problemlos mit SANE zusammenarbeitet.
Ansonsten kann man mit einem SCSI-Scanner, den SANE unterstützt, sofort loslegen. Selbst wer ansonsten keine SCSI-Geräte verwendet, braucht sich nicht allzu viele Gedanken zu machen: Die meisten SCSI-Scanner kommen mit einer eigenen SCSI-Karte. Allerdings rät SANE von diesen sehr einfachen SCSI-Karten ab und empfiehlt den Kauf eines billigen SCSI-Hostadapters, den Linux unterstützt.
Einige Handscanner bringen eine eigene Steckkarte zum Anschluss des Gerätes mit - in diesem Fall benötigt man einen speziellen Treiber für Linux. [4] widmet sich speziell den Handscannern und bietet Hinweise, wie weit sich die einzelnen Geräte mit den verfügbaren Linux-Treibern einsetzen lassen.
Linux unterstützt den Universal Serial Bus seit der Kernelversion 2.2.7; in den aktuellen Entwicklerkerneln (2.3.x) ist der USB-Support bereits deutlich weiter fortgeschritten. Dennoch steht USB unter Linux noch am Anfang; nur bei wenigen USB-Geräten ist die Unterstützung schon so gut, dass sie sich völlig problemlos in Betrieb nehmen lassen.
Allgemeine Informationen zu Linux und USB finden sich auf [7]; [8] enthält eine (allerdings noch sehr kurze) Liste der getesteten USB-Scanner. Zurzeit sind derartige Geräte unter Linux noch nicht zu empfehlen; erst mit dem (Ende des Jahres erwarteten) neuen Anwenderkernel 2.4 dürfte sich die Situation bessern.
Beim aktuellen Stand der Entwicklung fährt man unter Linux mit einem SCSI-Scanner am besten - wer den Neukauf eines Scanners für Linux plant, sollte daher ein SCSI-Modell in Betracht ziehen und zuvor die SANE-Liste konsultieren. Geräte, die SANE nicht unterstützt, lassen sich möglicherweise noch mit einem speziellen Treiber verwenden - Hinweise darauf finden sich im Linux-Hardware-Howto [5]. Auch ein Blick in SuSEs Hardware-Datenbank [6] kann helfen, den Status eines bereits angeschafften Scanners herauszufinden.
Wer den Scanner an einer mitgelieferten SCSI-Karte betreibt und den benötigten Low-level-Treiber als Kernelmodul kompiliert hat, muss dieses Modul vor dem Scanner-Zugriff mit insmod oder modprobe laden:
/sbin/modprobe aha152x aha152x=0x140,10etwa lädt das Modul für einen Adaptec AVA 1505, der beispielsweise bei einigen Microtek-Scannern mitgeliefert wird. `0x140´ ist der IO-Port, `10´ der IRQ. Natürlich muss man dazu beim Kompilieren des Kernel den passenden Treiber `AHA152x/2825´ als Modul eingebunden haben. Wenn alles funktioniert, sollte der Kernel beim Booten den Scanner bereits identifizieren. In den Kernelmeldungen erscheint dann eine Meldung wie
Host: scsi0 Channel: 00 Id: 05 Lun: 00 Vendor: Model: Scanner 636A4 Type: Scanner ANSI SCSI revision: 02Mit `cat /proc/scsi/scsi´ kann man sich auch nachträglich vergewissern, dass der Scanner korrekt erkannt wurde.
Den Scanner spricht man über das generische SCSI-Device /dev/sgx an - je nach Distribution ist x entweder eine Zahl oder ein Buchstabe. Über welche Zahl beziehungsweise welchen Buchstaben der Scanner angesprochen wird, hängt von seinem Platz in der Reihe der SCSI-Geräte am Bus ab: Ist beispielsweise das CDROM das erste Gerät, das zweite eine Festplatte und der Scanner Nummer drei, so ist /dev/sg2 oder /dev/sgc für den Scanner zuständig. Besteht bereits ein Link von /dev/scanner auf ein Device, sollte man überprüfen, ob dieser Link auf das korrekte Device zeigt, und ihn gegebenenfalls korrigieren.
Nun kann man sich an die Installation von SANE machen. Viele Distributionen enthalten bereits ein vorbereitetes Paket; wenn nicht, kann man die aktuellen Quellen von [2] beziehen. Die Installation des Quelltextarchivs verläuft wie üblich: Auspacken mit tar xzvf sane-1.0.1.tar.gz, Kompilieren und Installieren via configure, make und make install.
Hier existiert für jede unterstützte Scannerfamilie eine Datei Scanner-Name.conf. Die zugehörige man-page (`man sane-Scanner-Name´) erläutert die möglichen Optionen. Ebenso kann man die zum eigenen Scanner passende Konfigurationsdatei auch in seinem Home-Verzeichnis ablegen. Aus der Datei /usr/local/etc/sane.d/dll.conf erfährt SANE, welche Backends - also Scanner-Treiber - existieren. Hier sind normalerweise keine Änderungen erforderlich.
Im SANE-Quellverzeichnis liegt unter tools/ noch das kleine Programm find-scanner, das etwa Folgendes anzeigen sollte:
find-scanner: found scanner " Scanner 636A4 1.30" at device /dev/sg2 find-scanner: found scanner " Scanner 636A4 1.30" at device /dev/sgcAuch scanimage, mit der Option - -list-devices aufgerufen, zeigt die für SANE verfügbaren Scanner an.
xsane und xscanimage lassen sich auch als Plugin in Gimp (sowohl in den Anwenderversionen 1.0.x als auch in den Entwicklerversionen 1.1.x) einbinden. Dies hat den Vorteil, dass sich der Scan-Prozess direkt aus Gimps Xtns-Menü aufrufen lässt und eingescannte Bilder in Gimp sofort weiter bearbeitet werden können. Hierzu genügt ein Link in das Gimp-Plugin-Verzeichnis:
ln -s /usr/local/bin/xsane /usr/local/lib/gimp/1.1/plug-ins/xsaneSowohl xsane als auch xscanimage bieten etliche Optionen, um eine möglichst gute Qualität des Scans zu erreichen - von der Gamma-Korrektur bis zur Einstellung der Auflösung. xsane ist dabei üppiger ausgestattet und erlaubt einige Feineinstellungen mehr. Bei beiden Programmen legt man das zu scannende Bild möglichst gerade auf den Scanner und lädt zunächst eine `Preview´ - eine Voranzeige des zu scannenden Bildes.
Ein Histogramm zeigt die Häufigkeit der vorkommenden Tonwerte eines Bildes. Ein sehr helles Bild beispielsweise wird besonders hohe Spitzen bei den hellen Tonwerten zeigen. Anhand des Histogramms kann man beurteilen, wie gleichmäßig die Tonwerte erfasst wurden: Bei vielen Lücken fehlen viele Helligkeitsstufen im Bild.
Allerdings ist das, was der Bildschirm anzeigt, beileibe nicht unbedingt das, was tatsächlich gescannt - geschweige denn gedruckt - wird: Der Monitor hat seine eigenen Farbeinstellungen und Helligkeiten - ebenso wie ein Farbdrucker seine eigene `Vorstellung´ davon hat, was knallrot ist (schon allein, weil der mit einem anderen Farbmodell als der Scanner und Monitor arbeitet). Für professionelle Arbeitsplätze zur Bildbearbeitung muss man einen hohen Aufwand betreiben, um Scanner, Monitor und Drucker aufeinander zu kalibrieren; unter Linux hilft zur Zeit nur Ausprobieren (siehe Kasten `Farbmanagement´).
xsane und xscanimage können Bilder entweder als `RGB´ oder als `Greyscale´ scannen. RGB steht für farbige Bilder nach dem Farbmodell `Rot Grün Blau´. `Greyscale´ ist für Graustufenbilder, etwa Schwarzweiß-Fotos, gedacht. xsane unterstützt außerdem noch die Einstellung `Line Art´, die bei Strichzeichnungen wie Cartoons optimale Ergebnisse bringt.
Will man ein Bild eins zu eins in der Größe der Vorlage ausdrucken, wählt man eine Scanauflösung, die etwa das 1,6fache der geplanten Druckauflösung beträgt. Ein etwas älterer Laserdrucker beispielsweise druckt mit 300 dpi - als Scanauflösung wählt man etwa 480. Allerdings ist der Wert von 1,6 auch nur eine grobe Richtlinie für die ersten Versuche. Wer hier genauer nachlesen möchte, findet im Druckvorstufen-Kapitel des Gimp User Manual sowie in [13] nähere Informationen.
Möchte man die Vorlage (etwa eine Briefmarke) vergrößert ausdrucken, aber trotzdem ein sauberes Bild erhalten, muss man die Scan-Auflösung zusätzlich mit dem Vergrößerungsfaktor multiplizieren - wobei man dann schon schnell an die Grenzen der Auflösung üblicher Haushalts-Scanner (600 bis 1200 dpi) gelangt: Bei einem Ausdruck mit 300 dpi in doppelter Größe ist schon eine (optische!) Auflösung von 960 dpi erforderlich.
Zum korrekten Umrechnen eines neu angelegten Bildes in Gimp 1.0.x multipliziert man die Auflösung des Ausgabegeräts mit der gewünschten Größe des Bildes in Zoll (ein Zoll entspricht 2,54 Zentimeter) und erhält so die notwendige Größe des Bildes in Pixeln. Beim Speichern als PostScript-Datei oder im Druck-Dialog lässt sich das Bild entsprechend der gewünschten Druckgröße skalieren. Die Entwicklerversion Gimp 1.1.x erlaubt hier bereits die Auswahl unterschiedlicher Auflösungen - aber Vorsicht: Natürlich zeigt Gimp auch hier das Bild entsprechend der Monitorauflösung an!
Will man andere `Objekte´ scannen als Bilder, Fotos oder Zeichnungen, muss man mit der Auflösung etwas experimentieren: Flachbrett-Scanner sind dankbare Geräte für extravagante Experimente, etwa mit Stoffen, Früchten oder kleinen Gegenständen. So lassen sich beispielsweise interessante Hintergrundbilder für Webseiten erstellen. Dabei sollte man allerdings bedenken, dass Browser eine solche gescannte Textur sowieso nur in 72 dpi anzeigen und die Bilder so klein wie möglich gehalten werden sollten, um lange Ladezeiten zu vermeiden - also mit der Auflösung nicht übertreiben.
Nun sollte der weiteren Bearbeitung des Bildes nichts mehr im Wege stehen - Gimp bietet dazu alle Möglichkeiten. Um den Leistungsumfang des GNU Image Manipulation Program richtig auszunutzen, empfiehlt sich ein Blick in die hervorragende Online-Dokumentation - die inzwischen auch in deutscher Übersetzung als gedrucktes Buch und im Web erhältlich ist [15]. (odi)
[2] Gimp: http://www.gimp.org
[3] Scanner am Parallelport: http://www.buzzard.org.uk/jonathan/scanners.html
[4] Handheld-Scanner: http://www.angelfire.com/de/willamowius/scanner.html
[5] Scannerliste im Hardware-Howto: http://www.linuxdoc.org/HOWTO/Hardware-HOWTO-22.html
[6] SuSE-Hardware-Datenbank: http://cdb.suse.de/cdb/deutsch/
[7] USB unter Linux: http://www.linux-usb.org
[8] USB-Scanner: http://www.datacomm.ch/mcschlup/usb/scanner.html
[9] Georg Schnurer, ... dann klappt´s auch mit SCSI, c't 17/98, S. 184; c't 18/98, S. 192; c't 19/98, S. 264.
[10] xsane: http://www.wolfsburg.de/~rauch/sane/sane-xsane.html
[11] Jörn Loviscach, Volles Spektrum, Farben verlässlich scannen, anzeigen und drucken, c't 7/99, S. 122
[12] Kalibrierungsbilder: ftp://manual.gimp.org/pub/manual/
[13] Carsten Meyer, Hinter Glas, Scanner-Praxis: Was eigentlich im Handbuch stehen sollte, c't 7/99, S. 102
[14] ftp://ftp.nsysu.edu.tw/Unix/XFree86/3.3.3/untarred/xc/programs/xcmsdb/
[15] Karen und Olof Kylander, Gimp - Das offizielle Benutzerhandbuch, MITP-Verlag, 1999, http://www.mitp.de/grafik/0504/buch/buch0504.htm, ISBN: 3826605047
[16] Mike Hammel, The Artists´ Guide to The Gimp, Frank Kasper and Associates, 1998, ISBN 1578310113.
[17] `Scannen - Mit Desktop-Scannern zum perfekten Bild´, Helmut Kraus, Addison-Wesley, 1999
[18] `Photoshop WOW!´ Linnea Dayton, Jack Davis, auf deutsch oder englisch (je nach Auflage): Addison-Wesley 1998, 1999
`Unterhalb´ des SCSI-Kerns befindet sich der Lowlevel-Treiber für den SCSI-Adapter - auf Wunsch ebenfalls als Modul, das nur bei Bedarf geladen wird. Natürlich benötigt man einen passenden Treiber für die SCSI-Karte, an der der Scanner laufen soll - einzustellen unter dem Punkt `SCSI low level drivers´ der Kernelkonfiguration. Linux kommt auch ohne Problem mit zwei SCSI-Karten im Rechner klar, wenn man etwa für Scanner und Festplatten verschiedene Controller verwenden möchte.
Die dritte Komponente sind die Treiber für verschiedene SCSI-Geräteklassen wie CD-ROM, Festplatte oder Bandlaufwerk, die sich unter dem Punkt `SCSI support´ der Kernelkonfiguration finden. Zur Kommunikation mit `exotischen´ Geräten wie Scanner oder CD-Brenner dient das `generic SCSI device´, dessen Treiber man ebenfalls als Modul (sg.o) kompilieren und nur bei Bedarf laden kann.
Monitor und Scanner arbeiten mit RGB-Bildern, die sich additiv aus Rot-, Grün- und Blauwerten zusammensetzen. Sind alle drei Farbwerte maximal, entsteht Weiß. Drucker hingegen verwenden das (subtraktive) CMYK-Modell: Maximale Werte von Cyan, Magenta und Gelb ergeben in der Theorie schwarz - in der Praxis entsteht ein dunkles Braun, weswegen man als vierte Farbe Schwarz (K) hinzufügt. Unter MacOS beispielsweise ermöglichen die in das Betriebssystem integrierten Werkzeuge zum Farbmanagement die Speicherung einer kleinen Umrechnungsdatei, um die RGB-Bilder sauber in CMYK-Bilder für den Druck umrechnen zu können. Hier wie auch in der Windows-Welt findet man verschiedene Tools, um seinen Monitor optimal an Scan und Druck anzupassen - je realistischer der Monitor die Farben anzeigt, umso besser.
Bei der Arbeit mit Gimp unter Linux muss man sich anders behelfen. Auf den Webseiten des Gimp User Manual finden sich auch einige Dateien, mit denen man den Monitor anpassen kann [12]. Erfahrene Linuxer sollten sich intensiver mit `xcmsdb´ [14] beschäftigen - einer Farbkalibrierungsmöglichkeit für das X Window System. Ein kommerzielles Farbmanagement-System für Unix und Linux bietet www.mentalix.com.
Copyright 1999 by Verlag Heise Heise. Zweitveröffentlichung mit freundlicher Genehmigung der c't-Redaktion.