#

# sane-sharp.5

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

## NAME

           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  scanners.   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 cor-
           responds 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 settings:
                  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.

           Halftone  Pattern  (parameter --halftone-pattern for scanimage). Avail-
           able only for the JX-330 series scanners.  Possible 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 scan-
           ner 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 scanimage). 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 scanimage). 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 scanimage). 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. Allowed values:
                  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 automatic 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  scanim-
                  age);
                  bottom  right  y position of scan area (parameter -y for scanim-
                  age);

           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. Possible 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  lineart  color  scan
           mode. Possible values:
                  1..255
           The  default  value is 128.  This option is only available in scan mode
           color lineart.

           Threshold Green (parameter --threshold-green for scanimage).  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 begin-
           ning 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 second process is forked
           (switch USE_FORK in sharp.c ). This process reads the  scan  data  from
           the  scanner  and  writes this data into a block of shared memory.  The
           parent process 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 lim-
           ited  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 scan-
           ner are queued. At present, the Sane SCSI library supports queued  read
           commands  only for for Linux. For other operating systems, option read-
           queue should be set to 0. For Linux, option readqueue should be set  to
           2. Larger values than 2 for option readqueue are not reasonable in most
           cases.  option buffers should be greater than option readqueue.

## Performance Considarations

           This section focuses on the problem of stops of the scanner's  carriage
           during a scan. Carriage stops happen mainly with the JX-250. This scan-
           ner 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 reasons:

                  - 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 example, if hard
           disks are connected to the same SCSI bus as the scanner, and when  data
           transfer  from/to  these hard 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: Unfortunately, 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 pro-
           cess 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 situation is the
           access to the scanner via a 10 MBit Ethernet, 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 further process-
           ing  of  the  data  is  too  slow,   set   the   environment   variable
           SANE_DEBUG_SHARP  to 1. When a scan is finished, the backend writes the
           line "buffer full conditions: 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 processed by the frontend.
           (Please note that option buffers must be greater than option  readqueue
           in order to get useful output for "buffer full conditions".)

## FILES

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

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

           /usr/local/lib/sane/libsane-sharp.so
                  The shared library implementing this backend (present 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 carriage 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  scanner  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 situation 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  calibration,  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  Koe-
           berle

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

    sane-backends 1.0.12-cvs          21 Nov 2000                    sane-sharp(5)