Man Linux: Main Page and Category List


       sane-bh  -  SANE  backend  for  Bell+Howell Copiscan II series document


       The sane-bh library implements a SANE (Scanner Access Now Easy) backend
       that  provides  access  to  Bell+Howell  Copiscan  II  series  document
       scanners.  The Copiscan II 6338 has been the primary scanner model used
       during development and testing, but since the programming interface for
       the entire series  is  consistent  the  backend  should  work  for  the
       following scanner models.

              COPISCAN II 6338 Duplex Scanner with ACE
              COPISCAN II 2135 Simplex Scanner
              COPISCAN II 2137(A) Simplex Scanner (with ACE)
              COPISCAN II 2138A Simplex Scanner with ACE
              COPISCAN II 3238 Simplex Scanner
              COPISCAN II 3338(A) Simplex Scanner (with ACE)

       If  you  have  a  Bell+Howell scanner and are able to test it with this
       backend, please  contact  with  the
       model    number    and    testing    results.    Have    a    look   at concerning  subscription
       to sane-devel. Additionally, the author is curious as to the likelihood
       of using this backend with the newer 4000 and 8000 series scanners.  If
       you have such a beast, please let me know.

       The  Bell+Howell  Copiscan II series document scanners are high volume,
       high throughput scanners designed for document  scanning  applications.
       As  such, they are lineart/grayscale scanners supporting a fixed number
       of fairly low resolutions (e.g. 200/240/300dpi).  However, they do have
       a number of interesting and useful features suited to needs of document
       imaging applications.  This backend attempts  to  support  as  many  of
       these features as possible.

       The  main  technical reference used in writing this backend is the Bell
       and Howell Copiscan II  Remote  SCSI  Controller  (RSC)  OEM  Technical
       Manual  Version  1.5.   The  Linux SCSI programming HOWTO, the SANE API
       documentation, and  SANE  source  code  were  also  extremely  valuable

       The  latest  backend  release, additional information and helpful hints
       are available from the backend homepage:


       This backend expects device names of the form:


       Where special is 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  takes a format such as /dev/sga or /dev/sg0, for example.
       See sane-scsi(5) for details.


       The contents of the bh.conf  file  is  a  list  of  device  names  that
       correspond  to  Bell+Howell  scanners.   See sane-scsi(5) on details of
       what constitutes a valid device name.   Additionally,  options  can  be
       specified;  these  lines  begin with the word "option".  Each option is
       described in detail below.  Empty lines and lines starting with a  hash
       mark (#) are ignored.


       The following options can be specified in the bh.conf file.

              This  option  prevents  the  backend  from  sending any optional
              frames.  This option may be useful when dealing  with  frontends
              which do not support these optional frames.  When this option is
              in effect, the data is sent in  a  SANE_FRAME_GRAY  frame.   The
              optional  frames  sent  by  this  backend  are: SANE_FRAME_G31D,
              SANE_FRAME_G32D,  SANE_FRAME_G42D  and  SANE_FRAME_TEXT.   These
              frames  are  generated  based  on  the  compression  and barcode
              options.  These frames are never sent in preview mode.

              This option is used for debugging purposes and its  use  is  not
              encouraged.  Essentially, it allows the backend to initialize in
              the absence of a scanner.  This is useful  for  development  and
              not  much  else.   This  option must be specified earlier in the
              configuration file than the devices which are to be "faked".


              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.
              E.g.,  a  value  of 255 requests all debug output to be printed.
              Smaller levels reduce verbosity.


       ADF support
              With document scanners, automatic document feeder (ADF)  support
              is  a  key feature.  The backend supports the ADF by default and
              returns SANE_STATUS_NO_DOCS when the out-of-paper  condition  is
              detected.   The SANE frontend scanadf is a command line frontend
              that supports multi-page scans.  It has been  used  successfully
              with  this  backend.  The SANE frontend xsane is an improved GUI
              frontend by Oliver  Rauch.   Support  for  multi-page  scans  is
              included in xsane version 0.35 and above.

       Duplex scanning
              Some  models,  such  as  the  COPISCAN  II  6338, support duplex
              scanning.  That is, they scan both sides of the document  during
              a single pass through the scanner (the scanner has two cameras).
              This  backend  supports  duplex  scanning  (with  the   --duplex
              option).    The   front  and  back  page  images  are  delivered
              consecutively as if they were separately scanned pages.

       Hardware compression
              The scanner is capable of  compressing  the  data  into  several
              industry  standard  formats  (CCITT  G3, CCITT G3-2D, CCITT G4).
              This results in increased performance as  less  data  is  passed
              from  the  scanner  to  the host over the SCSI bus.  The backend
              supports these  compression  formats  via  the  --g31d,  --g32d,
              --g42d  options,  respectively.   Many  SANE  frontends  are not
              equipped to deal with these formats, however.  The SANE frontend
              scanadf  supports  these optional frame formats.  The compressed
              image data is written  directly  to  a  file  and  can  then  be
              processed  by  a  scan-script  using  the  --scan-script option.
              Examples of this are given on the scanadf homepage.

       Automatic Border Detection
              The scanner can automatically detect the paper size  and  adjust
              the   scanning   window  geometry  appropriately.   The  backend
              supports this useful feature with the --autoborder  option.   It
              is enabled by default.

       Batch Mode Scanning
              The  batch  scan  mode  allows  for maximum throughput.  The Set
              Window parameters must remain constant during the entire  batch.

       Icon Generation
              The  Icon function generates a thumbnail of the full page image,
              that can be transferred as if it were  a  separate  page.   This
              allows  the  host  to quickly display a thumbnail representation
              during the scanning operation.  Perhaps this would  be  a  great
              way  of  implementing a preview scan, but since a normal scan is
              so quick, it might not be worth the trouble.

       Multiple Sections
              Multiple sections (scanning sub-windows) can be defined for  the
              front   and   back  pages.   Each  section  can  have  different
              characteristics (e.g. geometry, compression).  The sections  are
              returned   as   if   they   were   separately   scanned  images.
              Additionally  sections  can  be  used  to  greatly  enhance  the
              accuracy   and  efficiency  of  the  barcode/patchcode  decoding
              process by limiting the search area to a  small  subset  of  the
              page.   Most  Copiscan  II series scanners support up to 8 user-
              defined sections.

       Support Barcode/Patchcode Decoding
              The RSC unit can recognize Bar and Patch Codes of various  types
              embedded  in  the  scanned image.  The codes are decoded and the
              data is returned to the frontend as a text frame.  The  text  is
              encoded  in  xml  and contains a great deal of information about
              the decoded data such as the location where it  was  found,  its
              orientation,  and the time it took to find.  Further information
              on the content of this  text  frame  as  well  as  some  barcode
              decoding examples can be found on the backend homepage.


       Decoding a single barcode type per scan
              The RSC unit can search for up to six different barcode types at
              a time.  While the code generally supports  this  as  well,  the
              --barcode-search-bar  option  only  allows the user to specify a
              single barcode type.  Perhaps  another  option  which  allows  a
              comma  separated  list  of  barcode type codes could be added to
              address this.

       Scanning a fixed number of pages in batch mode
              The separation of front  and  back  end  functionality  in  SANE
              presents   a   problem   in   supporting   the   ’cancel  batch’
              functionality in the scanner.  In batch  mode,  the  scanner  is
              always  a  page  ahead  of the host.  The host, knowing ahead of
              time which page will be the last, can cancel batch mode prior to
              initiating  the  last  scan  command.   Currently,  there  is no
              mechanism available for the frontend to pass this  knowledge  to
              the  backend.   If  batch  mode  is  enabled and the --end-count
              terminates a scanadf session,  an  extra  page  will  be  pulled
              through  the  scanner,  but is neither read nor delivered to the
              frontend.  The issue can be  avoided  by  specifying  --batch=no
              when scanning a fixed number of pages.

       Revision 1.2 Patch detector
              There  is an enhanced patchcode detection algorithm available in
              the RSC with revision 1.2 or higher  that  is  faster  and  more
              reliable  than the standard Bar/Patch code decoder.  This is not
              currently supported.


       Scan Mode Options:

       --preview[=(yes|no)] [no]
              Request a preview-quality scan.  When  preview  is  set  to  yes
              image  compression  is  disabled and the image is delivered in a
              SANE_FRAME_GRAY frame.

       --mode lineart|halftone [lineart]
              Selects the scan mode (e.g., lineart,monochrome, or color).

       --resolution 200|240|300dpi [200]
              Sets the resolution of the scanned image.   Each  scanner  model
              supports  a list of standard resolutions; only these resolutions
              can be used.

       --compression none|g31d|g32d|g42d [none]
              Sets the compression mode of the scanner.  Determines  the  type
              of data returned from the scanner.  Values are:
              none - uncompressed data - delivered in a SANE_FRAME_GRAY frame
              g31d   -   CCITT   G3   1   dimension  (MH)  -  delivered  in  a
              SANE_FRAME_G31D frame
              g32d - CCITT  G3  2  dimensions  (MR,  K=4)  -  delivered  in  a
              SANE_FRAME_G32D frame
              g42d - CCITT G4 (MMR) - delivered in a SANE_FRAME_G42D frame
              NOTE:  The use of g31d, g32d, and g42d compression values causes
              the backend to generate optional frame formats which may not  be
              supported by all SANE frontends.

       Geometry Options:

       --autoborder[=(yes|no)] [yes]
              Enable/Disable  automatic image border detection.  When enabled,
              the RSC unit automatically detects the image area and  sets  the
              window geometry to match.

       --paper-size Custom|Letter|Legal|A3|A4|A5|A6|B4|B5 [Custom]
              Specify the scan window geometry by specifying the paper size of
              the documents to be scanned.

       --tl-x 0..297.18mm [0]
              Top-left x position of scan area.

       --tl-y 0..431.8mm [0]
              Top-left y position of scan area.

       --br-x 0..297.18mm [297.18]
              Bottom-right x position of scan area.

       --br-y 0..431.8mm [431.8]
              Bottom-right y position of scan area.

       Feeder Options:

       --source Automatic Document Feeder|Manual Feed Tray [Automatic Document
              Selects the scan source  (such  as  a  document  feeder).   This
              option  is provided to allow multiple image scans with xsane; it
              has no other purpose.

       --batch[=(yes|no)] [no]
              Enable/disable batch mode scanning.  Batch mode allows  scanning
              at  maximum  throughput  by buffering within the RSC unit.  This
              option is recommended when performing multiple pages scans until
              the feeder is emptied.

       --duplex[=(yes|no)] [no]
              Enable duplex (dual-sided) scanning.  The scanner takes an image
              of each side of the document during a single  pass  through  the
              scanner.  The front page is delivered followed by the back page.
              Most options, such as compression, affect  both  the  front  and
              back pages.

       --timeout-adf 0..255 [0]
              Sets  the  timeout  in seconds for the automatic document feeder
              (ADF).  The value 0 specifies the hardware default  value  which
              varies based on the scanner model.

       --timeout-manual 0..255 [0]
              Sets  the  timeout  in  seconds  for semi-automatic feeder.  The
              value 0 specifies the hardware default value which varies  based
              on the scanner model.

       --check-adf[=(yes|no)] [no]
              Check  ADF  Status  prior  to  starting  scan  using  the OBJECT
              POSITION command.  Note that this feature requires RSC  firmware
              level 1.5 or higher and dip switch 4 must be in the on position.
              NOTE: This option  has  not  been  tested  extensively  and  may
              produce undesirable results.


       --control-panel[=(yes|no)] [yes]
              Enables   the   scanner’s  control  panel  for  selecting  image
              enhancement parameters.  When  the  option  is  set  to  no  the
              following  options  are  used to control image enhancement.  See
              the Bell+Howell scanner users’ guide for complete information on
              ACE functionality.

       --ace-function -4..4 [3]
              Specify the Automatic Contrast Enhancement (ACE) Function.

       --ace-sensitivity 0..9 [5]
              Specify the Automatic Contrast Enhancement (ACE) Sensitivity.

       --brightness 0..255 [0]
              Controls  the brightness of the acquired image.  Ignored for ACE
              capable scanners.

       --threshold 0..255 [0]
              Select minimum-brightness to get a white point.  Ignored for ACE
              capable scanners.

       --contrast 0..255 [inactive]
              Controls the contrast of the acquired image.  This option is not
              currently used by the scanner (and perhaps never will be).

       --negative[=(yes|no)] [no]
              Swap black and white, yielding a reverse-video image.


       --icon-width 0..3600pel (in steps of 8) [0]
              Width of icon (thumbnail) image in pixels.

       --icon-length 0..3600pel (in steps of 8) [0]
              Length of icon (thumbnail) image in pixels.

       Barcode Options:

       --barcode-search-bar <see list> [none]
              Specifies the barcode type to search for.  If this option is not
              specified,  or  specified with a value of none, then the barcode
              decoding feature is completely disabled.  The valid barcode type

       --barcode-search-count 1..7 [3]
              Number  of  times  that the RSC performs the decoding algorithm.
              Specify the smallest number possible  to  increase  performance.
              If  you are having trouble recognizing barcodes, it is suggested
              that you increase this option to its maximum value (7).

       --barcode-search-mode <see list> [horiz-vert]
              Chooses the orientation of barcodes to be searched.   The  valid
              orientations are:

       --barcode-hmin 0..1660mm [5]
              Sets  the  barcode  minimum height in millimeters (larger values
              increase recognition speed).  Of course the actual  barcodes  in
              the document must be of sufficient size.

       --barcode-search-timeout 20..65535us [10000]
              Sets  the  timeout  for barcode searching in milliseconds.  When
              the timeout expires, the decoder  will  stop  trying  to  decode

       --section <string> []
              Specifies  a series of image sections.  A section can be used to
              gather a subset image or to provide a  small  area  for  barcode
              decoding.   Each  section  is  specified in the following format
              (units are in millimeters):


       Multiple sections can be specified by separating them with commas.

       For example 76.2x25.4+50.8+0:frontbar identifies an area 3 inches  wide
       and  1  inch  high  with  a  top left corner at the top of the page two
       inches from the left hand edge of the page.  This section will be  used
       for barcode decoding on the front page only.

       For  example  50.8x25.4+25.4+0:frontbar:front:g42d identifies an area 2
       inches wide and 1 inch high with a top left corner at the  top  of  the
       page  one  inch from the left hand edge of the page.  This section will
       be used for barcode decoding on the front page as well as generating an
       image compressed in g42d format.

       Ordinarily  barcodes  are  searched in the entire image.  However, when
       you specify sections all barcode searching is done within the  specific
       sections  identified.   This  can  significantly  speed up the decoding

       The following functioncodes are available:
              front - generate an image for the front page section
              back - generate an image for the back page section
              frontbar - perform barcode search in front page section
              backbar - perform barcode search in back page section
              frontpatch - perform patchcode search in front page section
              backpatch - perform patchcode search in back page section
              none - use no image compression
              g31d - use Group 3 1 dimension image compression
              g32d - use Group 3 2 dimensions image compression
              g42d - use Group 4 2 dimensions image compression

       If you omit a  compression  functioncode,  the  full  page  compression
       setting  is  used.   If you specify multiple compression functioncodes,
       only the last one is used.

       --barcode-relmax 0..255 [0]
              Specifies the maximum relation from the widest to  the  smallest

       --barcode-barmin 0..255 [0]
              Specifies the minimum number of bars in Bar/Patch code.

       --barcode-barmax 0..255 [0]
              Specifies the maximum number of bars in a Bar/Patch code.

       --barcode-contrast 0..6 [3]
              Specifies  the  image  contrast  used  in  decoding.  Use higher
              values when there are more white pixels in the code.

       --barcode-patchmode 0..1 [0]
              Controls Patch Code detection.


       This is a new backend; detailed bug reports are welcome -- and expected

       If  you have found something that you think is a bug, please attempt to
       recreate it with the SANE_DEBUG_BH environment variable set to 255, and
       send   a  report  detailing  the  conditions  surrounding  the  bug  to


       sane(7), sane-scsi(5), scanimage(1), scanadf(1)


       The sane-bh backend was written by Tom Martone, based on the sane-ricoh
       backend   by   Feico  W.  Dillema  and  the  bnhscan  program  by  Sean
       Reifschneider of ltd.  Some 8000 enhancements added  by  Mark

                                  10 Jul 2008                       sane-bh(5)