Scanner autark betreiben – keine Windows Treiber mehr notwendig

Ist ihr Scanner zu alt?

Kein Windows Treiber mehr verfügbar?

Funktioniert mit der neuen Software etwas nicht mehr wie es soll?

Kein Problem! Mit dieser Lösung können sie fast jeden Scanner verwenden.

Was Sie dazu benötigen und wie sie diesen einrichten, erkläre ich in diesem Artikel.

Um was geht es hier genau?

Immer wieder werde ich mit Scannern konfrontiert, welche “noch gut” sind, jedoch nicht mehr mit der Software, den Treibern, oder dem Betriebssystem so funktionieren, wie es notwendig wäre.

In diesem Artikel zeige ich eine Lösung wie Sie mit einem Raspberry PI, einem ähnlichen Gerät oder einem alten PC auf Linux Basis Ihren Scanner in Betrieb nehmen können.

Was kann die Lösung?

Nach dem Aufbau des Linux Betriebssystems können Sie

  • Fast jeden Scanner vollständig nutzen
    • Automatischen Einzug nutzen
    • Einseitig und Duplex Scan
  • Alle Tasten des Scanners Individuell nach Ihren wünschen konfigurieren
  • Kein zusätzliches tippen & klicken auf Bildschirmen und in Dialogen
  • Autarker Computer für
    • PDFs scannen,
    • diese via E-Mail verschicken,
    • die Scans auf lokale oder entfernte Speichermedien und USB-Sticks speichern etc.

Und wenn Ihre Scanner Software das alles vorher nicht konnte, können Sie dies mit der Lösung dennoch erreichen.

Was wird benötigt?

Einen RaspberryPI* oder vergleichbaren mini Computer*. Alternativ einen älteren oder gebrauchten Computer.

Geringe Linux Kenntnisse und einen Internetzugang für Download der Software.

Was erreichen Sie durch diese Lösung?

Sie sparen Zeit, dadurch das Sie die Lösung nur einmal einrichten müssen und Sie danach autark funktioniert. Sie konfiguriert sich auch nicht neu (stellt sich um) durch Windows oder sonstige Software Updates.

Sie sparen Geld, dadurch das keine Neuanschaffung eines Scanners notwendig ist.

Sie gewinnen eine Unabhängigkeit des Scanners vom verwendeten Computersystem.

Wie funktioniert die Lösung?

  1. Der Scanner wird mittels USB-Anschluss mit dem RaspberryPI verbunden
  2. Der Sane Scanner Daemon stellt die Schnittstelle zwischen Scanner und
    1. Ihrem Computer als “Netzwerkscanner” oder
    2. Dem lokalen Raspberry bereit
  3. Der InSane Daemon setzt die Sensor & Tastenaktionen skriptbasiert für Sie um.

Dann starten wir einfach durch.

Hinweis: Der Artikel ist eine Kurzform einer Dokumentation und muss sicherlich für Sie an der einen oder anderen Stelle individuell angepasst werden. Wenn Sie eine Hilfestellung benötigen, fragen Sie gerne jederzeit bei mir nach.

Bereitstellung Linux System mit USB Anschluss

In diesem Szenario verwende ich Ubuntu auf einem RaspberryPI B Computer und verbinde diesen via WLAN. Er ist nicht sehr schnell, zeigt jedoch das generelle Prinzip.

Je mehr Sie scannen, desto zielführender ist ein stärkeres System.

Ein Mini Computer wie nachfolgende, funktioniert als Bildschirmlose Lösung.

Eine Installationsanleitung für einen Raspberry PI finden Sie hier.

Die Installation eines Ubuntus mittels ISO Datei finden Sie hier.

Nach der Installation sollte zunächst ein Update durchgeführt werden

rpi-update

apt-get update 

apt-get upgrade

Wahlweise noch die Netzwerkeinstellungen und WLAN anpassen. Hierzu die Dateien

Die Dateien /etc/network/interfaces und /etc/wpa_supplicant/wpa_supplicant.conf bleiben wie im Auslieferungszustand, stattdessen wird /etc/dhcpcd.conf angepasst wie folgt (hier beispielhaft):

    interface eth0

static ip_address=192.168.178.71
    static routers=192.168.178.111
    static domain_name_servers=192.168.178.111

interface wlan0

static ip_address=192.168.2.125
    static routers=192.168.2.1
    static domain_name_servers=192.168.2.1

Scanner testen mit LSUSB

Für den ersten Test wird der Scanner initial angesteckt und gestartet der Befehl LSUSB zeigt uns eine Übersicht aller USB Geräte.

LSUSB -> Bus 001 Device 004: ID 04c5:114f Fujitsu, Ltd fi-6130

Hier erhalten wir auch die notwendigen Daten für die nächsten Schritte.

Ihr Scanner aufgeführt, so können Sie fortfahren.

Scanner in Betrieb nehmen

SANE Daemon für Scanfuktionen Installieren.

apt-get install sane cifs-utils psutils imagemagick

In /etc/sane.d/dll.conf alle Scannertreiber bis auf net und in obigem Beispiel fujitsu auskommentieren, da sonst evtl. Broadcast-Socket-Fehlermeldungen entstehen

sane-Server als root starten mit saned -a oder Eintrag in /etc/default/saned RUN=yes und RUN_AS_USER=root

Nutzer in Gruppe scanner aufnehmen mit usermod -a -G scanner <user>

vi /etc/sane.d/saned.conf eigenes Subnetz eintragen

SUBSYSTEM==”usb”, ATTRS{idVendor}==”04c5″, ATTRS{idProduct}==”114f”, GROUP=”saned”

sane-find-scanner -q

scanimage -L

Scanner testen

scanimage > test.jpg –format jpeg –resolution=300 -p

Wenn Datei lesbar -> dann alles gut (auch wenn zu kurz/zu breit etc).

Das passen wir alles später an.

SaneD als NetzwerkScanner einrichten

vi /etc/systemd/system/saned.socket

[Unit] Description=saned incoming socket [Socket] ListenStream=6566 Accept=yes MaxConnections=1 [Install] WantedBy=sockets.target

vi /etc/systemd/system/@saned.service

[Unit] Description=Scanner Service Requires=saned.socket [Service] ExecStart=/usr/local/sbin/saned User=saned Group=saned StandardInput=null StandardOutput=syslog StandardError=syslog Environment=SANE_CONFIG_DIR=/etc/sane.d

systemctl enable saned.socket

systemctl start saned.socket

Danach kann ich über SANE über das Netzwerk gescanet werden

Entsprechende Client Anwendungen finden Sie hier

http://www.sane-project.org/sane-frontends.html

Ich persönlich verwende zum Test diesen

https://sanetwain.ozuzo.net/#download

Automatisieren und Mehrseitige TIFF Dateien erstellen

scanimage –format tiff –batch=$(date +%Y%m%d_%H%M%S)_p%04d.tiff –resolution 300 –mode ‘color’ –source ‘ADF Duplex’ –page-height 297 -l 0 -t 0 -x 210 -y 297

Macht was es soll – generiert aber kein Multipage TIFF, sondern nur einzelne TIFFS

RaspberryPI – Übersicht gescannte Dateien

Danach die Scans zum PDF Dokumenten umwandeln

root@raspberrypi:~# convert *.tiff yourDocumentName.pdf

Wir möchten jedoch für unser Projekt Multipage TIFF Dateien

scanimage –format jpeg –batch=$(date +%Y%m%d_%H%M%S)_p%04d.jpeg –resolution 300 –mode ‘color’ –source ‘ADF Duplex’ –page-height 297 -l 0 -t 0 -x 210 -y 297

convert *.jpeg -adjoin $(date +%Y%m%d_%H%M%S).tiff

rm *.jpeg

Das daraus resultierende Dokument hat mehrere Seiten und kann weiterverwendet werden.

Scanner Tasten “zum Leben erwecken” mit INSANED

apt-get install libsane-dev

root@raspberrypi:/var/lib# mkdir insaned

root@raspberrypi:/var/lib# cd insaned/

root@raspberrypi:/var/lib/insaned# wget https://github.com/abusenius/insaned/releases/download/v0.0.3/insaned-0.0.3.tar.bz2

root@raspberrypi:/var/lib/insaned# tar xvjf insaned-0.0.3.tar.bz2

root@raspberrypi:/var/lib/insaned# cd insaned-0.0.3/

root@raspberrypi:/var/lib/insaned/insaned-0.0.3# make

Mehr details erhalten Sie unter

https://github.com/abusenius/insaned

https://wiki.ubuntuusers.de/insaned/

Damit der Scan auf Tastendruck funktioniert müssen wir den Event für SCAN modifizieren

Testen

Ausführen in der Console:

root@raspberrypi:/var/lib/insaned/insaned-0.0.3# ./insaned --dont-fork --events-dir=$PWD/events --log-file=$PWD/log.log -v
insaned: Fetching device list...
insaned: Starting polling sensors of fujitsu:fi-6130dj:80432 every 500 ms
insaned: Processing event 'page-loaded'
insaned: Processing event 'page-loaded'
insaned: Processing event 'page-loaded'
insaned: Processing event 'scan'
scanimage: rounded value of page-height from 297 to 296.994
scanimage: rounded value of br-x from 210 to 210.01
scanimage: rounded value of br-y from 297 to 296.994
Scanning infinity pages, incrementing by 1, numbering from 1
Scanning page 1
Scanned page 1. (scanner status = 5)
Scanning page 2
Scanned page 2. (scanner status = 5)
Scanning page 3
Scanned page 3. (scanner status = 5)
Scanning page 4
Scanned page 4. (scanner status = 5)
Scanning page 5
Scanned page 5. (scanner status = 5)
Scanning page 6
Scanned page 6. (scanner status = 5)
Scanning page 7
scanimage: sane_start: Document feeder out of documents
Batch terminated, 6 pages scanned
..converting
..finished job

Ab jetzt kann gescannt werden und alle Dateien liegen lokal.

Diese können nach Abschluss des Scans verschoben und weiterverarbeitet werden.

Hochladen der Dateien in ein entferntes Verzeichnis

In diesem Projekt wollen wir die Dateien vom Raspberry PI auf ein entferntes Verzeichnis verschieben.

Hierzu nutzen wir Rclone (https://rclone.org/) und nutzen die Vorteile, dass dieses Tool zahlreiche Cloud Zugriffe auf der Kommandozeile unterstützt.

root@raspberrypi:/var/lib# mkdir rclone

root@raspberrypi:/var/lib# cd r

-bash: cd: r: Datei oder Verzeichnis nicht gefunden

root@raspberrypi:/var/lib# cd rclone/

root@raspberrypi:/var/lib/rclone# wget https://downloads.rclone.org/rclone-current-linux-arm.zip

–2023-07-05 20:13:42–  https://downloads.rclone.org/rclone-current-linux-arm.zip

Auflösen des Hostnamens downloads.rclone.org (downloads.rclone.org)… 95.217.6.16, 2a01:4f9:c012:7154::1

Verbindungsaufbau zu downloads.rclone.org (downloads.rclone.org)|95.217.6.16|:443 … verbunden.

HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK

Länge: 17177063 (16M) [application/zip]

Wird in »rclone-current-linux-arm.zip« gespeichert.

rclone-current-linux-arm.zip         100%[======================================================================>]  16,38M  1,94MB/s    in 11s

2023-07-05 20:13:53 (1,56 MB/s) – »rclone-current-linux-arm.zip« gespeichert [17177063/17177063]

apt install unzip

unzip -j -d rclone-temp rclone-current-linux-arm.zip

rclone lsd privatecloud

Test

rclone copy /home/<DeinLokalesVerzeichnisDerWahl> privatecloud:<MeinRemoteVerzeichnisDerWahl>

UDEV Daemon für Anstecken, Abstecken und Schlafmodus des Scanners nutzen

Damit erhöhen wir die Fehlertoleranz der Lösung. Das ist notwendig wenn der Scanner eine Sleep Funktion hat oder dieser über einen USB Hub verbunden ist.

UDEV daemon für Ab- und Anstecken des Scanners aktivieren

#
# Example /usr/local/etc/devd/insaned.conf file
#
# Use this file to automatically start and stop insaned if your scanner turns off and insaned is
# continuously prints error messages.
#
# Adjust the following bits and copy to /usr/local/etc/devd/insaned.conf:
# * path to insaned executable
# * scanner vendor
# * scanner product (use lsusb or similar to get the values)
# * (optionally) username, group and device file permissions to restrict access
#

notify 1 {
    match “subsystem” “DEVICE”;
    match “type” “ATTACH”;
    match “cdev” “ugen[0-9]+.[0-9]+”;

# TODO adjust vendor and product here
    match “vendor” “0x04c5”;
    match “product” “0x11a2”;

# TODO adjust username, group and permissions here
    action “chown -L cups:saned /dev/$cdev && chmod -L 660 /dev/$cdev”;
    # TODO adjust path to insaned here
    action “/usr/local/bin/insaned -e /usr/local/etc/insaned/”;
};

notify 1 {
    match “subsystem” “DEVICE”;
    match “type” “DETACH”;

# TODO adjust vendor and product here
    match “vendor” “0x04c5”;
    match “product” “0x11a2”;

# TODO adjust path to insaned here
    action “/usr/bin/killall -9 insaned”;
};

fujitsu:fi-6130dj:80432

vi /lib/udev/rules.d/80-Log_USB.rules

udevadm  monitor

KERNEL[507.754898] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)

KERNEL[507.756365] unbind   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

KERNEL[507.772189] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

UDEV  [509.480661] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)

UDEV  [509.579051] unbind   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

UDEV  [509.620445] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

KERNEL[516.626798] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

KERNEL[516.634640] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)

KERNEL[516.639882] bind     /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

UDEV  [516.838196] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

UDEV  [516.966166] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)

UDEV  [517.146883] bind     /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)

ATTRS{idVendor}==”046d”, ATTRS{idProduct}==”c519″, ACTION==”add”, RUN+=”/bin/su <BENUTZERNAME> -c ‘DISPLAY=:0 /usr/bin/numlockx on'”
ENV{ID_VENDOR_ID}==”046d”, ENV{ID_MODEL_ID}==”c519″, ACTION==”remove”, RUN+=”/bin/su <BENUZTERNAME> -c ‘DISPLAY=:0 /usr/bin/numlockx off'”

Lsusb

Bus 001 Device 006: ID 04c5:114f Fujitsu, Ltd fi-6130

lsusb -vs  001:006

root@raspberrypi:~# lsusb -vs 001:006

PROGRAM=”/usr/bin/killall -9 insaned”

udevadm info –query=all –attribute-walk –name=/dev/bus/usb/001/006

root@raspberrypi:~# udevadm info –query=all –attribute-walk –name=/dev/bus/usb/001/006

vi /lib/udev/rules.d/80-Log_USB.rules

SUBSYSTEMS==”usb”, ATTRS{idVendor}==”04c5″, ATTRS{idProduct}==”114f”, ACTION==”remove”, RUN+=”/usr/bin/killall -9 insaned”

SUBSYSTEMS==”usb”, ATTRS{idVendor}==”04c5″, ATTRS{idProduct}==”114f”, ACTION==”bind”, RUN+=”/usr/bin/killall -9 insaned”

Anpassung Scan & Testen

  • Insaned als Service Starten

Cp /var/lib/insaned/insaned-0.0.3/systemd/insaned.service /lib/systemd/system/

vi /lib/systemd/system/insaned.service

#EnvironmentFile=/etc/default/insaned

EnvironmentFile=/var/lib/insaned/insaned-0.0.3

User=root

Group=root

Nice=0

#ExecStart=/usr/bin/insaned -p /var/run/insaned/insaned.pid ${INSANED_EXTRAOPTS}

ExecStart=/var/lib/insaned/insaned-0.0.3/insaned -p /var/run/insaned/insaned.pid –events-dir=/var/lib/insaned/insaned-0.0.3/events –log-file=/var/lib/insaned/insaned-0.0.3/log.log ${INSANED_EXTRAOPTS}

systemctl daemon-reload
systemctl enable insaned.service
systemctl start insaned.service


systemctl status insaned.service

ln -s /var/lib/insaned/insaned-0.0.3 /etc/insaned

journalctl -f -u insaned.service

mkdir -p /etc/insaned/events/

cp /var/lib/insaned/insaned-0.0.3/events/* /etc/insaned/events/

vi /etc/default/insaned

Danach Funktioniert der Scanner autark und kann zum Scannen verwendet werden.

Für den Dauerbetrieb vorbereiten & Optimieren

Image der SD Karte erstellen

dd if=/dev/mmcblk0 of=/media/greg/SanDisk256/sd_card_backup.img bs=4M status=progress

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh

sudo chmod +x pishrink.sh

sudo mv pishrink.sh /usr/local/bin

pishrink.sh -z /media/greg/SanDisk256/sd_card_backup.img

Weitere Details können im Artikel von Fabian Steppat unter https://nerdiy.de/de_de/howto-raspberry-pi-system-sd-karte-als-image-sichern/ nachgelesen werden.

Optimierungsmaßnahmen der Rclone Sync

Der Sync sollte im Hintergrund laufen. Teilweise kommt es jedoch zu Abbrüchen und Fehlern. Diese können über die Parameter –low-level-retries und –retries reduziert werden.

–low-level-retries means that rclone tries each API call that many times before giving up.

–retries retries the whole sync that many times before giving up.

Details hierzu werden in einem Forum Artikel unter https://forum.rclone.org/t/how-best-to-use-retries-and-low-level-retries/20193 besprochen.

Overclocking des Raspberry PI

Wie jeder PC, kann auch der RPI etwas schneller gemacht werden. Details können hier nachgelesen werden.

Konvertierung mit niedriger Priorität starten

Der Festplattenzugriff auf dem RPI ist das Problem. Dadurch verzögern sich viele nachfolgende Prozesse und der RPI reagiert während dieser Zeit nicht. Dies kann in ImageMagic durch die nachfolgende Anpassung optimiert werden:

-limit memory 2mb -limit map 2mb -limit disk 2gb

Display mit HDMI Anschluss zur Anpassung der Scaneinstellungen

Dieser Punkt ist noch in Bearbeitung und wird bei Bedarf fertiggestellt. Kann jedoch ähnlich wie in der Lösung von Dr. Breinlinger unter https://www.drbreinlinger.de/Scanserver3/Scanserver3.htm realisiert werden.

Sein ScanGUI Script kann unter https://www.drbreinlinger.de/Downloads/ heruntergeladen werden.

Wirklich empfehlenswert.


Sollten Sie noch Fragen, Änderungs- oder Anpassungswünsche haben, zögern Sie nicht mich zu kontaktieren. Ich antworte in der Regel innerhalb von 24 Stunden.

Die mit * gekennzeichneten Internetlinks, sind Affiliate Links. Das benannte Produkt wird für Sie dadurch nicht teurer. Sie ermöglichen mir damit den Aufwand für das Zusammenstellen und -schreiben der Artikel, ein klein wenig zu refinanzieren. Dankeschön vorab für die Nutzung dieser Links.


Über den Autor

Gregor Tomitzek – IT Berater, Trainer und Mentor

Seit über 25 Jahren berate ich Firmen und private Personen in allen Belangen der Computertechnik. Als Leiter eines Infrastrukturteams bringe ich die technischen Anforderungen der Kunden zu Lösungen, und ermögliche dadurch ein besseres und schnelleres Arbeiten.

Durch meine langjährige Erfahrung, die Ausbildungen und der Nähe zu allen Unternehmensprozessen, unterstütze ich Leistungsträger, Teamleiter und Vorstände dabei, die Überlastung in IT-Abteilung zu senken und zugleich die Leistungsfähigkeit und Zufriedenheit von IT-Teams wahrnehmbar zu steigern.


Änderungshistorie

Erstellt: 2023-12-31Zuletzt geändert: 2023-12-31
Änderungshistorie: –
2023-12-31: Basis – Layout + Text


2 Gedanken zu „Scanner autark betreiben – keine Windows Treiber mehr notwendig

  1. Sehr geehrter Herr,
    ich habe einen Flachbettscanner PRIMAX COLORADO USB 19200.
    Wo kann ich festszellen ob dieser Scanner für Ihre Methode in Frage kommt.

    1. Guten Morgen Detlef,

      gute Frage. Ich würde hier über die Herangehensweise mit LSUSB versuchen zu prüfen, ob dieser Scanner grundsätzlich beim einstecken erkannt wird. Laut dem Saned Forum gibt es aber auch Meldungen, das es immer wieder mit diesem Modell an Scanner Probleme gibt. Ich kann Sie alle nicht direkt nachvollziehen da ich selbst diesen Scanner nicht vor Ort zum testen habe. Aber es liest sich so, als würde dieser einen speziellen Kerneltreiber/Patch benötigt um als Scanner zunächst im Linuxsystem erkannt zu werden.

      Mein Bauchgefühl sagt mir da – lieber auf Kleinanzeigen ein etwas neueres Modell für günstiges Geld holen und mit diesem dann durchstarten. Spart sicherlich Zeit.
      Gerne können wir es aber einmal gemeinsam in einer Remote Session prüfen was genau beim Einstecken im Kernel passiert. Buche dir gerne einen Termin über meinen Kalender unter https://tomitzek.net/termin-buchen/ und dann können wir das gemeinsam herausfinden.

      Lieben Gruß,
      Gregor

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

1 × vier =