Sane backend for ricoh scsi flatbed/adf scanners
The sane-hs2p library implements a SANE (Scanner Access Now Easy) backend that provides access to the Ricoh IS450 family of scanners. Should also work with the IS420, IS410, and IS430 scanners, but these are untested. Please contact the maintainer or the sane-devel mailing list if you own such a scanner.
This backend is alpha-quality. It may have bugs and some scanners haven't been tested at all. Be careful and pull the plug if the scanner causes unusual noise.
This backend expects device names of the form:
Where special is either the path-name for the special device that corresponds to a SCSI scanner. The program sane-find-scanner helps to find out the correct device. Under Linux, such a device name could be /dev/sg0 or /dev/sga, for example. See sane-scsi(5) for details.
The contents of the hs2p.conf file is a list of device names that correspond to SCSI scanners. Empty lines and lines starting with a hash mark (#) are ignored. See sane-scsi(5) on details of what constitutes a valid device name.
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. A value of 255 prints all debug output. Smaller values reduce verbosity.
The hs2p backend is now in version 1.00. All major scanning-related features are supported, except for those features requiring the optional IPU. Scanning from the flatbed or ADF (either simplex or duplex) is supported. Lineart, halftone, 4-bit gray, and 8-bit gray are supported. Pre-set gamma tables and halftone patterns are supported, as well as brightness, threshold, contrast. Also supported is scan wait mode, binary and gray filtering, negative scanning, and absolute or relative white setting. Printing with the optional endorser also is supported.
This scanner can scan from the ADF in continuous simplex mode. Surprisingly, many scanners scan an entire document from the ADF into memory before ejecting the sheet. Thus if the document is too long, the scanner cannot hold the entire image data in memory. But if the scanner would send its image data when its memory got full, and then read the next buffer's worth of data, continuous scanning could be achieved.
The SCSI commands for uploading (2AH) or downloading (28H) custom halftone patterns (02H) and gamma vectors (03H) should work, but require implementing the SANE Option-Value code to allow the user to create the tables to be uploaded to the scanner. No support for Maintenance Data (80H) is planned as this functionality is more suited to a stand-alone utility to be used by a technician when replacing the lamp or ADF unit. Nor is support for reading or changing IPU (93H) parameters and adjustments planned, since my IS450 lacks such a unit. The 31-byte Auto Photo/Letter struct and 21-byte Dynamic threshold struct are documented in the hs2p-scsi.h file should someone wish to use their IPU for image data processing.