[sane-devel] Sane API

Alexander Pevzner pzz at apevzner.com
Thu Oct 22 13:39:18 BST 2020

Hi Johannes,

On 10/21/20 10:11 AM, Johannes Meixner wrote:
> Current SANE is not meant for users who use a professional network
> printer scanner copier all-in-one device but when in the future
> users of any kind of scanning device should be able to access them
> via one same user application then a future SANE version should be
> in compliance to work with such a generic scanning user frontend.

What, do you feel, is missed from SANE to support professional MFPs?

> I think for a remote network scanner a remote user may need
> to know the complete device status including things that are
> obvious for a user who is located next to the scanner device.

I'm not sure it can be done in reliable way and without a lot of testing 
against variety of hardware. If it cannot be done reliable, it is better 
not to do it at all, to avoid a lot of frustration.

> Technically I think what does not fit the UNIX multiuser model
> is the idea that something from remote can just trigger things on a 
> computer
> because that "something from remote" is not the boss of the computer.

If user, who owns desktop, explicitly subscribes to it, why not?

After all, if somebody sends you e-mail, it may trigger pop-up on your 
screen, though e-mail sender is not boss of your computer.

> Technically I think what would fit the UNIX multiuser model
> is that a particular user triggers the action he wants.
> So I think something like the following fits the UNIX multiuser model:

> Some user presses a button at a (possibly network) scanner device.
> This changes the scanner device status ("button X is activated").

Let me explain, JFYI, how push scanning implemented in the WSD world.

Computers, willing to accept incoming images, advertise their presence, 
using WS-Discovery protocol (UDP multicasting and so on, conceptually 
similar to DNS-SD, but totally incompatible).

Push-mode scanning is activated by pressing some buttons or choosing 
appropriate menu item at the scanner front panel. Scanner offers a list 
of computers to send image too (previously discovered via WS-Discovery).

When user chooses a destination device, some conversation between 
scanner and destination computer occurs. I didn't read this part of WSD 
specification in great details (it's very hard to read), but most 
likely, scanner sends ScanAvailableEvent:


On Windows, it is most likely handled by some system service, which 
notifies some GUI program, running in a context of current session to 
open appropriate GUI dialog.

After that, if all sides agreed, actual scanning begins.

BTW, briefly looking to the specs, I have an impression, that actual 
scanning happens in a pull mode. The only difference is that scanner 
sends ScanAvailableEvent to the host, when host is chosen at the 
scanner's front pannel.

Obviously, we can implement push scanning via polling scanner buttons, 
but only few backends allow to poll scanner buttons; it depends on the 
underlying protocol, offered by hardware. I believe, newest hardware 
will shift into the eSCL/WSD direction, and direct polling buttons will 
not be available. It is also not very secure.


	Wishes, Alexander Pevzner (pzz at apevzner.com)

More information about the sane-devel mailing list