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

Wilhelm Meier wilhelm.wm.meier at googlemail.com
Sun Apr 16 18:38:00 UTC 2017


Am 16.04.2017 um 16:15 schrieb Florian Gagel:
> Hi Wilhelm,
> 
> thanks for your patch, works like a charm - I just had to made a small
> modification since
> the backend name inside the wrapper actually is "Genesys USB" (see below).

Thank you, Florian, for checking this once again. Just pushed this into
trunk!

> A minor hint for those who tinker around like me: Do no forget to turn
> debugging off in
> scanbd.conf when finished, otherwise syslog will overflow :-)
> 
> Regards,
> 
>   Florian
> 
> =============== cut here ================
> --- /usr/local/src/tmp/1.5.0/src/scanbd/scanbuttond_wrapper.c   
> 2017-04-05 05:46:59.000000000 +0000
> +++ scanbuttond_wrapper.c    2017-04-16 13:41:07.140209953 +0000
> @@ -1062,11 +1062,35 @@
>      assert(backend_name);
>      slog(SLOG_INFO, "scanbtnd_button_name, backend: %s", backend_name);
>  
> -    if (strcmp("snapscan", backend_name)) {
> -        assert(button <= 5);
> +    if (strncmp("Genesys", backend_name,7) == 0) {
>          switch(button) {
>          case 0:
> -            return NULL;
> +            return "zero";
> +            break;
> +        case 1:
> +            return "copy";
> +            break;
> +        case 2:
> +            return "scan";
> +            break;
> +        case 3:
> +            return "pdf";
> +            break;
> +        case 4:
> +            return "email";
> +            break;
> +        case 5:
> +            return "stop";
> +            break;
> +        default:
> +            return "default";
> +            break;
> +        }
> +    }
> +    else {
> +        switch(button) {
> +        case 0:
> +            return "zero";
>              break;
>          case 1:
>              return "scan"; // "web";
> @@ -1084,9 +1108,10 @@
>              return "stop";
>              break;
>          default:
> -            return NULL;
> +            return "default";
>              break;
>          }
> +       
>      }
>      return NULL;
>  }
> 
> 
> Am 16.04.2017 um 11:59 schrieb Wilhelm:
>> Am 15.04.2017 um 20:38 schrieb Florian Gagel:
>>> Hi Wilhelm,
>>>
>>> thanks, your modification made all four buttons work !
>> Great!
>>
>>> 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:
>> Please backout the last patch I sent and now apply the attached one.
>> This should mark your buttons with the right labels.
>>
>> If thats ok for you, I'll check this into trunk.
>>
>> Please report if teh patch is ok, or make your own modifications and
>> send the patch back to me to be inserted into trunk.
>>
>> Thanks for using scanbd.
>>
>> -- Wilhelm
>>
>>>  (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