[sane-devel] scanbd with old udev version

Sander Devrieze s.devrieze at gmail.com
Wed Aug 21 05:56:23 UTC 2013


2013/8/21 Wilhelm <wilhelm.meier at fh-kl.de>

> Hi Sander,
>
> Am 21.08.2013 00:40, schrieb Sander Devrieze:
>
>  Hello,
>>
>> I am trying to convert a WD MyBook into a scanner server. Sane detects
>> the scanner and I was able to scan, but I cannot get scanbd to work.
>>
>
> Which options did you use for configure?


None, I just did a plain "./configure".


>
>
>> May this be related to the fact that I am using a *very* old udev
>> version (0.125-7+lenny3) which cannot be upgraded?
>>
>
> On Lenny you should try usind hal instead of udev. But this is only
> resonsible for detecting removable devices. As a fallback scanbd can be
> signaled (using some udev-rule, e.g.), please check the docu.
>

I am running Debian Squeeze. Only the udev package is from Lenny. This is
needed because otherwise the special "MyBook Linux kernel" will not boot.

>
>  Check the debug
>> output below. How can I get scanbd running on my system?
>>
>
> First of all scanbd doesn't detect any scanner. There may be various
> reasons. But most likely scanbd uses a wrong dll.conf.
>
> Did you
> export SANE_CONFIG_DIR=/usr/local/etc/scanbd ?
>

Yes, and I also run scanbd like this to be sure:
/usr/local/sbin/scanbd -d7 -f -c /usr/local/etc/scanbd/scanbd.conf

When running scanbm, one of the lines reads like this:

scanbm: Setting environment: SANE_CONFIG_DIR=/usr/local/etc/scanbd/sane.d


please show your configs:
>
> /etc/sane/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
#abaton
#agfafocus
#apple
<snip all lines commented out below this>



> /usr/local/sbin/scanbd/dll.**conf
>

Ok, that seems to help. Maybe the readme file should be more clear that you
need to copy the config files and not the directory "sane.d" in here.
scanbd seems to work. However, sane does not recognize the scanner:

scanimage: no SANE devices found

Any idea what can be wrong?


> /usr/local/etc/scanbd/scanbd.**conf
>
>
# global settings
global {
        # turn on debugging

        # log to console
        debug   = true

        # debug logging
        # 1=error, 2=warn, 3=info, 4-7=debug
        debug-level = 7

        # drop priviliges to this user
        #=============================
        # Linux:
        # user    = saned # root
        # *BSD
        # user    = root
        user    = saned

        # Group to be used
        #=================
        # Linux (most distributions use the lp group to access scanners)
        # group   = lp
        # ArchLinux (ArchLinux uses the scanner group)
        # group = scanner
        #
        # *BSD (no group lp here, use daemon instead)
        # group   = daemon # root
        #
        group   = saned
        # the saned executable for manager-mode
        saned   = "/usr/sbin/saned"
        saned_opt  = {} # string-list
        saned_env  = { "SANE_CONFIG_DIR=/usr/local/etc/scanbd" } # list of
environment vars for saned

        # Scriptdir specifies where scanbs normally looks for scripts.
        # The scriptdir option can be defined as:
        #   - a path relative to the configuations (<path>/etc/scanbd)
directory
        #   - an abosolute path
        # Examples:
        # scriptdir = scripts
        # sets scriptdir to <path>/etc/scripts.
        # scriptdir = /some/path
        # sets scriptdir to the specified absolute path
        # Default scriptdir is <path>/etc/scanbd, this is normally
appropriate
        # scriptdir =

        # scanbuttond_backends_dir sets the path where scanbd looks for the
scanbuttond backends
        # It can be defined as relative path, starting from the scanbd
config directory or
        # as an absolute path
        # Default is <libdir>/scanbd/scanbutond/backends
        # Example
        # scanbuttond_backends_dir =
"/usr/local/lib/scanbd/scanbuttond/backends"

        # poll timeout in [ms]
        # (for polling the devices)
        timeout = 500

        pidfile = "/var/run/scanbd.pid"

        # env-vars for the scripts
        environment {
                # pass the device label as below in this env-var
                device = "SCANBD_DEVICE"
                # pass the action label as below in this env-var
                action = "SCANBD_ACTION"
        }

        # function definitions
        # values of the options are simply passed via env-vars

        function function_knob {
                filter = "^message.*"
                desc   = "The value of the function knob / wheel / selector"
                env    = "SCANBD_FUNCTION"
        }
        function function_mode {
                filter = "^mode.*"
                desc   = "Color mode"
                env    = "SCANBD_FUNCTION_MODE"
        }

        multiple_actions = true # allow multiple actions per option (up to
the total amount of options)
        # action definitions
        # if the filter matches and the value changes
        # from from-value to to-value,
        # <script> is executed
        # <script> is the full pathname (do not include any parameters)
        # if parameters are needed, write a script

        # since we can have only a most one action for each option, the
action-script
        # can use the function definition (see above) to distinguish
different tasks
        # (e.g. use the env-var SCANBD_FUNCTION defined above)

        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 = "test.script"
        }
        action email {
                filter = "^email$"
               string-trigger {
                        from-value  = ""
                        to-value    = "^email.*"
                }
                desc   = "Scan to email"
                # 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 = "test.script"
        }
        action copy {
                filter = "^copy$"
                string-trigger {
                        from-value  = ""
                        to-value    = "^copy.*"
                }
                desc   = "Copy to printer"
                # 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 = "test.script"
        }
        action preview {
                filter = "^preview$"
                numerical-trigger {
                        from-value = 1
                        to-value   = 0
                }
                desc   = "Preview"
                # 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 = "test.script"
        }
        action globaltest {
                filter = "^message.*"
                desc   = "Test (print all env vars)"
                # 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 = "test.script"
        }
}

# include
# include another file at this point. This may only occur outside general
and devices blocks
# an include statement may be relative (to the direcory where scanbd.conf
is located or aboslute
# include("scanner.d/myscanner.conf")
# include("/my/long/path/myscanner.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)


> and show the env-vars for the user starting the scanbd (root).
>
>
TERM=xterm
SHELL=/bin/bash
OLDPWD=/root
SSH_TTY=/dev/pts/0
USER=root
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/usr/local/etc/scanbd
LANG=en_US.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
SANE_CONFIG_DIR=/usr/local/etc/scanbd
_=/usr/bin/env

>
>
>
>> Thanks for helping me out!
>>
>> /usr/local/sbin/scanbd: foreground
>> /usr/local/sbin/scanbd: config-file: /usr/local/etc/scanbd/scanbd.**conf
>> /usr/local/sbin/scanbd: reading config file
>> /usr/local/etc/scanbd/scanbd.**conf
>> /usr/local/sbin/scanbd: debug on: level: 7
>> /usr/local/sbin/scanbd: dropping privs to uid saned
>> /usr/local/sbin/scanbd: dropping privs to gid saned
>> /usr/local/sbin/scanbd: drop privileges to gid: 109
>> /usr/local/sbin/scanbd: Running as effective gid 109
>> /usr/local/sbin/scanbd: drop privileges to uid: 104
>> /usr/local/sbin/scanbd: Running as effective uid 104
>> /usr/local/sbin/scanbd: dbus_init
>> /usr/local/sbin/scanbd: dbus match
>> type='signal',interface='org.**freedesktop.Hal.Manager'
>> /usr/local/sbin/scanbd: sane version 1.0
>> /usr/local/sbin/scanbd: Scanning for local-only devices
>> /usr/local/sbin/scanbd: start_sane_threads
>> /usr/local/sbin/scanbd: start dbus thread
>> /usr/local/sbin/scanbd: timeout: 500 ms
>> /usr/local/sbin/scanbd: Iteration on dbus call
>> /usr/local/sbin/scanbd: udev init
>> /usr/local/sbin/scanbd: get udev monitor
>> libudev: udev_monitor_enable_receiving: bind failed: Operation not
>> permitted
>> /usr/local/sbin/scanbd: Can't enable udev receiving
>> /usr/local/sbin/scanbd: Can't init udev
>> /usr/local/sbin/scanbd: Iteration on dbus call
>> /usr/local/sbin/scanbd: Iteration on dbus call
>> /usr/local/sbin/scanbd: Iteration on dbus call
>>
>> --
>> Kind Regards,
>> Sander Devrieze
>>
>>
>>
>
> --
> Wilhelm
> w.meier at unix.net
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/sane-devel/attachments/20130821/a47ecd4d/attachment-0001.html>


More information about the sane-devel mailing list