[sane-devel] [Scanbd] Set up for Canon PIXMA multifunction scanner - no button response
Rolf Bensch
rolf at bensch-online.de
Thu Oct 13 20:16:34 UTC 2016
Hi Matt,
Have you tested that your scanner resp. the backend sends data @ a push
button event?
Please test on the console:
(1) push any button
(2) $ SANE_DEBUG_PIXMA=11 scanimage -A
(3) check the response; I'm especially interested in following lines:
Buttons:
--button-update
Update button state
[pixma] INTR T=1.343 len=32
[pixma] 00000000:00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[pixma] 00000010:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[pixma]
--button-1 <int> [1] [read-only]
Button 1
--button-2 <int> [0] [read-only]
Button 2
--original <int> [0] [read-only]
Type of original to scan
--target <int> [2] [read-only]
Target operation type
--scan-resolution <int> [0] [read-only]
Scan resolution
Please repeat (1) ... (3) for all scan buttons.
Maybe you need to test your scanner USB connected to the pc. I haven't
tested push buttons wireless yet.
If you don't get lines starting with [pixma], your scanner has no button
support from SANE.
If you get lines starting with [pixma] with more data as shown above (I
have a different scanner) and without data output below at the
parameters --button-1 ... --scan-resolution, what I suppose, then please
send me your "Buttons:" logs and I'll fix the backend code.
Hope this helps.
Cheers,
Rolf
Am 13.10.2016 um 13:23 schrieb Wilhelm:
> Oh, mixed the values ...
>
> action btest {
> filter = "^button.*"
> numerical-trigger {
> from-value = 0
> to-value = 1
> }
> desc = "Scan to file"
> script = "test.script"
> }
>
>
> Am 13.10.2016 um 11:16 schrieb Wilhelm:
>> Matt, you need something like this in your config:
>>
>> action btest {
>> filter = "^button.*"
>> numerical-trigger {
>> from-value = 1
>> to-value = 0
>> }
>> desc = "Scan to file"
>> script = "test.script"
>> }
>>
>> --
>> Wilhelm
>>
>> Am 13.10.2016 um 09:09 schrieb matt clark:
>>> Thanks Wilhelm. I had changed that while trying to debug the problem,
>>> not sure why this would be a problem. Have reverted to the
>>> scanbd.conf from source, with modifications to sane.d directory and
>>> comment out the unnecessary manufacturer scanner.d profiles. revised
>>> config is attached - apologies for the length of code.
>>>
>>> ---
>>>
>>> /*
>>> * $Id: scanbd.conf 213 2015-10-05 06:52:50Z wimalopaan $
>>> *
>>> * scanbd - KMUX scanner button daemon
>>> *
>>> * Copyright (C) 2008 - 2015 Wilhelm Meier (wilhelm.meier at fh-kl.de)
>>> *
>>> * This program is free software; you can redistribute it and/or modify
>>> * it under the terms of the GNU General Public License as published by
>>> * the Free Software Foundation; either version 2 of the License, or
>>> * (at your option) any later version.
>>> *
>>> * This program is distributed in the hope that it will be useful,
>>> * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>>> * GNU General Public License for more details.
>>> *
>>> * You should have received a copy of the GNU General Public License
>>> * along with this program; if not, write to the Free Software
>>> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>>> 02110-1301, USA.
>>> */
>>>
>>>
>>> # 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 (most distributions use the saned user):
>>> # user = saned
>>> # ArchLinux (ArchLinux doesn't have saned user)
>>> # user = daemon
>>> # *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 = lp
>>>
>>> # the saned executable for manager-mode
>>> saned = "/usr/sbin/saned"
>>> saned_opt = {} # string-list
>>> saned_env = { "SANE_CONFIG_DIR=/etc/scanbd/sane.d" } # list of
>>> environment vars for saned
>>>
>>> # Scriptdir specifies where scanbd 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/scanbd/scripts.
>>> # scriptdir = /some/path
>>> # sets scriptdir to the specified absolute path
>>> # Default scriptdir is <path>/etc/scanbd, this is normally appropriate
>>> scriptdir = /etc/scanbd/scripts
>>>
>>> # Scripts to execute upon device insertion/removal.
>>> # It can be necessary to load firmware into the device when it is first
>>> # inserted. For example, scanbuttond backend does not know how to load
>>> # scanner firmware, and it can be rectified by making a custom script.
>>> # A simple command like "scanimage -L" in an example insert.script
>>> # invokes saned and it loads the appropriate firmware if necessary.
>>> # These scripts receive environmental variables named in the
>>> "environment" subsection:
>>> # SCANBD_DEVICE - device name (fixed string "dbus device" for
>>> dbus notification)
>>> # SCANBD_ACTION - "insert" or "remove", so one script can be used.
>>> # device_insert_script = "insert.script"
>>> # device_remove_script =
>>>
>>> # 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 at 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 absolute
>>> # 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)
>>>
>>>
>>> On Thu, Oct 13, 2016 at 4:10 PM, Wilhelm <wilhelm.meier at fh-kl.de> wrote:
>>>> Looking at your log file it seems that action "globaltest" isn't
>>>> installed. There may be 2 reasons for this:
>>>>
>>>> 1) the regex doenst't match
>>>>
>>>> 2) there is no trigger definition for the action
>>>>
>>>> HtH
>>
>
More information about the sane-devel
mailing list