sane-fujitsu does not support "ADF Duplex" in scanimage or scanadf for ScanSnap ix500
I have been trying to set up my Fujitsu ScanSnap ix500 as an AirScan scanner using AirSane, and while (a) the scanner usually works perfectly in simple-scan
, (b) scanimage
reports the ix500 as having "ADF Duplex" as a source, and (c) scanning over the network using AirSane generally works, (a) scanning with scanimage
or scanadf
using the command line does not seem to support duplex scanning, and (b) the scanner appears to be reported to AirSane as a flatbed scanner.
The following is a lightly edited copy of some of my comments from my Issue ticket at the AirSane repository on GitHub.
Running scanimage --help --device-name [name]
gives me the following output:
$ scanimage --help --device-name 'fujitsu:ScanSnap iX500:1200753'
[standard --help
output removed]
Options specific to device `fujitsu:ScanSnap iX500:1200753':
Standard:
--source ADF Front|ADF Back|ADF Duplex [ADF Front]
Selects the scan source (such as a document-feeder).
--mode Lineart|Gray|Color [Lineart]
Selects the scan mode (e.g., lineart, monochrome, or color).
--resolution 50..600dpi (in steps of 1) [600]
Sets the resolution of the scanned image.
Geometry:
--page-width 0..221.121mm (in steps of 0.0211639) [215.872]
Specifies the width of the media. Required for automatic centering of
sheet-fed scans.
--page-height 0..876.695mm (in steps of 0.0211639) [279.364]
Specifies the height of the media.
-l 0..215.872mm (in steps of 0.0211639) [0]
Top-left x position of scan area.
-t 0..279.364mm (in steps of 0.0211639) [0]
Top-left y position of scan area.
-x 0..215.872mm (in steps of 0.0211639) [215.872]
Width of scan-area.
-y 0..279.364mm (in steps of 0.0211639) [279.364]
Height of scan-area.
Enhancement:
--brightness -127..127 (in steps of 1) [0]
Controls the brightness of the acquired image.
--contrast -127..127 (in steps of 1) [0]
Controls the contrast of the acquired image.
--threshold 0..255 (in steps of 1) [0]
Select minimum-brightness to get a white point
--rif[=(yes|no)] [no]
Reverse image format
--ht-type Default|Dither|Diffusion [inactive]
Control type of halftone filter
--ht-pattern 0..3 (in steps of 1) [inactive]
Control pattern of halftone filter
--emphasis -128..127 (in steps of 1) [0]
Negative to smooth or positive to sharpen image
--variance 0..255 (in steps of 1) [0]
Set SDTC variance rate (sensitivity), 0 equals 127
Advanced:
--ald[=(yes|no)] [no]
Scanner detects paper lower edge. May confuse some frontends.
--df-action Default|Continue|Stop [Default]
Action following double feed error
--df-skew[=(yes|no)] [inactive]
Enable double feed error due to skew
--df-thickness[=(yes|no)] [inactive]
Enable double feed error due to paper thickness
--df-length[=(yes|no)] [inactive]
Enable double feed error due to paper length
--df-diff Default|10mm|15mm|20mm [inactive]
Difference in page length to trigger double feed error
--bgcolor Default|White|Black [Default]
Set color of background for scans. May conflict with overscan option
--dropoutcolor Default|Red|Green|Blue [Default]
One-pass scanners use only one color during gray or binary scanning,
useful for colored paper or ink
--buffermode Default|Off|On [Off]
Request scanner to read pages quickly from ADF into internal memory
--prepick Default|Off|On [Default]
Request scanner to grab next page from ADF
--overscan Default|Off|On [Default]
Collect a few mm of background on top side of scan, before paper
enters ADF, and increase maximum scan area beyond paper size, to allow
collection on remaining sides. May conflict with bgcolor option
--sleeptimer 0..60 (in steps of 1) [0]
Time in minutes until the internal power supply switches to sleep mode
--offtimer 0..960 (in steps of 1) [240]
Time in minutes until the internal power supply switches the scanner
off. Will be rounded to nearest 15 minutes. Zero means never power off.
--lowmemory[=(yes|no)] [no]
Limit driver memory usage for use in embedded systems. Causes some
duplex transfers to alternate sides on each call to sane_read. Value of
option 'side' can be used to determine correct image. This option
should only be used with custom front-end software.
--swdeskew[=(yes|no)] [no]
Request driver to rotate skewed pages digitally.
--swdespeck 0..9 (in steps of 1) [0]
Maximum diameter of lone dots to remove from scan.
--swcrop[=(yes|no)] [no]
Request driver to remove border from pages digitally.
--swskip 0..100% (in steps of 0.100006) [0]
Request driver to discard pages with low percentage of dark pixels
Sensors:
Meanwhile, running scanimage
(and actually trying to run a scan) gives me the following:
$ scanimage -v -d 'fujitsu:ScanSnap iX500:1200753' -o scan.png
scanimage: scanning image of size 5096x6600 pixels at 1 bits/pixel
scanimage: acquiring gray frame
scanimage: read 4204200 bytes in total
(Note that it only scanned a single one-sided page with the default settings. It did, however, seem to accurately detect the page size, which is a feature of this particular scanner.)
As well as:
$ scanimage -v -d 'fujitsu:ScanSnap iX500:1200753' --source 'ADF Duplex' -o scan.png
scanimage: scanning image of size 5096x6600 pixels at 1 bits/pixel
scanimage: acquiring gray frame
scanimage: read 4204200 bytes in total
Even though I explicitly specified "ADF Duplex" as the source, scanimage
did not, in fact, actually create a duplex multi-page scan.
By contrast, here's the output of simple-scan
(in which I had previously specified in the GUI that it should do a duplex ADF scan with specific settings):
https://gist.github.com/elsiehupp/3f8d0ba14de1bb5695bfff3095d8cf75
(I manually saved the scan and quit simple-scan
via the GUI after it was done.)
At this point in my debugging, after significant back-and-forth with the AirSane developer, it seems to me that the problem is with sane-fujitsu
or scanimage
, given that AirSane only reproduces the information and functionality that sane
reports to it, while, again, simple-scan
works perfectly, with full ADF Duplex support.
It would be very nice to get this working! Again, there is further context in the AirSane Issue thread, but I only excerpted the most relevant bits here.