sane-bh - SANE backend for Bell+Howell Copiscan II series document scanners
Contents
Bugs
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-devel@alioth-lists.debian.net.
Configuration
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.
Description
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
sane-devel@alioth-lists.debian.net with the model number and testing results. Have a look at
http://www.sane-project.org/mailing-lists.html 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 BellandHowellCopiscanIIRemoteSCSIController(RSC)OEMTechnicalManualVersion1.5. The Linux SCSI programming HOWTO, the SANE API
documentation, and SANE source code were also extremely valuable resources.
The latest backend release, additional information and helpful hints are available from the backend
homepage:
http://www.martoneconsulting.com/sane-bh.html
Device Names
This backend expects device names of the form:
special
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.
Environment
SANE_CONFIG_DIR
This environment variable specifies the list of directories that may contain the configuration
file. On *NIX systems, 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).
SANE_DEBUG_BH
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.
Files
/etc/sane.d/bh.conf
The backend configuration file (see also description of SANE_CONFIG_DIR below).
/usr/lib/x86_64-linux-gnu/sane/libsane-bh.a
The static library implementing this backend.
/usr/lib/x86_64-linux-gnu/sane/libsane-bh.so
The shared library implementing this backend (present on systems that support dynamic loading).
Limitations
Decodingasinglebarcodetypeperscan
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.
Scanningafixednumberofpagesinbatchmode
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(1) 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.
Revision1.2Patchdetector
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.
Name
sane-bh - SANE backend for Bell+Howell Copiscan II series document scanners
Options
The following options can be specified in the bh.conf file:
disable-optional-frames
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.
fake-inquiry
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".
See Also
sane(7), sane-scsi(5), scanimage(1), scanadf(1), xsane(1)
Supported Features
ADFsupport
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(1) is a command line frontend that supports multi-page scans.
It has been used successfully with this backend. The SANE frontend xsane(1) is an improved GUI
frontend by Oliver Rauch. Support for multi-page scans is included in xsane version 0.35 and
above.
Duplexscanning
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.
Hardwarecompression
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(1) 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(1) homepage.
AutomaticBorderDetection
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.
BatchModeScanning
The batch scan mode allows for maximum throughput. The Set Window parameters must remain constant
during the entire batch.
IconGeneration
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.
MultipleSections
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.
SupportBarcode/PatchcodeDecoding
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.
