#

# sane-apple.5

    sane-apple(5)            SANE Scanner Access Now Easy            sane-apple(5)

## NAME

           sane-apple - SANE backend for Apple flatbed scanners

## DESCRIPTION

           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
           sane-devel@lists.alioth.debian.org.                                 See
           http://www.sane-project.org/mailing-lists.html  for  details  on how to
           subscribe to sane-devel.

## DEVICE NAMES

           This backend expects device names of the form:

                  special

           Where special is either the path-name for the special device that  cor-
           responds  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.

## CONFIGURATION

           The contents of the apple.conf file is a list  of  options  and  device
           names  that correspond to Apple scanners.  Empty lines and lines start-
           ing 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 ADAPTER TIPS

           SCSI scanners are typically delivered with an ISA SCSI adapter.  Unfor-
           tunately,  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 interrupt line, scanning will put so much load on the sys-
           tem, that it becomes almost unusable for other tasks.

## FILES

           /usr/local/etc/sane.d/apple.conf
                  The  backend  configuration  file  (see  also   description   of
                  SANE_CONFIG_DIR below).

           /usr/local/lib/sane/libsane-apple.a
                  The static library implementing this backend.

           /usr/local/lib/sane/libsane-apple.so
                  The shared library implementing this backend (present on systems
                  that support dynamic loading).

## ENVIRONMENT

           SANE_CONFIG_DIR
                  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 config-
                  uration file is searched in two default directories: first,  the
                  current     working     directory     (".")    and    then    in
                  /usr/local/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 directo-
                  ries.   For  example,  setting SANE_CONFIG_DIR to "/tmp/config:"
                  would   result   in   directories   "tmp/config",    ".",    and
                  "/usr/local/etc/sane.d" being searched (in this order).

           SANE_DEBUG_APPLE
                  If  the  library  was  compiled with debug support enabled, this
                  environment variable controls the debug level for this  backend.
                  E.g.,  a  value  of 255 requests all debug output to be printed.
                  Smaller levels reduce verbosity.

## CURRENT STATUS

           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, ColorOneS-
           canner) I can only develop/test for the AppleScanner effectively.  How-
           ever  with this release I almost complete 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. AppleS-
           canner is of course almost fully supported.

## MISSING FUNCTIONALITY

           Currently all 3 models are lacking upload/dowload support.

           AppleScanner
                  Cannot up/download a halftone pattern.

           OneScanner
                  Cannot up/download halftone pattern and calibration vector.

           ColorOneScanner
                  Cannot up/download halftone pattern, calibration vectors, custom
                  Color  Correction Table (CCT) and of course custom gamma tables.

           Park/UnPark (OneScanner, ColorOneScanner)

           The above functionalities are not only missing because I don't actually
           have  the  hardware  to experiment on it. Another reason is the lack of
           understanding of how SANE API could provide enaugh means to me to actu-
           ally describe other array types than the gamma one.

## UNSUPPORTED FEATURES.

           The  following  "features"  will  never  be supported. At least as I am
           maintaining 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 dimen-
                  sional 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 it if you could intermix
                  different options for different windows (scan areas).  This  way
                  you  could scan a document in LineArt mode but the figures in it
                  on Gray and in a different resolution.   Unfortunately  this  is
                  impossible.

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

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

## BUGS

           The bugs in a sane backend 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 itself
           when it should (active) or vice versa. To find out which parameters are
           active  accross  various  Apple modes and models from the documentation
           ftp://ftpdev.info.apple.com/devworld/Technical_Documentation/Peripher-
           als_Documentation/ is an interesting exercise. I may missed some depen-
           dancies. For example for the threshold  parameter  the  Apple  Scanners
           Programming  guide  says nothing. I had to assume that is valid only in
           LineArt mode.

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

           Other source of bugs are due to scsi communcation,  scsi  connects  and
           disconnects.  However  the  classical  bugs are still there. So you may
           encouter 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 are from the preview window, or by hand typing the num-
                  bers 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, that the
                  backend's options panel to exceed from your screen.  It  happens
                  with  mine  and I am running at 1024x768 my X Server. 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...

## DEBUG

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

           It  would be very helpfull if you have handy an Apple machine (I am not
           sure  how  Mackintoshs  are  spelled)  with  the  AppleScanners  driver
           installed and check what option are grayed out (inactive) in what modes
           and report back to me.

           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 offer some help, or you are a
           sane developer and you just want to take a look at how the apple  back-
           end  looks  like.  Goto  to  apple.h and #define the NEUTRALIZE_BACKEND
           macro. You can select the scanner model through the  APPLE_MODEL_SELECT
           macro. Available options are APPLESCANNER, ONESCANNER, COLORONESCANNER.

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

## TODO

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

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

           Missing Functionality.

## SEE ALSO

           sane(7), sane-scsi(5)

## AUTHOR

           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

    sane-backends 1.0.12-cvs          13 May 1998                    sane-apple(5)