sane-apple - SANE backend for Apple flatbed scanners


   The  sane-apple  library  implements  a  SANE (Scanner Access Now Easy)
   backend that provides access to Apple flatbed scanners. At present, the
   following scanners are supported from this backend:

   --------------- ----- ------------------ ------
   AppleScanner    4bit  16 Shades of Gray
   OneScanner      8bit  256 Shades of Gray
   ColorOneScanner 24bit RGB color          3-pass

   If  you own a Apple scanner other than the ones listed above that works
   with this backend, please let us know by sending  the  scanner's  model
   name,       SCSI       id,      and      firmware      revision      to                                 See  for  details  on how to
   subscribe to sane-devel.


   This backend expects device names of the form:


   Where special is either the  path-name  for  the  special  device  that
   corresponds  to  a  SCSI scanner. For SCSI scanners, the special device
   name must be a generic SCSI device or  a  symlink  to  such  a  device.
   Under  Linux,  such  a  device  name could be /dev/sga or /dev/sge, for
   example.  See sane-scsi(5) for details.


   The apple.conf file  is  a  list  of  options  and  device  names  that
   correspond  to  Apple  scanners.  Empty lines and lines starting with a
   hash mark (#)  are  ignored.   See  sane-scsi(5)  on  details  of  what
   constitutes a valid device name.

   Options  come  in  two  flavors:  global  and  positional ones.  Global
   options apply to all devices managed by the backend, whereas positional
   options  apply  just  to the most recently mentioned device.  Note that
   this means that the order in which the options appear matters!


   SCSI scanners  are  typically  delivered  with  an  ISA  SCSI  adapter.
   Unfortunately, that adapter is not worth much since it is not interrupt
   driven.  It is sometimes possible to get the supplied card to work, but
   without an interrupt line, scanning will put so much load on the system
   that it becomes almost unusable for other tasks.


          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 is  list  of  directories  where  SANE
          looks  for  the  configuration file.  Under UNIX directory names
          are separated by a colon  (`:'),  under  OS/2  by  a  semi-colon
          (`;').    If  SANE_CONFIG_DIR  is  not  set,  SANE  defaults  to
          searching  the  current  working  directory   (".")   and   then
          /etc/sane.d.   If  the  value  of $SANE_CONFIG_DIR ends with the
          separator character, the default directories are searched  after
          the  directory  list.   For  example, setting SANE_CONFIG_DIR to
          "/tmp/config:" would result in  directories  "tmp/config",  ".",
          and "/etc/sane.d" being searched (in that order).

          Controls  the  debug  level.   A  value  of 255 prints all debug
          output.  Smaller values reduce verbosity.   Requires  a  library
          compiled with debug support.


   The apple backend is now in version 0.3 (Tue Jul 21 1998). Since I only
   have  the  AppleScanner  and  not   the   other   models   (OneScanner,
   ColorOneScanner)   I   can   only  develop/test  for  the  AppleScanner
   effectively.  However with this release I almost completed the gui part
   of  all  scanners.   Most  of  the  functionality  is  there.  At least
   OneScanner should scan at the AppleScanner's compatible modes (LineArt,
   HalfTone,  Gray16).  My  personal belief is that with a slight touch of
   debugging the OneScanner could be actually usable. The  ColorOneScanner
   needs more work. AppleScanner is of course almost fully supported.


   Currently all three models lack upload/download support.

          Cannot up/download a halftone pattern.

          Cannot up/download halftone patterns or calibration vectors.

          Cannot   up/download  halftone  patterns,  calibration  vectors,
          custom Color Correction Tables (CCT) and of course custom  gamma

   Park/UnPark (OneScanner, ColorOneScanner)

   The above functionalities are missing because I don't have the hardware
   to experiment on.  Another reason is my lack of understanding as to how
   or  if  the  SANE  API provide means to describe any array type besides


   The following "features" will never be  supported,  at  least  while  I
   maintain the sane-apple backend.

   NoHome (AppleScanner)
          The  scanner  lamp  stays  on  and the carriage assembly remains
          where it stops at the end of the scan. After two minutes, if the
          scanner does not receive another SCAN command, the lamp goes off
          and the carriage returns to the home position.

   Compression (AppleScanner)
          The  Scanner  can  compress  data  with  CCITT  Group  III   one
          dimensional algorithm (fax) and the Skip White Line algorithm.

   Multiple Windows (AppleScanner)
          AppleScanner  may  support  multiple windows. It would be a cool
          feature and a challenge for me to  code  if  it  could  intermix
          different  options  for different windows (scan areas). This way
          it could scan a document in LineArt mode but the figures  in  it
          in  Gray  and  at a different resolution.  Unfortunately this is

   Scan Direction (OneScanner)
          It controls the scan direction. (?)

   Status/Reset Button (OneScanner)
          This option controls the status of the button on the  OneScanner
          model. You can also reset the button status by software.


   SANE  backend  bugs  are  divided  in two classes. We have GUI bugs and
   scanner specific bugs.

   We know we have a GUI bug when a parameter is not showing  up  when  it
   should  (active) or vice versa. Finding out which parameters are active
   across  various  Apple  modes  and  models   from   the   documentation
   is an interesting exercise. I may have missed  some  dependencies.  For
   example of the threshold parameter the Apple Scanners Programming Guide
   says nothing. I had to assume it is valid only in LineArt mode.

   Scanner specific bugs are mostly due to mandatory round-offs  in  order
   to scan. In the documentation in one place states that the width of the
   scan area should be a byte multiple. In another place it says that  the
   width of the scan area should be an even byte multiple. Go figure...

   Other  sources of bugs are due to scsi communication, scsi connects and
   disconnects. However the classical bugs are still  there.  So  you  may
   encounter  buffer  overruns,  null pointers, memory corruption and SANE
   API violations.

   SIGSEGV on SliceBars
          When you try to modify the scan area from the slice bar you have
          a  nice  little  cute core dump. I don't know why. If you select
          the scan area from the preview window  or  by  hand  typing  the
          numbers  everything  is  fine.  The  SIGSEGV happens deep in gtk
          library (gdk). I really cannot debug it.

   Options too much
          It is possible, especially  for  the  ColorOneScanner,  for  the
          backend's options panel to extend beyond your screen. It happens
          with mine and I am running my X Server at 1024x768. What  can  I
          say? Try smaller fonts in the X server, or virtual screens.

   Weird SCSI behaviour
          I am quoting David Myers Here...

          >> OS: FreeBSD 2.2.6
          >> CC: egcs-1.02
          Just  wanted to follow up on this...  I recently changed my SCSI
          card from the Adaptec  2940UW  to  a  dual-channel  Symbios  786
          chipset.   When I started up SANE with your driver, I managed to
          scan line art drawings okay, but Gray16 scans led to a stream of
          SCSI  error  messages  on the console, ultimately hanging with a
          message saying the scanner wasn't releasing the SCSI bus.   This
          may  be  that  the  Symbios  is  simply less tolerant of ancient
          hardware, or may be bugs in your driver or in SANE itself...


   If you encounter a  GUI  bug  please  set  the  environmental  variable
   SANE_DEBUG_APPLE  to 255 and rerun the exact sequence of keystrokes and
   menu selections to reproduce it. Then send me a  report  with  the  log

   If you have an Apple Macintosh with the AppleScanners driver installed,
   reporting to me which options are grayed out (inactive) in  what  modes
   would be very helpful.

   If  you  want  to  offer some help but you don't have a scanner, or you
   don't have the model you would like to help with, or  you  are  a  SANE
   developer  and  you  just  want to take a look at how the apple backend
   looks like, goto to apple.h and #define the  NEUTRALIZE_BACKEND  macro.
   You  can select the scanner model through the APPLE_MODEL_SELECT macro.

   If you encounter a SCSI bus error or trimmed  and/or  displaced  images
   please set the environment variable SANE_DEBUG_SANEI_SCSI to 255 before
   sending me the report.


   Non Blocking Support
          Make  sane-apple  a  non  blocking  backend.  Properly   support
          sane_set_io_mode and sane_get_select_fd

   Scan   Make scanning possible for all models in all supported modes.

   Missing Functionality


   sane(7), sane-scsi(5)


   The  sane-apple  backend was written not entirely from scratch by Milon
   Firikis. It is mostly based on the mustek backend from David  Mosberger
   and Andreas Czechanowski

                              11 Jul 2008                    sane-apple(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.