(no commit message)
authorstephan48 <stephan48@web>
Thu, 11 Nov 2021 21:39:51 +0000 (22:39 +0100)
committerIkiWiki <ikiwiki.info>
Thu, 11 Nov 2021 21:39:51 +0000 (22:39 +0100)
posts/2021-11-11-scan-pi.mdwn [new file with mode: 0644]

diff --git a/posts/2021-11-11-scan-pi.mdwn b/posts/2021-11-11-scan-pi.mdwn
new file mode 100644 (file)
index 0000000..d2f821f
--- /dev/null
@@ -0,0 +1,130 @@
+Install packages:
+
+$ apt install sane scanbd netpbm ghostscript poppler-utils imagemagick unpaper util-linux tesseract-ocr parallel units bc tesseract-ocr-deu ocrmypdf libtiff-tools
+
+Add to the end of /etc/scanbd/fujitsu.conf:
+<code>
+#ix1400
+usb 0x04c5 0x1630
+</code>
+
+
+In /etc/scanbd/dll.conf comment out everything except "fujitsu".conf
+<code>
+:0,%s/^/#/
+:0,%s/^#fujitsu/fujitsu/
+</code>
+
+Raspberry PI throws kernel OOPS around otherwhise due to scanbd trying to access devices the PI does not have(i assume a parrallel port or something).
+
+Create "/etc/udev/rules.d/99-futjitsu.rules" with:
+# Fujitsu ix1400
+ATTRS{idVendor}=="04c5", ATTRS{idProduct}=="1630", ENV{libsane_matched}="yes"
+
+$ udevadm control --reload-rules
+$ udevadm trigger
+
+< Reconnect Device by closing/reopening the lid>
+
+$ systemctl stop scanbd.service
+
+Verify that you see the device via:
+$ sudo -u saned bash -c "SANE_CONFIG_DIR=/etc/scanbd/ scanimage -L"
+device `fujitsu:ScanSnap iX1400:890' is a FUJITSU ScanSnap iX1400 scanner
+
+If this does not work check udev rules.
+
+In /etc/scanbd/scanbd.conf:
+Change group to saned
+Comment out everything except fujitsu.conf at the end.
+
+$ systemctl start scanbd.service
+
+In /etc/sane.d/dll.conf comment out everything except "net" 
+:0,%s/^/#/
+:0,%s/^#net/net/
+
+Do the same for everything under /etc/sane.d/dll.d/
+
+In "/etc/sane.d/net.conf" uncomment connection_timeout = 60 and add localhost to the end.
+
+In /etc/inetd.conf comment out:
+sane-port stream tcp nowait saned /usr/sbin/scanbm scanbm
+
+Restart inetd.service:
+$ systemctl restart inetd.service
+
+Restart and check scanbm.socket
+systemctl start scanbm.socket
+systemctl status scanbm.socket
+
+When scanbd gets a event it will free the usb device, this allows scanbm to provide the scanner to local/remote sane clients without having to stop scanbd.
+After the action script finished, watch by scanbd is resumed again. Yes its this insane. No not libinsane.
+
+$ mkdir /var/lib/saned
+$ chown saned: /var/lib/saned
+$ sudo -u saned bash
+# ssh-keygen
+< defaults are ok>
+
+copy pub key to server
+
+Create /etc/scanbd/scripts/test.script:
+<code>
+#!/bin/bash
+set -xe
+
+trap 'catch $? $LINENO' EXIT
+
+catch() {
+  if [ "$1" != "0" ]; then
+        echo "error $1 occured on $2" >> $LOG_FILE
+        echo "error $1 occured on $2" | mosquitto_pub -t $MQTT_TOPIC -l
+  fi
+}
+
+MQTT_TOPIC=sj/rpi-sj/scan
+LOG_FILE=/tmp/scanbd.log
+ACTION=$SCANBD_ACTION
+UPLOAD_HOST=rpi-scan@XX
+UPLOAD_PATH=/scans
+
+now=`date +"%Y-%m-%d-%H%M%S"`
+filename=scan-$now.pdf
+filepath=/tmp/scans/$filename
+mkdir -p /tmp/scan
+
+echo "-----" >> $LOG_FILE
+echo "ACTION: $ACTION" >> $LOG_FILE
+echo "SCANDIR: $filepath" >> $LOG_FILE
+echo "_____=" >> $LOG_FILE
+env >> $LOG_FILE
+echo "======" >> $LOG_FILE
+echo "......" >> $LOG_FILE
+if [ "$ACTION" == "scan" ]; then
+        echo "running" | mosquitto_pub -t  $MQTT_TOPIC -l
+
+        echo "scanning" >> $LOG_FILE
+
+        /opt/sane-scan-pdf-1.2/scan -d -r 300 -v -m Lineart --ocr --deskew --unpaper --skip-empty-pages -o $filepath >> $LOG_FILE 2>&1
+
+        echo "uploading" >> $LOG_FILE
+
+        echo "put $filepath $UPLOAD_PATH" | sftp -b - $UPLOAD_HOST >> $LOG_FILE 2>&1
+
+        echo "setting permissions" >> $LOG_FILE
+
+        echo "chmod 664 $UPLOAD_PATH/$filename" | sftp -b - $UPLOAD_HOST >> $LOG_FILE 2>&1
+
+        echo "finished" | mosquitto_pub -t $LOG_FILE -l
+fi
+
+echo "-----" >> $LOG_FILE
+</code>
+
+git clone https://github.com/rocketraman/sane-scan-pdf or use releases from repo
+Place it into /opt.
+
+
+
+