[sane-devel] scanbd and Canon LiDE 60: buttons not recognized ?

Florian Gagel ghostrider at trollaris.de
Sat Apr 15 18:38:37 UTC 2017


Hi Wilhelm,

thanks, your modification made all four buttons work !
This seems somewhat surprising to me at first glance, should  the 
backend not be strcmp'ed using "==0", providing
an own section for each backend :-) ? Anyway, it works, even if the 
buttons are somewhat scrambled:

  (Button press at scanner)  -> (Action)
--------------------
Email  -> PDF
PDF     -> Email
Scan   -> Copy
Copy   -> Scan.

I also used string-triggers only. The buttons may have to be pressed for 
a short period exceeding the polling interval.
Some minor possible pitfalls using the installations defaults of 
scanbd-1.5.0 under Ubuntu 16.04:
- I removed the default package and configured the newer scanbd 1.5.0 as 
described in the previous mail. I also used xinetd instead of the ubuntu 
default
    bsd-inetd for network scanner access although this should be of no 
relevance.
- Wilhelms patch has to be applied to scanbuttond_wrapper.c (removed 
assertion, return strings on any value of "button").
- In scanbd.conf: Group should be "saned". Make sure all paths refer to 
/usr/local/etc/scanbd, scriptdir = /usr/local/etc/scanbd/scripts, ...
- The new path also enters into /lib/systemd/system/scanbd.service, 
after changing that do "systemctl daemon-reload" and restart scanbd.

Now I am happy because of the four programmable buttons for my Odroid-U2 
SoC which has no monitor attached to it :-)

Thanks again Wilhelm and Happy Easter !

   Florian

Am 15.04.2017 um 17:32 schrieb Wilhelm:
> Am 15.04.2017 um 16:13 schrieb Florian Gagel:
>> Hi Wilhelm,
>>
>> thanks for your reply -  I made some progress in this issue however
>> still did not fully succeed.
>>
>> - First step as you told me: make clean, configure --enable-scanbuttond,
>> make, make install, copy manually the
>> old backends to /usr/local/lib/scanbd/scanbuttond as described in the
>> README (this all with the 1.5.0 version of scanbd).
>> - Starting scanbd -f -d7, I first got a "scanbd: Can't get the scbtn
>> device list" error.
>> - I edited /usr/local/lib/scanbd/scanbuttond/backends/meta.conf, making
>> it contain the single line "genesys" which was missing before.
> Yes, per default this was not included - I added it to trunk.
>
>> - Then the LiDE-60 was recognized by the old backend, together with its
>> four buttons !
>> - However, scanbd finally stumbled on an assertion:/
> Looks like you were the first one with an appropriate scanner to test
> this ;-)
>
> You can safely remove the mentioned assertion if you return non-null
> string-literals in all switch cases including the default case:
>
> --- scanbuttond_wrapper.c       (Revision 236)
>
> +++ scanbuttond_wrapper.c       (Arbeitskopie)
>
> @@ -1063,10 +1063,9 @@
>
>       slog(SLOG_INFO, "scanbtnd_button_name, backend: %s", backend_name);
>
>
>
>       if (strcmp("snapscan", backend_name)) {
> -        assert(button <= 5);
>           switch(button) {
>           case 0:
> -            return NULL;
> +            return "zero";
>               break;
>           case 1:
>               return "scan"; // "web";
> @@ -1084,7 +1083,7 @@
>               return "stop";
>               break;
>           default:
> -            return NULL;
> +            return "default";
>               break;
>           }
>       }
>
>
> If you don't mind please test this modification. I you succeed with it
> I'll put it into trunk.
>
>> root at gandroid:/usr/local/etc/scanbd# scanbd -f -d7
>> 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: drop privileges to gid: 121
>> scanbd: Running as effective gid 121
>> scanbd: drop privileges to uid: 120
>> scanbd: Running as effective uid 120
>> scanbd: dbus_init
>> scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
>> scanbd: Loading /usr/local/lib/scanbd/scanbuttond/backends/meta.so
>> scanbd: Loading /usr/local/lib/scanbd/scanbuttond/backends/genesys.so
>> scanbd: Scanning for local-only devices
>> scanbd: found device: CanoScan LiDE 60 Canon genesys:libusb:001:016
>> scanbd: start_scbtn_threads
>> scanbd: start the threads (1)
>> scanbd: Starting poll thread for CanoScan LiDE 60
>> scanbd: Thread started for device CanoScan LiDE 60
>> scanbd: start dbus thread
>> scanbd: scbtn_poll
>> scanbd: udev init
>> scanbd: get udev monitor
>> scanbd: udev fd is non-blocking, now setting to blocking mode
>> scanbd: start udev thread
>> scanbd: udev thread started
>> scanbd: timeout: 500 ms
>> scanbd: Iteration on dbus call
>> scanbd: found 15 options for device CanoScan LiDE 60
>> scanbd: sane_find_matching_options
>> scanbd: found 3 actions in section (null)
>> scanbd: checking action scan with filter: ^scan.*
>> scanbd: scanbtnd_button_name (1)
>> scanbd: scanbtnd_button_name, backend: Genesys USB
>> scanbd: found active option[0] scan for device CanoScan LiDE 60
>> scanbd: installing action scan (0) for CanoScan LiDE 60, option[0]: scan
>> as: test.script
>> scanbd: multiple actions allowed
>> scanbd: scanbtnd_button_name (2)
>> scanbd: scanbtnd_button_name, backend: Genesys USB
>> scanbd: found active option[1] copy for device CanoScan LiDE 60
>> scanbd: scanbtnd_button_name (3)
>> scanbd: scanbtnd_button_name, backend: Genesys USB
>> scanbd: found active option[2] email for device CanoScan LiDE 60
>> scanbd: scanbtnd_button_name (4)
>> scanbd: scanbtnd_button_name, backend: Genesys USB
>> scanbd: found active option[3] pdf for device CanoScan LiDE 60
>> scanbd: scanbtnd_button_name (5)
>> scanbd: scanbtnd_button_name, backend: Genesys USB
>> scanbd: found active option[4] stop for device CanoScan LiDE 60
>> scanbd: scanbtnd_button_name (6)
>> scanbd: scanbtnd_button_name, backend: Genesys USB
>> scanbd: scanbuttond_wrapper.c:1066: scanbtnd_button_name: Assertion
>> `button <= 5' failed.
>> Aborted
>>
>> Of course there are only 4 buttons physically, plus one hidden reset
>> button. Now i am unsure whether simply to edit the source code in order to
>> remove the assertion. My feeling is it might work then.
>>
>> Regards,
>>   
>>    Florian/
>>
>> /Am 15.04.2017 um 12:26 schrieb Wilhelm Meier:
>>> Hi Florian,
>>>
>>> scanbd totally relies on libsane to read the option (button) values. It
>>> is known, that some backends aren't capable doing this ...
>>>
>>> For the Lide60 you can try uing the old scanbuttond backends included in
>>> the scanbd source tree. See the ReadMe.txt for instructions please.
>>>
>>>
>>>
>>> Am 15.04.2017 um 10:44 schrieb Florian Gagel:
>>>> Hi,
>>>>
>>>> my LiDE60 is working well, either directly using scanimage with scanbd
>>>> not running, as "genesys:libusb:001:016" or with running scanbd using
>>>> xinetd as "net:localhost:genesys:libusb:001:016".
>>>> However, none of the four buttons seem to be recognized:
>>>>
>>>> root at gandroid:/usr/local/etc/scanbd# scanbd -f -d7
>>>> 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: drop privileges to gid: 121
>>>> scanbd: Running as effective gid 121
>>>> scanbd: drop privileges to uid: 120
>>>> scanbd: Running as effective uid 120
>>>> scanbd: dbus_init
>>>> scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
>>>> scanbd: SANE_CONFIG_DIR=/usr/local/etc/scanbd
>>>> scanbd: sane version 1.0
>>>> scanbd: Scanning for local-only devices
>>>> scanbd: found device: genesys:libusb:001:016 Canon LiDE 60 flatbed scanner
>>>> scanbd: start_sane_threads
>>>> scanbd: Starting poll thread for genesys:libusb:001:016
>>>> scanbd: Thread started for device genesys:libusb:001:016
>>>> scanbd: sane_poll
>>>> scanbd: start dbus thread
>>>> scanbd: udev init
>>>> scanbd: get udev monitor
>>>> scanbd: udev fd is non-blocking, now setting to blocking mode
>>>> scanbd: start udev thread
>>>> scanbd: udev thread started
>>>> scanbd: timeout: 500 ms
>>>> scanbd: Iteration on dbus call
>>>> scanbd: Iteration on dbus call
>>>> scanbd: found 49 options for device genesys:libusb:001:016
>>>> scanbd: sane_find_matching_options
>>>> scanbd: found 5 actions in section (null)
>>>> scanbd: checking action scan with filter: ^scan.*
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: checking action email with filter: ^email$
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: checking action copy with filter: ^copy$
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: checking action preview with filter: ^preview$
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: installing action preview (0) for genesys:libusb:001:016,
>>>> option[4]: preview as: test.script
>>>> scanbd: multiple actions allowed
>>>> scanbd: get_sane_option_value
>>>> scanbd: Initial value of option preview is 0
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: checking action globaltest with filter: ^message.*
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: sane_find_matching_functions
>>>> scanbd: found 2 functions in section (null)
>>>> scanbd: checking function function_knob with filter: ^message.*
>>>> scanbd: option[1] has no name
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[3] is not active
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[7] has no name
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[12] has no name
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[14] is not active
>>>> scanbd: option[15] is not active
>>>> scanbd: option[16] is not active
>>>> scanbd: option[17] is not active
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[26] has no name
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[36] has no name
>>>> scanbd: option[37] is not active
>>>> scanbd: option[38] is not active
>>>> scanbd: option[39] is not active
>>>> scanbd: option[40] is not active
>>>> scanbd: option[41] is not active
>>>> scanbd: option[42] is not active
>>>> scanbd: option[43] is not active
>>>> scanbd: option[44] is not active
>>>> scanbd: option[45] is not active
>>>> scanbd: option[46] has no name
>>>> scanbd: option[47] is not active
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: checking function function_mode with filter: ^mode.*
>>>> scanbd: option[1] has no name
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: installing function function_mode for genesys:libusb:001:016,
>>>> option[2]: mode as env: SCANBD_FUNCTION_MODE
>>>> scanbd: option[3] is not active
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[7] has no name
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[12] has no name
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[14] is not active
>>>> scanbd: option[15] is not active
>>>> scanbd: option[16] is not active
>>>> scanbd: option[17] is not active
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[26] has no name
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: option[36] has no name
>>>> scanbd: option[37] is not active
>>>> scanbd: option[38] is not active
>>>> scanbd: option[39] is not active
>>>> scanbd: option[40] is not active
>>>> scanbd: option[41] is not active
>>>> scanbd: option[42] is not active
>>>> scanbd: option[43] is not active
>>>> scanbd: option[44] is not active
>>>> scanbd: option[45] is not active
>>>> scanbd: option[46] has no name
>>>> scanbd: option[47] is not active
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found 6 local device sections
>>>> scanbd: checking device section avision with filter: ^avision.*
>>>> scanbd: checking device section fujitsu with filter: ^fujitsu.*
>>>> scanbd: checking device section hp with filter: ^hpaio.*
>>>> scanbd: checking device section pixma with filter: ^pixma.*
>>>> scanbd: checking device section snapscan with filter:
>>>> (.*snapscan.*|.*Perfection.*)
>>>> scanbd: checking device section canon with filter: ^genesys.*
>>>> scanbd: found 1 local action for device genesys:libusb:001:016 [canon]
>>>> scanbd: sane_find_matching_options
>>>> scanbd: found 1 actions in section canon
>>>> scanbd: checking action file with filter: ^file.*
>>>> scanbd: found active option[2] mode (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[4] preview (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[5] depth (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>> device genesys:libusb:001:016
>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>> genesys:libusb:001:016
>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>> genesys:libusb:001:016
>>>> scanbd: sane_find_matching_functions
>>>> scanbd: no matching functions in section canon
>>>> scanbd: timeout: 500 ms
>>>> scanbd: Start the polling for device genesys:libusb:001:016
>>>> scanbd: polling thread for genesys:libusb:001:016, before cancellation point
>>>> scanbd: polling thread for genesys:libusb:001:016, after cancellation point
>>>> scanbd: polling device genesys:libusb:001:016
>>>> scanbd: get_sane_option_value
>>>> scanbd: checking option preview number 4 (0) for device
>>>> genesys:libusb:001:016: value: 0
>>>> scanbd: polling thread for genesys:libusb:001:016, before cancellation point
>>>> scanbd: polling thread for genesys:libusb:001:016, after cancellation point
>>>> scanbd: polling device genesys:libusb:001:016
>>>> scanbd: get_sane_option_value
>>>> scanbd: checking option preview number 4 (0) for device
>>>> genesys:libusb:001:016: value: 0
>>>> scanbd: Iteration on dbus call
>>>> scanbd: polling thread for genesys:libusb:001:016, before cancellation point
>>>> scanbd: polling thread for genesys:libusb:001:016, after cancellation point
>>>> scanbd: polling device genesys:libusb:001:016
>>>> scanbd: get_sane_option_value
>>>> scanbd: checking option preview number 4 (0) for device
>>>> genesys:libusb:001:016: value: 0
>>>> scanbd: polling thread for genesys:libusb:001:016, before cancellation point
>>>> scanbd: polling thread for genesys:libusb:001:016, after cancellation point
>>>> scanbd: polling device genesys:libusb:001:016
>>>> scanbd: get_sane_option_value
>>>> scanbd: checking option preview number 4 (0) for device
>>>> genesys:libusb:001:016: value: 0
>>>> scanbd: Iteration on dbus call
>>>> scanbd: polling thread for genesys:libusb:001:016, before cancellation point
>>>> scanbd: polling thread for genesys:libusb:001:016, after cancellation point
>>>> scanbd: polling device genesys:libusb:001:016
>>>> scanbd: get_sane_option_value
>>>> scanbd: checking option preview number 4 (0) for device
>>>> genesys:libusb:001:016: value: 0
>>>> scanbd: polling thread for genesys:libusb:001:016, before cancellation point
>>>> scanbd: polling thread for genesys:libusb:001:016, after cancellation point
>>>> scanbd: polling device genesys:libusb:001:016
>>>> scanbd: get_sane_option_value
>>>> scanbd: checking option preview number 4 (0) for device
>>>> genesys:libusb:001:016: value: 0
>>>> scanbd: Iteration on dbus call
>>>> scanbd: polling thread for genesys:libusb:001:016, before cancellation point
>>>> scanbd: polling thread for genesys:libusb:001:016, after cancellation point
>>>> scanbd: polling device genesys:libusb:001:016
>>>> scanbd: get_sane_option_value
>>>>
>>>>
>>>> My scanbd.conf:
>>>>
>>>> /*
>>>>   * $Id: scanbd.conf 237 2017-04-05 05:46:59Z wimalopaan $
>>>>   *
>>>>   *  scanbd - KMUX scanner button daemon
>>>>   *
>>>>   *  Copyright (C) 2008 - 2016 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
>>>>          group   = scanner
>>>>
>>>>          # the saned executable for manager-mode
>>>>          saned   = "/usr/sbin/saned"
>>>>          saned_opt  = {} # string-list
>>>>          saned_env  = { "SANE_CONFIG_DIR=/etc/scanbd" } # 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)
>>>> #include(scanner.d/plustek.conf)
>>>>
>>>>
>>>> I also commented out the include statements for the devices, tested
>>>> different sections for the options such as "preview", tried the default
>>>> Ubuntu-Package for 16.04 as well as the newest version 1.5.0 of scanbd.
>>>>
>>>> Syslog contains essentially the same output as scanbd -f -d7, no events
>>>> registered at all on button press. Scanimage -A also gave no evidence
>>>> for the presence of scanner buttons.
>>>>
>>>> For me it seems that the problem might be the scanner button options not
>>>> being recognized, strangely there are options "with no name" ?!
>>>>
>>>> Thanks very much for any hint !
>>>>
>>>>
>>>> Regards,
>>>>
>>>>
>>>>    Florian
>>>>
>>>>
>>>>
>>
>>
>




More information about the sane-devel mailing list