./unix/sane.txt

download original
SANE (scanner access now easy) -- scanner drivers for Unix systems

- user-space-based solution, no kernel modules involved

- SANE defines a hardware-independent API for accessing scanner
  devices (e.g. selecting a resolution/color depth, perform a scan for
  a selected region, etc)

- /SANE plugins/ implement this API for a specific backend (most often
  a specific scanner)

- SANE plugins are implemented as shared objects (.so files) which
  SANE-enabled applications (e.g. The GIMP, scanimage, xsane, ...)
  load into their address space

TODO: verify

- a special "plugin discovery" API is provided that apps use to
  enumerate available plugins and load specified ones. This API is
  implemented in a hardware-independent library and loads specified
  plugin via dlopen(2). This means Apps have to link only this library
  statically in order to use all available plugins

- a special "net" plugin is provided which can be used to access SANE
  plugins on other hosts on the network

  - those hosts must run the SANE daemon "saned", which makes the
    local plugins available over the net to the net plugin

  - a simple host-based access control scheme is provided (nothing
    sophisticated)

  - saned can be run over inetd/tcpd

  - a solution involving the net-plugin/saned may also be needed for
    some plugins which need root access in order to be able to access
    the scanner (since plugins are .sos and run in the context of the
    SANE-using application, that application would otherwise have to
    be running with root privileges)



PROBLEMS (Nov. 2003):

- insufficient documentation:

  - no explanation of the way backend discovery works

  - backend discovery via "dll" backend?

  - no explanation of the relation between sane-net and saned

  
back to unix

(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>