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

Wilhelm wilhelm.wm.meier at googlemail.com
Sat Apr 15 15:32:37 UTC 2017


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