[sane-devel] help with getting scanbd and interactive scanner tools working together
Ron Young
rly1 at embarqmail.com
Mon Jan 1 23:02:44 GMT 2024
Hi Everyone:
I have been working on getting scanbd and sane working together on
my x86 linuxmint 21.2 system with fujitsu snapscan ix500.
How I want things to work is as follows:
1) using scanbd, press the single start button on the ix500 scanner,
the adf contents should be scanned in /var/spool/scan without any
further action.
2) Either as root or a normal user in the scanner group, using common
tools (i.e. gscan2pdf, simple-scan, scanimage, etc)... scan the
documents
in the ix500.
my current configuration works for either 1 or 2 but NOT at the same
time. I would be very happy if I could do either of them as needed
without
having to change anything.
I have attached two files that contain the detailed steps I used for
each of the above configurations. sane-devel-saned is the configuration
of saned without scanbd, and sane-devel-scanbd is the config with scanbd
active.
Of course they contain shell commands, that I cut and paste from my
notes during testing, I don't run them directly as shell scripts.
Any help that you can give me would be appreciated!
-ron
-------------- next part --------------
#
# linuxmint 21.2 (mate desktop) - fujitsu snapscan ix500
#
#restore system status to a clean state for scanner testing sane with scanbd
# with this configuration, currently, sane tools, gscan2pdf, and simple-scan doesn't work for
# interactive root and normal users. BUT it does work if the button is pushed through scanbd
#
rm -rf /etc/scanbd/*
apt-get purge -y scanbd sane libsane-common libsane1 sane-airscan sane-utils simple-scan gscan2pdf
apt-get install -y scanbd sane libsane-common libsane1 sane-airscan sane-utils simple-scan gscan2pdf
#
# create a separate network sane scanner in addition to a local scanner
#
mkdir /etc/scanbd/sane.d
cp -r /etc/sane.d/* /etc/scanbd/sane.d/
#
# Modify /etc/sane.d/dll.conf so that it includes only the "net" directive and the local scanner (for
# simple-scan and other utilities)saned
cat > /etc/sane.d/saned.conf << EOF
192.168.0.0/16
127.0.0.0/8
EOF
cat >/etc/sane.d/dll.conf << EOF
net
fujitsu
EOF
cat > /etc/sane.d/net.conf <<EOF
connect_timeout = 3
localhost
EOF
ed /etc/scanbd/sane.d/dll.conf <<EOF
g/^net/s/^/#/p
w
q
EOF
ed /etc/inetd.conf <<EOF
g/^sane-port/s/^/#/p
w
q
EOF
ed /etc/scanbd/scanbd.conf << EOF
/SANE_CONFIG_DIR/s/\/etc\/scanbd/\/etc\/scanbd\/sane.d/p
g/test.script/s//scan.sh/p
g/^ *user *= saned/s/saned/root/p
w
q
EOF
mkdir /etc/scanbd/scripts && cp /home/ron/scan.sh /etc/scanbd/scripts
cat <etc/scanbd/scripts/scan.sh << EOF
#!/bin/bash
# Author: Rastislav David <rasto at ynet.sk>
scan_dir=/var/spool/scan
datetime=`date +%F_%H%M%S`
filename="scan-$datetime"
send_to=email at address.com
case "$SCANBD_ACTION" in
pdf)
logger -t "scanbd: $0" "$SCANBD_ACTION - scanning and converting to ps"
scanimage -d "$SCANBD_DEVICE" --mode Color --resolution 150 --depth 16 |
convert -density 150 - "$scan_dir/$filename.ps"
logger -t "scanbd: $0" "$SCANBD_ACTION - converting ps to pdf"
ps2pdf -sPAPERSIZE=a4 "$scan_dir/$filename.ps" "$scan_dir/$filename.pdf"
rm "$scan_dir/$filename.ps"
;;
scan)
scanimage -d "$SCANBD_DEVICE" --resolution 300 --mode Gray --format=tiff > "$\
scan_dir/$filename.tiff"
;;
copy)
logger -t "scanbd: $0" "$SCANBD_ACTION - scanning"
scanimage -d "$SCANBD_DEVICE" --resolution 300 --depth 16--format=tiff > "$sc\
an_dir/$filename.tiff"
# | convert -density 300 - $scan_dir/$filename.ps
logger -t "scanbd: $0" "$SCANBD_ACTION - printing"
lp "$scan_dir/$filename.tiff"
rm "$scan_dir/$filename.tiff"
;;
email)
logger -t "scanbd: $0" "$SCANBD_ACTION - scanning and converting to ps"
scanimage -d "$SCANBD_DEVICE" --mode Color --resolution 150 --depth 16 |
convert -density 150 - "$scan_dir/$filename.ps"
logger -t "scanbd: $0" "$SCANBD_ACTION - converting ps to pdf"
ps2pdf -sPAPERSIZE=a4 "$scan_dir/$filename.ps" "$scan_dir/$filename.pdf"
logger -t "scanbd: $0" "$SCANBD_ACTION - sending pdf"
(cat <<EOCAT
Document scanned on Canon LiDE 110
EOCAT
uuencode "$scan_dir/$filename.pdf" "$scan_dir/$filename.pdf" ) | mail -a
"From: Canon scanner <some at email.sk>" -s "Document $filename" "$send_to"
rm "$scan_dir/$filename.ps"
rm "$scan_dir/$filename.pdf"
;;
*)
logger -t "scanbd: $0" "Unhandled action request."
;;
esac
exit 0
EOF
chmod 755 /etc/scanbd/scripts/scan.sh
#
# enable/disable udev rules for testing
#
# enable start
cat > /etc/udev/rules.d/40-scanner.rules << EOF
SUBSSTEMS=="usb", ATTRS{idVendor}="04c5". ATTRS{idProduct}=="132b", ENV{libsane_matched}="yes", GROUP="scanner"
EOF
# enable end
# disable start
cat > /etc/udev/rules.d/40-scanner.rules << EOF
# Fujitsu SnapScan ix500
SUBSSTEMS=="usb", ATTRS{idVendor}="04c5". ATTRS{idProduct}=="132b",
ENV{libsane_matched}="yes", GROUP="scanner",
ENV{ID_VENDOR_ID}=="04c5", ENV{ID_MODEL_ID}=="132b", ACTION=="add",
RUN+="/usr/sbin/service inetutils-inetd start",
RUN+="/usr/bin/scanimage -L", RUN+="/usr/sbin/service scanbd start"
ENV{ID_VENDOR_ID}=="04c5", ENV{ID_MODEL_ID}=="132b", ACTION=="remove",
RUN+="/usr/sbin/service scanbd stop", RUN+="/usr/sbin/service
inetutils-inetd stop"
EOF
#disable end
sudo /etc/init.d/udev restart
systemctl stop scanbm.socket
systemctl disable scanbm.socket
systemctl daemon-reload
systemctl unmask scanbd
systemctl enable scanbd
systemctl restart scanbd
-------------- next part --------------
#
# linuxmint 21.2 (mate desktop) - fujitsu snapscan ix500
#
#restore system status to a clean state for scanner testing sane with scanbd
# with this configuration, currently, sane tools, gscan2pdf, and simple-scan doesn't work for
# interactive root and normal users. BUT it does work if the button is pushed through scanbd
#
rm -rf /etc/scanbd/*
apt-get purge -y scanbd sane libsane-common libsane1 sane-airscan sane-utils simple-scan gscan2pdf
apt-get install -y scanbd sane libsane-common libsane1 sane-airscan sane-utils simple-scan gscan2pdf
#
# create a separate network sane scanner in addition to a local scanner
#
mkdir /etc/scanbd/sane.d
cp -r /etc/sane.d/* /etc/scanbd/sane.d/
#
# Modify /etc/sane.d/dll.conf so that it includes only the "net" directive and the local scanner (for
# simple-scan and other utilities)saned
cat > /etc/sane.d/saned.conf << EOF
192.168.0.0/16
127.0.0.0/8
EOF
cat >/etc/sane.d/dll.conf << EOF
net
fujitsu
EOF
cat > /etc/sane.d/net.conf <<EOF
connect_timeout = 3
localhost
EOF
ed /etc/scanbd/sane.d/dll.conf <<EOF
g/^net/s/^/#/p
w
q
EOF
ed /etc/inetd.conf <<EOF
g/^sane-port/s/^/#/p
w
q
EOF
ed /etc/scanbd/scanbd.conf << EOF
/SANE_CONFIG_DIR/s/\/etc\/scanbd/\/etc\/scanbd\/sane.d/p
g/test.script/s//scan.sh/p
g/^ *user *= saned/s/saned/root/p
w
q
EOF
mkdir /etc/scanbd/scripts && cp /home/ron/scan.sh /etc/scanbd/scripts
cat <etc/scanbd/scripts/scan.sh << EOF
#!/bin/bash
# Author: Rastislav David <rasto at ynet.sk>
scan_dir=/var/spool/scan
datetime=`date +%F_%H%M%S`
filename="scan-$datetime"
send_to=email at address.com
case "$SCANBD_ACTION" in
pdf)
logger -t "scanbd: $0" "$SCANBD_ACTION - scanning and converting to ps"
scanimage -d "$SCANBD_DEVICE" --mode Color --resolution 150 --depth 16 |
convert -density 150 - "$scan_dir/$filename.ps"
logger -t "scanbd: $0" "$SCANBD_ACTION - converting ps to pdf"
ps2pdf -sPAPERSIZE=a4 "$scan_dir/$filename.ps" "$scan_dir/$filename.pdf"
rm "$scan_dir/$filename.ps"
;;
scan)
scanimage -d "$SCANBD_DEVICE" --resolution 300 --mode Gray --format=tiff > "$\
scan_dir/$filename.tiff"
;;
copy)
logger -t "scanbd: $0" "$SCANBD_ACTION - scanning"
scanimage -d "$SCANBD_DEVICE" --resolution 300 --depth 16--format=tiff > "$sc\
an_dir/$filename.tiff"
# | convert -density 300 - $scan_dir/$filename.ps
logger -t "scanbd: $0" "$SCANBD_ACTION - printing"
lp "$scan_dir/$filename.tiff"
rm "$scan_dir/$filename.tiff"
;;
email)
logger -t "scanbd: $0" "$SCANBD_ACTION - scanning and converting to ps"
scanimage -d "$SCANBD_DEVICE" --mode Color --resolution 150 --depth 16 |
convert -density 150 - "$scan_dir/$filename.ps"
logger -t "scanbd: $0" "$SCANBD_ACTION - converting ps to pdf"
ps2pdf -sPAPERSIZE=a4 "$scan_dir/$filename.ps" "$scan_dir/$filename.pdf"
logger -t "scanbd: $0" "$SCANBD_ACTION - sending pdf"
(cat <<EOCAT
Document scanned on Canon LiDE 110
EOCAT
uuencode "$scan_dir/$filename.pdf" "$scan_dir/$filename.pdf" ) | mail -a
"From: Canon scanner <some at email.sk>" -s "Document $filename" "$send_to"
rm "$scan_dir/$filename.ps"
rm "$scan_dir/$filename.pdf"
;;
*)
logger -t "scanbd: $0" "Unhandled action request."
;;
esac
exit 0
EOF
chmod 755 /etc/scanbd/scripts/scan.sh
#
# enable/disable udev rules for testing
#
# enable start
cat > /etc/udev/rules.d/40-scanner.rules << EOF
SUBSSTEMS=="usb", ATTRS{idVendor}="04c5". ATTRS{idProduct}=="132b", ENV{libsane_matched}="yes", GROUP="scanner"
EOF
# enable end
# disable start
cat > /etc/udev/rules.d/40-scanner.rules << EOF
# Fujitsu SnapScan ix500
SUBSSTEMS=="usb", ATTRS{idVendor}="04c5". ATTRS{idProduct}=="132b",
ENV{libsane_matched}="yes", GROUP="scanner",
ENV{ID_VENDOR_ID}=="04c5", ENV{ID_MODEL_ID}=="132b", ACTION=="add",
RUN+="/usr/sbin/service inetutils-inetd start",
RUN+="/usr/bin/scanimage -L", RUN+="/usr/sbin/service scanbd start"
ENV{ID_VENDOR_ID}=="04c5", ENV{ID_MODEL_ID}=="132b", ACTION=="remove",
RUN+="/usr/sbin/service scanbd stop", RUN+="/usr/sbin/service
inetutils-inetd stop"
EOF
#disable end
sudo /etc/init.d/udev restart
systemctl stop scanbm.socket
systemctl disable scanbm.socket
systemctl daemon-reload
systemctl unmask scanbd
systemctl enable scanbd
systemctl restart scanbd
More information about the sane-devel
mailing list