Scankey-Tool
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Die Installation des Brother Scankey-Tools ist optional und ermöglicht es, den Brother-Scanner mit der "Scanner"-Taste am Gerät zu steuern.
Voraussetzungen¶
Das Scankey-Tool benötigt einen Brother-Scanner bzw. -Multifunktionsgerät (MFC), einen installierten Scannertreiber und folgendes Paket
sane-utils (universe )
Befehl zum Installieren der Pakete:
sudo apt-get install sane-utils
Oder mit apturl installieren, Link: apt://sane-utils
Installation¶
Nach der Installation von sane-utils[1] kann ein DEB-Paket 64 Bit ⮷ oder 32 Bit ⮷ heruntergeladen und manuell installiert werden [2].
Hinweis!
Fremdpakete können das System gefährden.
Start¶
Das Scankey-Tool sollte alle angeschalteten Geräte automatisch erkennen. Zuerst wird das Terminal [3] gestartet, danach werden alle erkannten Geräte angezeigt:
brscan-skey # Hintergrundprogramm starten brscan-skey -l # Parameter "-l" zeigt alle gefundenen Geräte
Man sollte eine ähnliche Ausgabe wie diese hier bekommen:
BrotherNetzScanner : brother2:net1;dev0 : 192.168.178.30 Active BrotherUSBScanner : brother2:bus2;dev1 : USB Active
Sollte nichts angezeigt werden, kann es helfen, das Scantool mit dem Befehl brscan-skey -t
zu stoppen und dann erneut einen Suchlauf mit brscan-skey -l
anzustoßen.
Als Standard wird die erste Ethernet-Schnittstelle (´eth0´) genutzt. Wenn dies nicht die tatsächlich genutzte Schnittstelle ist, muss man die Konfigurationsdatei /usr/local/Brother/sane/brscan-skey-VERSION.cfg oder /opt/brother/scanner/brscan-skey/brscan-skey-VERSION.cfg mit Root-Rechten editieren [4][5]. Es muss eine Zeile ergänzt werden, in der die richtige Netzwerkschnittstelle angegeben werden muss. Beispiel:
eth=ath0
Nach Änderung und Neustart des Scankey-Tools arbeitet es wie gewünscht.
Automatischer Start¶
Es ist zwar nicht zwingend nötig, aber das Scankey-Tool kann beim Anmelden eines Benutzers automatisch gestartet werden [6]. Ansonsten muss das Programm vor jeder Verwendung manuell gestartet werden [7].
Verwendung¶
Nach einem Druck auf die "Scanner"-Taste am Gerät gibt es vier Wahlmöglichkeiten (mit Pfeiltasten auswählen, mit "Start" bestätigen):
In eine E-Mail scannen
Als Bild scannen (mit GIMP öffnen)
OCR-Scan
In eine Datei scannen (wird im Ordner ~/brscan im Homeverzeichnis gespeichert)
Zum E-Mail-Versand versucht Scankey den MTA sendmail
zu nutzen. Dieser ist in der Standard-Installation von Ubuntu nicht enthalten. Da sendmail relativ schwer zu konfigurieren ist, wird an dieser Stelle die Installation von Postfix empfohlen. Ist Postfix korrekt eingerichtet, müssen im Verzeichnis /usr/local/Brother/sane noch die Dateien brscan_mail.config und brscan_mailmassage.txt angepasst werden. Die nötigen Einstellungen sind selbsterklärend und beschränken sich auf "Absender", "Zieladresse", "Betreff", "Nachricht".
Scankey-Tool Optimierung¶
Nach der Installation empfiehlt es sich, die Datei /opt/brother/scanner/brscan-skey/script/scantofile-0.2.4-0.sh (oder auch /usr/local/Brother/sane/script/scantofile-0.2.1-3.sh) mit Root-Rechten wie folgt anzupassen:
Auflösung¶
resolution=100
durch
resolution=300
ersetzen, um eine angemessene Scan-Qualität (300 dpi) zu erhalten.
Dateiname¶
output_file=`mktemp ~/brscan/brscan.XXXXXX`
durch die zwei Zeilen
output_file=~/brscan/brscan_""`date +%F_%H-%M-%S` touch $output_file
ersetzen, um einen Dateinamen zu erhalten, der statt kryptischen Zufallszeichen das Datum und die Uhrzeit des Scan-Zeitpunkts enthält.
Dateiformat¶
Für diese Änderung(en) wird das Programm pnmtojpeg oder pnmtops verwendet, das Teil des Paketes netpbm ist. Also muss noch das folgende Paket installieren werden:
netpbm
Befehl zum Installieren der Pakete:
sudo apt-get install netpbm
Oder mit apturl installieren, Link: apt://netpbm
Dann die Zeile
scanimage --device-name "$device" --resolution $resolution> $output_file
durch die drei Zeilen
scanimage --device-name "$device" --resolution $resolution -l 0 -t 0 -x 210.00 -y 292.00 \ | pnmtojpeg --quality=90 > "$output_file".jpg rm $output_file
ersetzen, um als Resultat eine jpg-Datei in angemessener Qualität (90%) zu erhalten, anstelle einer Datei im platzraubenden Format PNM und mit zufälligem Dateinamen. Die obigen Parameter -l 0 -t 0 -x 210.00 -y 292.00
dienen einer geeigneteren Auswahl des Scanbereichs für das DIN-A4-Format (Testgerät: Brother MFC-7820N).
PDF-Format¶
Man kann auch die folgenden vier Zeilen verwenden:
scanimage --device-name "$device" --resolution $resolution -l 0 -t 0 -x 210.00 -y 295.00 \ | pnmtops -imagewidth 8.26 -nocenter | gs -q -dNOPAUSE -sDEVICE=pdfwrite \ -sOutputFile=- - > "$output_file".pdf rm $output_file
Dies erzeugt die Ausgabe in eine PDF-Datei statt in eine JPG-Datei. Die obigen Parameter -l 0 -t 0 -x 210.00 -y 295.00
und -imagewidth 8.26 -nocenter
dienen einer geeigneteren Bereichsauswahl für das DIN-A4-Format für optimales Ergebnis (Testgerät: Brother MFC-7820N).
Scan-Zielverzeichnis in Dateimanager automatisch öffnen¶
Um nach dem Scanvorgang gleich das Zielverzeichnis im Dateimanager zu öffnen, folgende Zeilen am Ende des Skriptes hinzufügen:
# Dateimanager mit Zielordner des Scans öffnen. Kann für verschiedene Dateimanager angepasst werden. # Reihenfolge im Beispiel: # 1. nautilus (Unity und GNOME 3) # 2. konqueror (KDE) # 3. dolphin (KDE) if [ "`which nautilus`" != '' ];then nautilus ~/brscan else if [ "`which konqueror`" != '' ];then konqueror ~/brscan else if [ "`which dolphin`" != '' ];then dolphin ~/brscan fi fi fi
Beispiel¶
Dies ist ein Beispiel der kompletten Skript-Datei scantofile-0.2.1-3.sh nach Umsetzung obiger Verbesserungen:
#! /bin/sh set +o noclobber # # $1 = scanner device # $2 = friendly name # # MJ: 100|150|200|300|400|600|1200|2400|4800|9600dpi [200] # MJ: Original was 100. E.g. for the MFC-7820N the maximum is 2400x600 (9600 with interpolation) # # MJ: Set output path and resolution as desired: # MJ: Original: #resolution=100 # MJ: Better: normal=300. HQ=600: resolution=300 output_path=~/brscan device=$1 mkdir -p $output_path if [ "`which usleep`" != '' ];then usleep 10000 else sleep 0.01 fi # MJ: Original: #output_file=`mktemp ~/brscan/brscan.XXXXXX` # MJ: Better: time stamp instead of random characters: See next two lines: output_file=$output_path""/brscan_""`date +%F_%H-%M-%S` touch $output_file chmod 644 $output_file echo "scan from $2($device) to $output_file" # MJ: Original: #scanimage --device-name "$device" --resolution $resolution> $output_file # MJ: Modified: #scanimage --device-name "$device" --resolution $resolution -l 0 -t 0 -x 210.00 -y 292.00 > $output_file # MJ: PNG: (requires installation of the packet "netpbm") #scanimage --device-name "$device" --resolution $resolution -l 0 -t 0 -x 210.00 -y 292.00 \ #| pnmtopng > "$output_file".png #rm $output_file # MJ: JPG: (requires installation of the packet "netpbm") scanimage --device-name "$device" --resolution $resolution -l 0 -t 0 -x 210.00 -y 292.00 \ | pnmtojpeg --quality=90 > "$output_file".jpg rm $output_file # MJ: PS: (requires installation of the packet "netpbm") #scanimage --device-name "$device" --resolution $resolution -l 0 -t 0 -x 210.00 -y 292.00 \ #| pnmtops -dpi $resolution -equalpixels > "$output_file".ps #rm $output_file # MJ: PDF: (requires installation of the packet "netpbm") #scanimage --device-name "$device" --resolution $resolution -l 0 -t 0 -x 210.00 -y 295.00 \ #| pnmtops -imagewidth 8.26 -nocenter | gs -q -dNOPAUSE -sDEVICE=pdfwrite \ #-sOutputFile=- - > "$output_file".pdf #rm $output_file # MJ: FINALLY: Open file manager showing the target directory of the scan: # Use a file browser that is available in the current Linux installation. # 1st choice: nautilus (gnome default file manager) # 2nd choice: konqueror (KDE default file manager) # 3rd choice: dolphin (KDE default simple file manager) if [ "`which nautilus`" != '' ];then nautilus $output_path else if [ "`which konqueror`" != '' ];then konqueror $output_path else if [ "`which dolphin`" != '' ];then dolphin $output_path fi fi fi
Tipp¶
Wenn man z.B. das Einscannen per Scan-Key direkt in eine Text-Datei (OCR) nicht benötigt, kann man diese Funktionen nach Belieben umdefinieren. Generell sind die vier Funktionen im Drucker-Display den folgenden Dateien in /opt/brother/scanner/brscan-skey/script/ wie folgt zugeordnet:
Brother Menü "Scannen: Datei" - scantofile-0.2.1-3.sh
Brother Menü "Scannen: Text" - scantoocr-0.2.1-3.sh
Brother Menü "Scannen: E-Mail" - scantoemail-0.2.1-3.sh
Brother Menü "Scannen: Bild" - scantoimage-0.2.1-3.sh
Beispielsweise kann man die Datei scantoocr-0.2.1-3.sh mit dem identischen Inhalt wie scantofile-0.2.1-3.sh versehen und lediglich diejenigen Parameter ändern, die man gerne als zweite Option noch am Drucker verfügbar hätte (z.B. als Ziel eine PDF- statt einer JPG-Datei, siehe oben).
Links¶
Anleitung 🇬🇧
Brother/Scanner - Hauptartikel