[sane-devel] [Scanbd] Set up for Canon PIXMA multifunction scanner - no button response
Rolf Bensch
rolf at bensch-online.de
Wed Oct 19 10:13:25 UTC 2016
Hi Matt,
Sorry for the late response.
The command line must run without
'SANE_CONFIG_DIR=/usr/local/etc/scanbd/sane.d'. Maybe you don't have the
user rights to access your scanner via USB. Please try following:
(1) push any button
(2) sudo su -c "SANE_DEBUG_PIXMA=11 scanimage -A"
Please send me the complete log response.
Cheers,
Rolf
Am 13.10.2016 um 23:29 schrieb matt clark:
> Hi Rolf, the "buttons" section in the code shows this:
>
> Buttons:
> --button-update
> Update button state
> --button-1 <int> [0] [read-only]
> Button 1
> --button-2 <int> [0] [read-only]
> Button 2
> --original <int> [0] [read-only]
> Type of original to scan
> --target <int> [0] [read-only]
> Target operation type
> --scan-resolution <int> [0] [read-only]
> Scan resolution
>
> None of the binary code you mentioned. Does this mean there is no
> sane support for the buttons? Note that I had to use the command
> SANE_CONFIG_DIR=/usr/local/etc/scanbd/sane.d SANE_DEBUG_PIXMA=11
> scanimage -A to make it work. I pushing both buttons, and sending it
> via USB (yes it's connected) and the "localhost saned" option which is
> I assume sending via network.
>
> On Fri, Oct 14, 2016 at 7:16 AM, Rolf Bensch <rolf at bensch-online.de> wrote:
>> 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