[sane-devel] [Scanbd] Set up for Canon PIXMA multifunction scanner - no button response
matt clark
liquefry at gmail.com
Tue Oct 25 04:12:29 UTC 2016
Hi Rolf, thanks for replying - sorry I missed it last week. The
response to that command (running as su) is
scanimage: no SANE devices found
I am guessing it's something wrong with the scanbd setup since I can
see that it's installed using the /usr/local/etc/scanbd/sane.d config
file. The only line that is not commented out in my
/etc/sane.d/saned.conf file is
localhost
Would appreciate your thoughts.
On Wed, Oct 19, 2016 at 9:13 PM, Rolf Bensch <rolf at bensch-online.de> wrote:
> 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