sane-sharp - SANE backend for SHARP scanners


DESCRIPTION

       The  sane-sharp  library implements a SANE (Scanner Access
       Now Easy) backend that provides access to Sharp SCSI scan­
       ners.   This  backend  should  be  considered beta-quality
       software!  In the current state it is known to  work  with
       JX-610  and JX-250 scanners. It is prepared for usage with
       the JX-330 series scanners, but we are not able to test it
       with these devices.

       For other Sharp scanners, it may or may not work.

       At  present, the following scanners are known to work with
       this backend.

              Vendor    Product id:
              -----     -----------
              Sharp     JX-610
              Sharp     JX-250
              Sharp   JX-320
              Sharp   JX-330
              Sharp     JX-350

       The following scanners are detected by  the  backend,  but
       not tested:

              Vendor    Product id:
              -----     -----------
              Sharp     JX-325


DEVICE NAMES

       This backend expects device names of the form:

              special

       Where  special  is  either  the  path-name for the special
       device that corresponds to a  SCSI  scanner.  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.


SCAN OPTIONS

       Scan Mode (parameter --mode for scanimage). Possible  set­
       tings:
              Lineart (1 bit black & white scans),
              Gray (8 bit gray scale scans),
              Lineart Color (bi-level color scans),
              Color (8 bit RGB scans).
       The default value is Color.

       age). Available only for the JX-330 series scanners.  Pos­
       sible settings:
              none
              Dither Bayer
              Dither Spiral
              Dither Dispersed
              Error Diffusion
       The default value is none.

       Paper  Source  (parameter  --source  for  scanimage). This
       option is only available, if an automatic document  feeder
       or a transparency adapter is installed. Possible settings:
              Flatbed
              Automatic Document Feeder
              Transparency Adapter
       If an ADF or a transparency adapter is installed, using it
       is the default selection.

       Custom  Gamma  (parameter  --custom-gamma  for scanimage).
       This option determines  whether  a  builtin  or  a  custom
       gamma-table is used. Possible settings:
              yes enables custom gamma tables
              no enables a built gamma table

       Gamma  (parameter  --Gamma  for scanimage). This option is
       only available, if Custom Gamma is set  to  no.   Possible
       values:
              1.0
              2.2
       The  default  value is 2.2. (The JX-250 and JX-350 have no
       built in gamma correction;  for  these  scanner,  a  gamma
       table is downloaded to the scanner by the backend.)

       Gamma   Table  (parameter  --gamma-table  for  scanimage).
       Allowed values: 0..255; 256 numbers must be defined.   The
       default  values  are  0,  1, 2, .. 255 (i.e., gamma == 1).
       This table is only used for gray scale scans.

       Red Gamma Table (paramter  --red-gamma-table  for  scanim­
       age). Allowed values: 0..255; 256 numbers must be defined.
       The default values are 0, 1, 2, .. 255 (i.e., gamma == 1).

       Green  Gamma Table (paramter --green-gamma-table for scan­
       image).  Allowed  values:  0..255;  256  numbers  must  be
       defined.   The  default  values are 0, 1, 2, .. 255 (i.e.,
       gamma == 1).

       Blue Gamma Table (paramter --blue-gamma-table for  scanim­
       age). Allowed values: 0..255; 256 numbers must be defined.
       The default values are 0, 1, 2, .. 255 (i.e., gamma == 1).

       Resolution  in  pixel per inch (parameter --resolution for
       scanimage). Selects the resolution of the  scanned  image.

              30..600  (JX-330, JX-350 and JX-610) resp.  30..400
              (JX-250)
       The default value is 150.

       Scan Window

       The possible settings depend on the scanner model and, for
       the  JX-250 and the JX-350, also on the usage of the auto­
       matic document  feeder  resp.  the  transparency  adapter.
       Please  refer  to  the  values  allowed  by xscanimage, or
       xsane. With scanimage, enter one  of  the  following  com­
       mands:

              scanimage  -d  sharp  --source  "Automatic Document
              Feeder" --help

              scanimage -d sharp --source Flatbed --help

              scanimage -d sharp --source "Transparency  Adapter"
              --help

       in  order to see the allowed parameter values for the scan
       window.

       The scan window parameters are:

              Top-left x position of scan area (parameter -l  for
              scanimage);
              Top-left  y position of scan area (parameter -t for
              scanimage);
              bottom right x position of scan area (parameter  -x
              for scanimage);
              bottom  right y position of scan area (parameter -y
              for scanimage);

       Edge emphasis (parameter --Edge emphasis  for  scanimage).
       This  option  is  not  available  for  the  JX-250 and the
       JX-350.  Possible settings:
              None
              Middle
              Strong
              Blur
       The default value is None.

       Threshold (parameter --threshold for scanimage). Sets  the
       threshold for black and white pixels in lineart mode. Pos­
       sible values:
              1..255
       The default value is 128.  This option is  only  available
       in scan mode lineart.

       Threshold  Red  (parameter --threshold-red for scanimage).
       Sets the threshold for the red component of a pixel in  in

              1..255
       The  default  value is 128.  This option is only available
       in scan mode color lineart.

       Threshold Green (parameter --threshold-green  for  scanim­
       age).  Sets  the  threshold  for  the green component of a
       pixel in in lineart color scan mode. Possible values:
              1..255
       The default value is 128.  This option is  only  available
       in scan mode color lineart.

       Threshold Blue (parameter --threshold-blue for scanimage).
       Sets the threshold for the blue component of a pixel in in
       lineart color scan mode. Possible values:
              1..255
       The  default  value is 128.  This option is only available
       in scan mode color lineart.

       Light Color (parameter --LightColor for  scanimage).  Sets
       the color of the light source. Possible values:
              white
              red
              green
              blue
       The default value is white.  This option is only available
       in scan modes lineart color and color.


ADF USAGE

       If a paper jam occured,  the  maintenance  cover  must  be
       opened and closed, even if the jammed paper can be removed
       without opening  the  maintenance  cover.  Otherwise,  the
       error condition cannot be cleared.


CONFIGURATION

       The  contents  of the sharp.conf file is a list of options
       and device names that correspond to Sharp scanners.  Empty
       lines  and  lines  beginning  with  a  hash  mark  (#) are
       ignored. See sane-scsi(5) for details about device  names.

       Lines  setting  an  option start with the key word option,
       followed by the option's name and the option's  value.  At
       present,  three  options are defined: buffers, buffersize,
       and readqueue.

       Options defined at the start of sharp.conf  apply  to  all
       devices; options defined after a device name apply to this
       device.

       The options buffers and readqueue are only significant  if
       the backend has been compiled so that for each scan a sec­
       ond process is forked (switch USE_FORK in sharp.c ).  This

       this data into a block of shared memory.  The parent  pro­
       cess reads the data from this memory block and delivers it
       to the frontend. The options control the size and usage of
       this shared memory block.

       option  buffers  defines  the  number of buffers used. The
       smallest number allowed is 2.

       option buffersize defines the size of  one  buffer.  Since
       each  buffer  is filled with a single read command sent to
       the scanner, its size is limited automatically to the size
       allowed  by  the  operating  system  or  by  the Sane SCSI
       library for SCSI read commands. A buffer size of 128 kB or
       256  kB is recommended for scan resolutions of 300 dpi and
       above.

       option readqueue defines how many read commands to be sent
       to  the  scanner  are  queued.  At  present, the Sane SCSI
       library supports queued read commands only for for  Linux.
       For  other  operating  systems, option readqueue should be
       set to 0. For Linux, option readqueue should be set to  2.
       Larger  values than 2 for option readqueue are not reason­
       able in most cases.  option buffers should be greater than
       option readqueue.


Performance Considarations

       This  section focuses on the problem of stops of the scan­
       ner's carriage during a scan. Carriage stops happen mainly
       with  the  JX-250. This scanner has obviously only a small
       internal buffer compared to its speed. That means that the
       backend  must  read  the data as fast as possible from the
       scanner in order to avoid carriage stops.

       Even the JX-250 needs only less than 10 seconds for a  400
       dpi  A4  gray scale scan, which results in a data transfer
       rate of more than 1.6 MB per second. This means  that  the
       data  produced  by  the  scanner  must be processed fairly
       fast. Due to the small internal buffer of the JX-250,  the
       backend  must issue a read request for the next data block
       as soon as possible after reading a block of data in order
       to avoid carriage stops.

       Stops  of the carriage can be caused by the following rea­
       sons:

              - too much "traffic" on the SCSI bus
              - slow responses by the backend to the scanner,
              - a program which processes the data aquired by the
              backend too slow.

       Too much "traffic" on the SCSI bus: This happens for exam­
       ple, if hard disks are connected to the same SCSI  bus  as

       disks requires a considerable part of the  SCSI  bandwidth
       during a scan. If this is the case, you should consider to
       connect the scanner to a separate SCSI adapter.

       Slow responses by the backend  to  the  scanner:  Unfortu­
       nately, Unix-like operating systems generally have no real
       time capabilities.  Thus there is no  guarantee  that  the
       backend  is  under  any  circumstances able to communicate
       with the scanner as fast as  required.  To  minimize  this
       problem, the backend should be compiled so that a separate
       reader process is  forked:  Make  sure  that  USE_FORK  is
       defined  when  you  compile sharp.c.  If slow responses of
       the backend remain to be problem, you could try to  reduce
       the  load  of  the  system. Even while the backend and the
       reader process need only a minor amount of processor time,
       other  running processes can cause an increase in the time
       delay between two time slices given to the reader process.
       On  slower  systems, such an increased delay can be enough
       to cause a carriage stop with the JX-250.  For Linux,  the
       usage  of  the SG driver version 2.1.36 or above is recom­
       mended, because it supports, in combination with the  SCSI
       library of Sane version 1.0.2, command queueing within the
       kernel.  This queueing  implementation,  combined  with  a
       buffer size of at least 128 kB, should avoid most carirage
       stops.

       Slow processing of the scan data: An example for this sit­
       uation  is  the access to the scanner via a 10 MBit Ether­
       net, which is definitely too slow  to  transfer  the  scan
       data  as  fast as they are produced by the scanner. If you
       have enough memory  available,  you  can  increase  option
       buffers,  so  that  an entire image can be stored in these
       buffers.

       In order to see, if the backend is too slow or if the fur­
       ther  processing of the data is too slow, set the environ­
       ment variable SANE_DEBUG_SHARP to 1. When a scan  is  fin­
       ished,  the  backend  writes  the line "buffer full condi­
       tions: nn" to stderr. If nn is zero,  carriage  stops  are
       caused  by  too  slow responses of the backend or too much
       "traffic" on the SCSI bus. If nn is greater than zero, the
       backend  had to wait nn times until a buffer has been pro­
       cessed by the frontend. (Please note that  option  buffers
       must be greater than option readqueue in order to get use­
       ful output for "buffer full conditions".)


FILES

       /etc/sane.d/sharp.conf
              The backend configuration file.

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

              The shared library implementing this backend  (pre­
              sent on systems that support dynamic loading).


ENVIRONMENT

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


KNOWN PROBLEMS

       1. ADF Mode
              After several ADF scans, the scanner moves the car­
              riage back to the idle position  and  back  to  ADF
              scan  position,  before  a  scan  starts. We do not
              know, if this is a problem of the  scanner,  or  if
              this is a bug of the backend. At present, the scan­
              ner must power off and on  to  stop  this  annoying
              behaviour.

       2. Threshold level does not work (only JX-610)

       3.  The  maximum  resolution  is limited to 600 dpi(JX-610
       supported to 1200 dpi) resp. 400 dpi (JX-250)

       4. If the JX250 is used with an ADF, the following  situa­
       tion  can  occur:  After several scans, the scanner moves,
       after loading a new sheet of paper, the  carriage  to  the
       idle  position, and then back to the position used for ADF
       scans. This happens for every scan,  in  contrast  to  the
       calibration,  which is done after 10 scans. (For the cali­
       bration, the carriage is also moved to the idle position.)
       We do not know, if this behavior is caused by the backend,
       or if it is a bug in the firmware of the scanner.

       5. Usage of a transparency adapter  (film  scan  unit)  is
       supported, but not tested.


SEE ALSO

       sane(7), sane-scsi(5)


AUTHORS

       Kazuya Fukuda, Abel Deuring


CREDITS

       The Sharp backend is based on the Canon backend written by
       Helmut Koeberle

       Parts of this man page are a plain copy of  sane-mustek(5)
       by  David Mosberger-Tang, Andreas Czechanowski and Andreas
       Bolsch


Man(1) output converted with man2html