From 19c84a8f1dce7d3ea1f8ad8b7912664f66d4720c Mon Sep 17 00:00:00 2001 From: stephan48 Date: Thu, 11 Nov 2021 22:39:51 +0100 Subject: [PATCH] --- posts/2021-11-11-scan-pi.mdwn | 130 ++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 posts/2021-11-11-scan-pi.mdwn diff --git a/posts/2021-11-11-scan-pi.mdwn b/posts/2021-11-11-scan-pi.mdwn new file mode 100644 index 0000000..d2f821f --- /dev/null +++ b/posts/2021-11-11-scan-pi.mdwn @@ -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: + +#ix1400 +usb 0x04c5 0x1630 + + + +In /etc/scanbd/dll.conf comment out everything except "fujitsu".conf + +:0,%s/^/#/ +:0,%s/^#fujitsu/fujitsu/ + + +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: + +#!/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 + + +git clone https://github.com/rocketraman/sane-scan-pdf or use releases from repo +Place it into /opt. + + + + -- 2.30.2