Section: SANE Scanner Access Now Easy (5)
Updated: 4 Jul 2012
The sane-genesys library implements a SANE (Scanner Access Now Easy) backend that provides access to USB flatbed scanners based on the Genesys GL646, GL841, GL843, GL847 and GL124 chips. At present, the following scanners are known to work with this backend:
:Canon LiDE 35/40/50/60/100/110/200/210/700
Plustek OpticBook 3600
Pentax DSmobile 600
Syscan/Ambir DocketPORT 467/485/487/665/685
Visioneer OneTouch 7100/Strobe XP100 (rev3)/XP200/XP300/Roadwarrior
Xerox Travel Scanner 100, OneTouch 2400:
This is stable software for supported models. But if you test new or untested scanners, keep your hand at the scanner's plug and unplug it, if the head bumps at the end of the scan area.
If you own a scanner other than the ones listed above that works with this backend, please let me know this by sending the scanner's exact model name and the USB vendor and device ids (e.g. from /proc/bus/usb/devices, sane-find-scanner or syslog) to the sane-devel mailing list. Even if the scanner's name is only slightly different from the models mentioned above, please let me know.
If you own a scanner that isn't detected by the genesys backend but has a GL646, GL841, GL843, GL847 or GL124 chipset, you can try to add it to the backend.
To give correct image quality, sheet fed scanners need to be calibrated using the calibration sheet sold with the scanner. To do calibration, you must insert this target in the feeder then start calibration either by passing the --calibrate option to scanimage or by clicking on the available 'calibrate' button in the 'advanced options' in a graphical frontend. The result of the calibration is stored in a file in the home directory of the user doing it. If you plug the scanner in another machine or use it with another account, calibration will have to be redone.
The lamp will be turned off after the given time (in minutes). A value of 0 means that the lamp won't be turned off.:
0..100% (in steps of 1). Select minimum brightness to get a white point. Pixels
whith brightness below that value will be scanned as black.:
-100..100 (in steps of 1). Set the brightness enhancement. 0 for no enhancement, negative
values to decrease brigthness, and positive values to increase it.:
-100..100 (in steps of 1). Set the contrast enhancement. 0 for no enhancement, negative
values to decrease contrast, and positive values to increase it.:
When using high resolutions where the horizontal resolution is smaller than vertical resolution, data is expanded by software to preserve picture geometry. This can be disabled by this option to get real scanned data.:
Disable use of a software adaptive algorithm to generate lineart and rely on hardware lineart.:
When using gray or lineart this option selects the used color. Using a color filter will give a monochrome scan. CIS based scanners can to true gray when no filter (None value) is selected.:
The lamp will be turned off during the scan. Calibration is still done with lamp on.:
Clear calibration cache data, triggering a new calibration for the device when the next scan will happen.:
Specify the calibration file name to use. At least the directory containing the file must exist, since it won't be created. This allow to handle the case of several identical devices that would otherwise use the same calibration data. This option is disabled if the backend is ran as root.:
Additionally, several 'software' options are exposed by the backend. These are reimplementations of features provided natively by larger scanners, but running on the host computer. This enables smaller machines to have similar capabilities. Please note that these features are somewhat simplistic, and may not perform as well as the native implementations. Note also that these features all require that the driver cache the entire image in memory. This will almost certainly result in a reduction of scanning speed.
Requests the driver to detect the extremities of the paper within the larger
image, and crop the empty edges.:
Requests the driver to detect the rotation of the paper within the larger
image, and counter the rotation.:
--swdespeck --despeck X:
Requests the driver to find and remove dots of X diameter or smaller from the
image, and fill the space with the average surrounding color.:
--swskip 0..100% (in steps of 1) 
Request driver to discard pages with low numbers of dark pixels.:
Request driver to detect and correct 90 degree image rotation.:
This backend needs libusb-0.1.6 or later installed, and hasn't tested in other configuration than a linux kernel 2.6.9 or higher. However, it should work any system with libusb where the SANE package can be compiled. For setting permissions and general USB information look at sane-usb?(5).
The contents of the genesys.conf file is a list of usb lines containing vendor and product ids that correspond to USB scanners. The file can also contain option lines. Empty lines and lines starting with a hash mark (#) are ignored. The scanners are autodetected by usb vendor_id product_id statements which are already included into genesys.conf. "vendor_id" and "product_id" are hexadecimal numbers that identify the scanner.
Example (full and highly verbose output for gl646):
Jack McGill for donating several sheetfed and flatbed scanners, which made possible to add support for them in the genesys backend:
Visioneer Strobe XP100 (rev3)/XP200/XP300/Roadwarrior
Canon LiDE 200
Pentax DSmobile 600
Syscan/Ambir DocketPORT 467/485/487/665/685
Xerox Travel Scanner 100, Onetouch 2400:
Henning Meier-Geinitz <firstname.lastname@example.org>
Gerhard Jaeger <email@example.com>
Stéphane Voltz <firstname.lastname@example.org>
Philipp Schmid <email@example.com>
Pierre Willenbrock <firstname.lastname@example.org>
Alexey Osipov <email@example.com> for HP2400 final support
Powersaving isn't implemented for gl646 based scanner. Dynamic (emulated from gray data and with dithering) isn't enabled for gl646 scanners. Hardware lineart is limited up to 600 dpi for gl847 based scanners, due to the way image sensors are built.
For the LiDE 200, the scanned data at 4800 dpi is obtained "as is" from sensor. It seems the windows driver does some digital processing to improve it, which is not implemented in the backend.
Tutoriais de Tecnologia Web