Scannen unter Linux #

Allgemeines gibts auch auf der Seite LinuxScanner. Diese Seite enthält meine Erfahrung bei der Installation meines Parallelport-Scanners unter Linux.

Zum Scannen unter Linux gibt es ein Programmpaket namens SANE (Scanner Access Now Easy). Dieses ist ausgereift und bietet alle benötigten Programme. Normalerweise ist es so einfach zu bedienen, daß dieser Text gar nciht nötig wäre, wenn...

...ja, wenn SANE sich nicht fast ausschließlich auf SCSI-Scanner festlegen würde. SANE arbeitet mit sogenannten "Backend-Modulen". Diese Backends stellen die Treiber für das jeweilige Scanner-Modell dar. Um auf den Scanner zuzugreifen, benutzen jedoch viele der Backends ausschließlich den SCSI-Bus. Auch für USB-Scanner gibt es Backends (mit denen ich jedoch keine Erfahrung habe). Parallel-Scanner sind jedoch schwieriger zum laufen zu bekommen.

Es gibt zwei Sorten von Scannern am Parallel-Port: Die einen benutzen ein besonderes, proprietäres Protokoll. Für diese muss ein besonderer Treiber geschrieben worden sein. Andere Modelle sind identisch zu einem SCSI-Scanner. Diese haben lediglich eine Schnittstelle eingebaut, die die SCSI-Daten auf die Parallel-Schnittstelle umsetzt. Um mit diesen zu kommunizieren, benötigt man einen "Rück-Umsetzer".

Um erstmal grundsätzlich herauszufinden, ob man eine Chance hat, sollte man in die unten in den Links angegebenen Seiten schauen. Dort findet man erste Hinweise, ob sein Scanner funktioniert. Hat man einen Scanner einer Handelsmarke (wie ich), so kann es sinnvoll sein, das Gerät erstmal unter Windows zu installieren und dort in der Geräte-Verwaltung nachzusehen, unter welchem Namen das Ding eingetragen ist.

Bei meinem Highscreen SuperBoostar BASIC handelt es sich z.B. nach dem Windows-Test um einen Microtek ScanMaker V300. Dieser steht in der Liste der am Parallelport unterstützten Scanner.

Debian-Verträglichkeit #

Update: Bei einer Neuinstallation Anfang 2003 tat es das DEbian-sane-Paket ohne Probleme. Dafür gibts seit einiger Zeit Probleme, pppscsi in neuere Kernel zu patchen. Die Probleme sind trivial und von Hand zu beseitigen, dennoch scheint der Treiber nicht mehr unterstützt und auch nicht viel benutzt zu werden. Für mich war das mit ein Grund, mich nach einem UsbScanner umzusehen.

Bis der Scanner lief, war ich zweimal gezwungen, Pakete neu zu kompilieren (Kernel und SANE-Treiber). Selbsterstellte und installierte Pakete geben naturgemäß immer Ärger mit dem Paketmanager des Betriebssystems. DPKG (oder RPM bei anderen Distributionen) kann ja gar nicht wissen, was ich von Hand installiert habe. Deshalb versuche ich hier, alle Schritte Debian-konform abzuwickeln. Das heisst, daß ich von allen Sachen Paket-Dateien erstelle, die dann mit dpkg verwaltet werden können.

Das macht es zwar auf den ersten Blick etwas komplizierter, ist aber viel einfacher zu handeln, wenn man später mal das Betriebssystem oder Teile davon upgradet oder wenn man die Programme auf anderen Rechnern installieren will.

Stand der Dinge #

Ich habe das hier im Dezember 2001 auf einem Debian-Woody-System mit Kernel 2.4.16 gemacht. Mein SANE-Paket hat die Versionsnummer 1.0.6-0.1.

Vorgehensweise #

Als erstes muss das ppscsi-Modul in den Kernel kompiliert werden, damit SCSI-Geräte am Parallelport vom Kernel als SCSI-Geräte erkannt werden. Dann wird SANE installiert. In meinem Falle muss dann der SANE-Treiber noch verändert werden und das SANE-Paket neu installiert werden, da der mikrotek2-Treiber in der neuesten Version nötig ist. Dann kann losgescannt werden.

ppscsi (Kernel patchen) #

Aus der Übersichtsseite für Parallelportscanner (siehe unten Kapitel "Links") geht hervor, dass mein Scanner den Treiber für das "OnSpec 90C26"-Interface benötigt. Hierbei handelt es sich um zwei Kernel-Module.

Leider ist ppscsi aus Gründen, die ich nicht kenne, nicht Teil des regulären Kernels. Also muss man diesen erst patchen.

Zuerst benötigt man einen Kernel-Source-Baum. Entweder besorgt man sich mit apt-get die Debian-Sourcen oder man holt sich (wie ich) einen aktuellen Kernel von www.kernel.org. Hat man noch nie einen Kernel gebaut, sollte man erstmal die diversen HOWTOs hierzu durchgehen. (Das ist nicht Teil dieses Textes. Als Startpunkt für die ".config"-Datei kann man unter Debian übrigens die .config des laufenden Kernels in /boot finden.)

Nun installiert man das Debian-Paket kernel-patch-ppscsi-2.4 mit apt-get. Man geht nun in das Kernel-Sourcen-Hauptverzeichnis und ruft /usr/src/kernel-patches/all/apply/linux-ppscsi-2_4_10' auf. Danach ist der Kernel gepatcht. Nun ruft man make menuconfig auf. Im Bereich SCSI-Support, Unterbereich SCSI Low Level Drivers, findet sich nun ein Eintrag Parallel Port SCSI Adapters. Den wählt man aus. Darunter erscheinen dann die spezifischen Module für verschiedene Scanner. In meinem Falle also der OnSpec-Treiber. Diesen wähle ich auch als Modul aus.

Danach verlässt man die Konfiguration und erzeugt mit make-kpkg kernel-image eine neues Kernel-Paket. (Das dauert eine Weile)

Dieses Paket steht danach im Mutterverzeichnis der Kernel-Sourcen und kann mit dpkg -i kernel-image-.....dpkg installiert werden. Sollte dadurch z.B. ein 2.4.16-Kernel durch einen nueen 2.4.16-Kernel ersetzt werden, wird dpkg vor der Ersetzung warnen. Man kann sie aber trotzdem vornehmen, wenn man danach sofort lilo aufruft (da fragt dpkg auch nach) und dann sofort neu bootet. Es ist vielleicht eine gute Idee, einen anderen, alternativen Kernel in /det/lilo.conf einzutragen oder eine (getestete) Bootdisk in der Nähe zu haben.

Danach hat man einen ppscsi-fähigen Kernel. Hat man ppscsi nur als Modul eingebunden, kann man mit modconf Debian beibringen, dass das Modul immer beim hochfahren geladen wird. Dazu sollte man das onspec-Modul (oder den entsprechenden Treiber für seinen Scanner) auswählen. Das (übergeordnete) ppscsi-Modul wird dann automatisch mitgeladen.

Das einzige Programm, das ich kenne, das einen Überblick übr den kompletten SCSI-Bus ausgibt, ist übrigens cdrecord -scanbus. Dort muss der Scanner jetzt stehen. Aber auch scanimage -L aus dem SANE-Paket sollte den Scanner anzeigen.

SANE installieren #

Eigentlich braucht man nur das Debian-Paket sane zu installieren. Danach steht das Kommandozeilen-Programm scanimage zur Verfügung, das das grundlegendste Programm zum scannen ist.

Wer will, kann auch noch das xsane-Paket installieren. Es enthält ein graphisches Frontend. Andere graphische Frontends gibt natürlich auch noch.

SANE modifizieren und neu installieren #

Leider lief SANE bei mir so nicht. :-( Also habe ich versucht, den Scannertreiber auszutauschen und siehe da: Es lief! :-) Um das Debian-konform hinzubekommen habe ich folgendes gemacht:

Als erstes müssen alle SANE-Pakete deinstalliert werden. Dies geht mit dpkg -r libsane.

In der manpage des microtek2-Treibers habe ich die Homepage entdeckt (siehe unten). Dort gab es eine aktuelle Version des Treibers. Das dortige Paket bestand aus den beiden Dateien microtek2.c und microtek2.h. Diese musste ich nun in SANE einbauen. Dazu habe ich mit dpkg source libsane die Sourcen von SANE in mein aktuelles Verzeichnis geholt. (Es muss natürlich in /etc/apt/sources.list ein Pfad zu Source-Paketen stehen.) In diesen Sourcen, im backend-Verzeichnis, habe ich die beiden microtek2-Dateien ausgetauscht. Dann bin ich ins Haputverzeichnis der SANE-Sourcen gegangen und habe dpkg-buildpackage aufgerufen. Danach bin ich wieder in das übergeordnete Verzeichnis gegangen. Dort sind zwei neue Pakete "libsane" und "libsane-dev" erzeugt worden. Diese habe ich dann mit dpkg -i libsane... installiert. Fertig!

Das von mir erzeugte Paket hat jetzt natürlich die gleiche Versionsnummer wie das originale (vom Debian-Maintainer). Wie man diesen Konflikt löst, weiss ich nicht. Hätte ich die Nummer um eins erhöht, tritt der Konflikt beim nächsten update auf. Ich habe mich fürs nicht-erhöhen entschieden. Dann wird mein Paket beim nächsten upgrade durch das Original-Paket ersetzt. Falls der Fehler darin entfernt ist, ist das ja auch das beste. Falls nicht, muss ich mir dann ein neues eigenes Paket erstellen.

Scannen #

Gewonnen hat man, wenn ein Aufruf von "scanimage -L" eine Ausgabe ergibt, in der der angeschlossene Scanner angezeigt wird. Mit "scanimage >bla.pnm" kann man nun eine Seite scannen. Weitere Optionen gibts unter "man scanimage" oder "man sane" und weiteren manpages, die fast alle mit "sane-" anfangen (z.B. sane-microtek2 für meinen Scannertreiber).

scanimage ist ein gutes Programm, um von der Kommandozeile oder aus Programmen oder Skripten heraus zu scannen. xsane ist das richtige, wenn man eine schöne GUI haben möchte. Es braucht sich zumindest nicht hinter dem bei meinem Scanner mitgelieferten Windows-Programm zu verstecken.

Besonderheiten #

Irgendwo stand, das es zu Problemen kommen könnte, wenn das ppscsi-Modul gleichzeitig mit ide-scsi im Speicher ist. Letzteres wird IMHO nur benutzt, um auf CD-Writer zuzugreifen. Da ich ebendies tue, habe ich hier beide Module parallel im Kernel. Bisher ist mir jedoch noch keine negative Auswirkung aufgefallen. Ich denke, die Warnung bezog sich auf ältere Versionen der Module.

Während des Scannens friert der Rechner ein, d.h. die Maus kann nicht mehr bewegt werden etc. Wenn das stört, der kann die ppscsi-Treiber anweisen, sich weniger Rechenzeit einzusacken, indem dem eigentlichen Gerätemodul (onscsi in meinem Fall) ein nice-Wert übergeben wird. Dies wird beim laden des Modules angegeben bzw. gehört in die Datei /etc/modules.conf. Unter Debian sollte man diese nicht selber ändern sondern folgendes eingeben:

  echo "options onscsi host0=0,1,1,2,16" >/etc/modutils/onscsi
  update-modules

Bisher habe ich mit dieser Einstellung keine Probleme gehabt. Ich denke, daß auf langsamen Rechnern oder unter hoher Last Daten verschwinden können, wenn man nicht aufpasst. Eventuell ist es daher sinnvoll, mit folgenden Zeilen den Parallelport für den ECP-Modus freizugeben:

  echo "options parport_pc io=0x378 irq=7 dma=3" >/etc/modutils/parport
  update-modules

Dazu müssen allerdings im Kernel die erweiterten Parallelport-Modi freigegeben sein. Außerdem wird so der IRQ 7 belegt, den man je nach Ausstattung vielleicht für etwas anderes braucht. Auf meinem Rechner (AMD Duron mit 700 MHz) hatte ich wie gesagt auch ohne ECP bisher keine Probleme.

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-2) was last changed on 13-Nov-2006 20:09 by MarkusMonderkamp