sane-genesys  -  SANE  backend for GL646, GL841, GL843, GL847 and GL124
   based USB flatbed scanners


   The sane-genesys library implements a SANE (Scanner  Access  Now  Easy)
   backend  that  provides  access  to  USB  flatbed scanners based on the
   Genesys GL646, GL841, GL843, GL847 and GL124 chips.   At  present,  the
   following scanners are known to work with this backend:

          Canon LiDE 35/40/50/60/100/110/120/200/210/220/700
          Hewlett-Packard HP2300C/HP2400/HP3670/HP3690/G4010/G4050
          Medion MD5345/MD6228/MD6274
          Panasonic KV-SS080
          Plustek OpticBook 3600
          Pentax DSmobile 600
          Syscan/Ambir DocketPORT 467/485/487/665/685
          Visioneer           OneTouch          7100/Strobe          XP100
          Xerox Travel Scanner 100, OneTouch 2400

   This is stable software for supported models. But if you  test  new  or
   untested  scanners, keep your hand at the scanner's plug and unplug it,
   if the head bumps at the end of the scan area.

   If you own a scanner other than the ones listed above that  works  with
   this  backend,  please  let me know this by sending the scanner's exact
   model  name  and  the  USB   vendor   and   device   ids   (e.g.   from
   /proc/bus/usb/devices,  sane-find-scanner  or syslog) to the sane-devel
   mailing list. Even if the scanner's name  is  only  slightly  different
   from the models mentioned above, please let me know.

   If you own a scanner that isn't detected by the genesys backend but has
   a GL646, GL841, GL843, GL847 or GL124 chipset, you can try to add it to
   the backend.


   To give correct image quality, sheet fed scanners need to be calibrated
   using the calibration sheet sold with the scanner. To  do  calibration,
   you must insert this target in the feeder then start calibration either
   by passing the --calibrate option to scanimage or by  clicking  on  the
   available  'calibrate'  button in the 'advanced options' in a graphical
   frontend. The result of the calibration is stored in a file in the home
   directory  of  the  user  doing it.  If you plug the scanner in another
   machine or use it with another account, calibration  will  have  to  be
   redone,  unles  you  use  the  --calibration-file  option.   If no home
   directory is defined, USERAPPPROFILE will be used, then TMPDIR or  TMP.
   If  none  of  these directories exist, the backend will try to write in
   the current working directory. Flatbed scanners also make  use  of  the
   calibration  file  as  a  cache  to avoid calibration before each scan.
   Calibration file name is the name of the  scanner  model  if  only  one
   scanner  is  detected. In the case of several identical model, the file
   name will be the name of the logical USB device  name.  The  expiration
   time  manages  the time a calibration is valid in cache.  A value of -1
   means forever, 0 means no cache.


   --lamp-off-time number
                  The lamp will be turned off after  the  given  time  (in
          minutes). A value of 0 means that the lamp won't be turned off.

   --threshold percent
               0..100% (in steps of 1). Select minimum brightness to get a
          white point. Pixels whith brightness below that  value  will  be
          scanned as black.

   --brightness value
               -100..100  (in steps of 1). Set the brightness enhancement.
          0 for no enhancement, negative values  to  decrease  brigthness,
          and positive values to increase it.

   --contrast value
               -100..100  (in steps of 1). Set the contrast enhancement. 0
          for no enhancement, negative values to  decrease  contrast,  and
          positive values to increase it.

   --disable-interpolation yes|no
                  When   using   high  resolutions  where  the  horizontal
          resolution is smaller than vertical resolution, data is expanded
          by  software  to preserve picture geometry. This can be disabled
          by this option to get real scanned data.

   --disable-dynamic-lineart yes|no
                  Disable use of a software adaptive algorithm to generate
          lineart and rely on hardware lineart.

   --color-filter None|Red|Green|Blue
                  When  using gray or lineart this option selects the used
          color. Using a color filter will give  a  monochrome  scan.  CIS
          based  scanners  can to true gray when no filter (None value) is

                  The lamp will be turned off during the scan. Calibration
          is still done with lamp on.

                  Clear   calibration   cache   data,   triggering  a  new
          calibration for the device when the next scan will happen.

                  Specify the calibration file name to use. At  least  the
          directory  containing  the  file  must  exist, since it won't be
          created. This option is disabled if the backend is ran as  root.
          It  maybe  used  in  case  of  sheet-fed  scanners  to  share  a
          calibration file for several users.

                  Specify the time (in minutes) a  cached  calibration  is
          considered   valid.  If  older  than  the  given  value,  a  new
          calibration is done. A value  of  -1  means  no  expiration  and
          cached  value  are  kept  forever unless cleared by userwith the
          calibration clear option. A value of 0 means cache is disabled.

   Additionally, several 'software' options are exposed  by  the  backend.
   These  are  reimplementations  of  features provided natively by larger
   scanners, but running  on  the  host  computer.  This  enables  smaller
   machines  to have similar capabilities. Please note that these features
   are somewhat simplistic, and may not perform  as  well  as  the  native
   implementations.  Note  also  that  these features all require that the
   driver cache the entire image in memory.  This  will  almost  certainly
   result in a reduction of scanning speed.

               Requests  the driver to detect the extremities of the paper
          within the larger image, and crop the empty edges.

               Requests the driver to detect the  rotation  of  the  paper
          within the larger image, and counter the rotation.

   --swdespeck --despeck X
               Requests  the  driver to find and remove dots of X diameter
          or smaller from the image, and fill the space with  the  average
          surrounding color.

   --swskip 0..100% (in steps of 1) [0]
                  Request driver to discard pages with low numbers of dark

   --swderotate[=(yes|no)] [no]
                  Request driver to detect and  correct  90  degree  image


   This  backend  needs libusb-0.1.6 or later installed, and hasn't tested
   in other configuration than a linux kernel 2.6.9 or higher. However, it
   should  work  any  system  with  libusb  where  the SANE package can be
   compiled. For setting permissions and general USB information  look  at


   The contents of the genesys.conf file is a list of usb lines containing
   vendor and product ids that correspond to USB scanners.  The  file  can
   also  contain option lines.  Empty lines and lines starting with a hash
   mark (#) are ignored.  The scanners are autodetected by  usb  vendor_id
   product_id  statements  which  are  already included into genesys.conf.
   "vendor_id" and "product_id" are hexadecimal numbers that identify  the


          The   backend   configuration  file  (see  also  description  of
          SANE_CONFIG_DIR below).

          The static library implementing this backend.

          The shared library implementing this backend (present on systems
          that support dynamic loading).


          This environment variable specifies the list of directories that
          may contain the configuration file.  Under UNIX, the directories
          are  separated  by a colon (`:'), under OS/2, they are separated
          by a semi-colon  (`;').   If  this  variable  is  not  set,  the
          configuration  file  is  searched  in  two  default directories:
          first,  the  current  working  directory  (".")  and   then   in
          /etc/sane.d.  If the value of the environment variable ends with
          the directory separator character, then the default  directories
          are  searched  after  the explicitly specified directories.  For
          example, setting SANE_CONFIG_DIR to "/tmp/config:" would  result
          in   directories  "tmp/config",  ".",  and  "/etc/sane.d"  being
          searched (in this order).

          If the library was compiled with  debug  support  enabled,  this
          environment  variable controls the debug level for this backend.
          Higher debug levels increase the verbosity of the output. If the
          debug  level  is  set  to 1 or higher, some debug options become
          available that are normally hidden. Handle them with care.  This
          will print messages related to core genesys functions.

          This environment variable controls the debug level for low level
          functions common to all genesys ASICs.

          This environment variable  controls  the  debug  level  for  the
          specific GL646 code part.

          This  environment  variable  controls  the  debug  level for the
          specific GL841 code part.

          This environment variable  controls  the  debug  level  for  the
          specific GL843 code part.

          This  environment  variable  controls  the  debug  level for the
          specific GL847 code part.

          This environment variable  controls  the  debug  level  for  the
          specific GL124 code part.

          Example (full and highly verbose output for gl646):
          export SANE_DEBUG_GENESYS=255
          export SANE_DEBUG_GENESYS_LOW=255
          export SANE_DEBUG_GENESYS_GL646=255


   Jack  McGill  for donating several sheetfed and flatbed scanners, which
   made possible to add support for them in the genesys backend:
          Hewlett-Packard HP3670
          Visioneer Strobe XP100 (rev3)/XP200/XP300/Roadwarrior
          Canon LiDE 200
          Pentax DSmobile 600
          Syscan/Ambir DocketPORT 467/485/487/665/685
          Xerox Travel Scanner 100, Onetouch 2400

   cncsolutions ( sponsored  and  supported
   the work on the Panasonic KV-SS080.

   Brian  Paavo  from Benthic Science Limited for donating a Canoscan LiDE

   Dany Qumsiyeh for donating a Canoscan LiDE 210 and a LiDE 220.


   sane(7), sane-usb(5)


   Oliver Rauch
   Henning Meier-Geinitz <>
   Gerhard Jaeger <>
   Stphane Voltz <>
   Philipp Schmid <>
   Pierre Willenbrock <>
   Alexey Osipov <> for HP2400 final support


   Powersaving  isn't  implemented  for  gl646  based   scanner.   Dynamic
   (emulated  from  gray  data and with dithering) isn't enabled for gl646
   scanners. Hardware lineart is limited up to 600  dpi  for  gl847  based
   scanners, due to the way image sensors are built.

   This  backend  will  be much slower if not using libusb-1.0. So be sure
   that sane-backends is built with the --enable-libusb_1_0 option.


   For the LiDE 200, the scanned data at 4800 dpi is obtained "as is" from
   sensor.  It  seems  the  windows driver does some digital processing to
   improve it, which is not implemented in the backend.

                              4 Jul 2012                   sane-genesys(5)


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.