Buscar..


Introducción e instalación

El propósito de esta documentación es utilizar un escáner sin ninguna interfaz de usuario. Un uso común es cargar un archivo escaneado en PDF directamente en Google Drive o Dropbox simplemente presionando los botones del escáner.

Scanbd permite activar acciones desde los botones del escáner, usa sane.

Lo que complica un poco las cosas es que al sondear el escáner, scanbd bloquea el dispositivo. Como también necesitamos escanear desde herramientas locales (como scanimage), necesitamos configurar un proxy que interrumpa el scandb de sondeo cuando sea necesario. Este es el trabajo de scanbm, que controla la red y le da prioridad sobre scanbd a cualquier acceso local al escáner.

Por lo tanto, necesitamos:

  • Configure la configuración de sonido local para escanear solo desde la red (a través de scanbm)
  • Configure scanbd para tener acceso y sondear el escáner local

Como raíz :

apt-get update
apt-get install libconfuse-dev libsane-dev libudev-dev libusb-dev xinetd

La última versión de scanbd se puede encontrar aquí: https://sourceforge.net/projects/scanbd/files/releases/

# Download the latest version of **scanbd**.
wget https://sourceforge.net/projects/scanbd/files/releases/scanbd-1.4.4.tgz/download

# Uncompress
tar xvzf scanbd-1.4.4.tgz && cd 1.4.4

# Configure with the installation path in /etc/
./configure --disable-Werror

# install it
make
make install

# Add a dbus policy to authorize "saned" user to manage scanbd :
cp integration/scanbd_dbus.conf /etc/dbus-1/system.d/

# Add the init script to manage the daemon :
cp integration/scanbd.debian /etc/init.d/scanbd

Scanbd ahora está instalado pero aún no está configurado.

Configurar sane para escanear desde la red

La configuración local de sane está dentro de /etc/saned.d


/etc/sane.d/dll.conf

# /etc/sane.d/dll.conf - Configuration file for the SANE dynamic backend loader
#
# Backends can also be enabled by configuration snippets under
# /etc/sane.d/dll.d directory -- packages providing backends should drop
# a config file similar to dll.conf in this directory, named after the package.
#

# The next line enables the network backend; comment it out if you don't need
# to use a remote SANE scanner over the network - see sane-net(5) and saned(8)

net

dll.conf contiene solo el backend net .


/etc/sane.d/net.conf:

# This is the net backend config file.

## net backend options
# Timeout for the initial connection to saned. This will prevent the backend
# from blocking for several minutes trying to connect to an unresponsive
# saned host (network outage, host down, ...). Value in seconds.
connect_timeout = 3

## saned hosts
# Each line names a host to attach to.
# If you list "localhost" then your backends can be accessed either
# directly or through the net backend.  Going through the net backend
# may be necessary to access devices that need special privileges.

localhost

En este punto, scanbm aún no está configurado, no se puede acceder a ningún escáner desde la red. Necesitamos configurar scanbm junto con scanbd para probar la configuración.

Configure scanbd para sondear el escáner local

Identificar el escáner local.

Al usar lsusb, identifique el ID de producto (1909 aquí):

pi:# lsusb
pi:# Bus 001 Device 005: ID 04a9:1909 Canon, Inc. CanoScan LiDE 110

Con ese productId , grep el archivo de configuración correcto (depende del modelo de su escáner, para mí es genesys.conf ):

pi:# grep 1909 /etc/sane.d/*conf
pi:# /etc/sane.d/genesys.conf:usb 0x04a9 0x1909

Copie el archivo dentro de su carpeta de configuración de scanbd:

cp /etc/sane.d/genesys.conf /usr/local/etc/scanbd/
cp /etc/sane.d/dll.conf /usr/local/etc/scanbd/

Edite /usr/local/etc/scanbd/dll.conf y reemplace net con el escáner correcto:

# /etc/sane.d/dll.conf - Configuration file for the SANE dynamic backend loader
#
# Backends can also be enabled by configuration snippets under
# /etc/sane.d/dll.d directory -- packages providing backends should drop
# a config file similar to dll.conf in this directory, named after the package.
#

# The next line enables the network backend; comment it out if you don't need
# to use a remote SANE scanner over the network - see sane-net(5) and saned(8)

genesys

Confirme que el escáner local se encuentra por scanbd

Ahora estamos listos para probar:

scanbd -d7 -f

Evite todo lo que pueda para manipular la env. SANE_CONFIG_DIR. Puede romper cosas, el valor predeterminado ya está configurado en /usr/local/etc/scanbd/scanbd.conf y en el script de inicio.

La salida debe ser similar a:

scanbd: foreground
scanbd: reading config file /usr/local/etc/scanbd/scanbd.conf
scanbd: debug on: level: 7
scanbd: dropping privs to uid saned
scanbd: dropping privs to gid scanner
scanbd: group scanner has member: 
scanbd: saned
scanbd: pi
scanbd: drop privileges to gid: 110
scanbd: Running as effective gid 110
scanbd: drop privileges to uid: 110
scanbd: Running as effective uid 110
scanbd: dbus_init
scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
scanbd: SANE_CONFIG_DIR=/usr/local/etc/scanbd/sane.d
scanbd: sane version 1.0
scanbd: Scanning for local-only devices
scanbd: found device: genesys:libusb:001:005 Canon LiDE 110 flatbed scanner

El found device más importante aquí se found device .

¿Qué pasa si "dispositivo encontrado" no aparece?

Debe volver a verificar su configuración, especialmente la parte de identificación de esta documentación y borrar cualquier env. SANE_CONFIG_DIR eventual mal configurada al escribir: unset SANE_CONFIG_DIR


Configure xinetd para hacer que scanbm escuche en la red

Cree /etc/xinetd.d/sane-port que contiene:

service sane-port
{
        port        = 6566
        socket_type = stream
        wait        = no
        user        = saned
        group       = scanner
        server      = /usr/local/sbin/scanbm
        server_args = scanbm -c /usr/local/etc/scanbd/scanbd.conf
        disable     = no
}

/! \ Comprueba dos veces la ruta de scanbm con la which scanbm

Luego, reinicie xinetd e inicie scanbd :

service xinetd restart
/etc/init.d/scanbd start

scanimage -L ahora debería mostrar el escáner.

La mayoría de los problemas en esta etapa se refieren a los permisos. Asegúrese de que scanimage -L funcione cuando haya iniciado sesión saned haciendo sudo -u saned -s .

Si no, revise los permisos de USB: ls -al /dev/bus/usb/***

Activar acciones desde los botones del escáner.

Las acciones se encuentran en /usr/local/etc/scanbd/scanbd.conf . Tengo 4 botones que son escanear , copiar , correo electrónico y archivo .

El archivo de configuración predeterminado no incluye todas las acciones por defecto, probablemente tendrá que agregar el bloque manualmente. Puede tener menos o más botones dependiendo del modelo de su escáner.

Para cada acción, estableceremos una ruta personalizada para la opción de script .

action scan {
    filter = "^scan.*"
    numerical-trigger {
            from-value = 1
            to-value   = 0
    }
    desc   = "Scan to file"
    # script must be an relative path starting from scriptdir (see above), 
    # or an absolute pathname. 
    # It must contain the path to the action script without arguments
    # Absolute path example: script = "/some/path/foo.script 
    script = "/home/pi/scan.sh"
}

No olvide comentar cualquier otra acción predeterminada al final de scanbd.conf:

# devices 
# each device can have actions and functions, you can disable not relevant devices
#include(scanner.d/avision.conf)
#include(scanner.d/fujitsu.conf)
#include(scanner.d/hp.conf)
#include(scanner.d/pixma.conf)
#include(scanner.d/snapscan.conf)
#include(scanner.d/canon.conf)

Ahora puede crear su script personalizado para manejar cada acción:

Cada línea relativa a /sys/class/leds/led0/trigger es para controlar el LED para monitorear lo que está sucediendo. Puedes hacer lo que quieras, cat /sys/class/leds/led0/trigger te da todos los diferentes patrones de luces.

/home/pi/scan.sh

#!/bin/bash

# don't forget to create the folder
scan_dir=/home/pi/scanned-files
datetime=`date +%F_%H%M%S`

echo none >/sys/class/leds/led0/trigger

case $SCANBD_ACTION in
  scan)
    filename=file-$datetime
    logger -t "scanbd: $0" "$SCANBD_DEVICE $SCANBD_ACTION - scanning --resolution 150 --mode Color --depth 8 --format=tiff to $scan_dir/$filename.jpg"
    echo timer >/sys/class/leds/led0/trigger
    scanimage -d $SCANBD_DEVICE --resolution 150 --mode Color --depth 8 --format=tiff  --brightness 5 --contrast 20 | convert tiff:- -compress jpeg $scan_dir/$filename.pdf
    echo none >/sys/class/leds/led0/trigger
    logger -t "scanbd: $0" "Finished scanning"
    ;;
    
  email)
    logger -t "scanbd: $0" "Emailing $scan_dir/file-*pdf"
    echo heartbeat >/sys/class/leds/led0/trigger
    # here are the lines to send the file
    echo none >/sys/class/leds/led0/trigger

esac


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow