[sane-devel] [PARTIALLY SOLVED] I/O error using saned over net
m. allan noah
kitno455 at gmail.com
Wed Nov 2 12:29:28 UTC 2011
The bigger question is why does the kds driver return
SANE_STATUS_JAMMED when the scanner is not jammed. Since it is closed
source, we cannot know.
allan
On Tue, Nov 1, 2011 at 11:42 PM, widman <widman at cecst.com> wrote:
> A recurring problem with using saned over the network is an
> incomprehensible "I/O error" with a variety of scanners. Using
> a fresh install of Ubuntu lucid 10.04 and a freshly compiled
> sane-backends 1.0.22, with a new Kodak i1210 scanner, I found
> the following:
> 1. Locally, scanimage -L
> detected the scanner correctly.
> 2. Locally, scanimage --device-name kds:i1210/i1220 --batch=foo%d.pnm
> scanned every page correctly into local files.
> 3. Locally, scanimage --device-name net:localhost:kds:i1210/i1220 --batch=foo%d.pnm
> failed with "scanimage: sane_read: Error during device I/O."
> 4. Over the net, scanimage --device-name net:<ip of server>:kds:i1210/i1220 --batch=foo%d.pnm
> failed with "scanimage: sane_read: Error during device I/O."
>
> The following patch fixes the 4th situation (but not the 3rd) imperfectly: the first
> scanned page is lost completely. However, if the length is not set to zero, the first
> two pages are mixed together and only the third and subsequent pages of a batch are
> scanned and transmitted correctly. The patched version of sane is installed into
> /usr/local/sbin/ and the file /etc/xinetd.d/saned is updated accordingly:
> # server = /usr/sbin/saned
> server = /usr/local/sbin/saned
>
> Thus, this patch allows the scanner to be used over the net using sane at the cost of
> having to place a placeholder sheet before the first page that is to be scanned (since
> the first scanned page is discarded, the placeholder is discarded and the first "real"
> sheet is the second in the batch to be scanned). The questions
> now are:
> 1) why is the status SANE_STATUS_JAMMED returned with loss of part of the first page?
> 2) What can be done about it?
> I do not think the Kodak i1210 scanner is responsible because it works flawlessly via
> its local usb connection and because the same error has been reported with other scanners.
> Please note that I did not test this patch by actually jamming the scanner to make sure
> it would signal the error.
>
> Thanks
>
> diff -rc sane-backends-1.0.22/frontend/saned.c sane-backends-1.0.22.new/frontend/saned.c
> *** sane-backends-1.0.22/frontend/saned.c 2010-12-01 17:49:58.000000000 -0600
> --- sane-backends-1.0.22.new/frontend/saned.c 2011-11-01 21:55:34.000000000 -0500
> ***************
> *** 1753,1758 ****
> --- 1753,1772 ----
> status = sane_read (be_handle, buf + reader, nbytes, &length);
> DBG (DBG_INFO,
> "do_scan: read %d bytes from scanner\n", length);
> + /* 2011-11-01 L Widman */
> + // for some reason, the first bufferful comes with status SANE_STATUS_JAMMED
> + // which is separate from the scanner being empty later, and the first page
> + // is not read completely.
> + // Setting the initial length to 0 essentially discards the first page and
> + // allows the remaining pages to be read and transmitted normally.
> + // Note that reader == 4 only during the first iteration unless it exceeds sizeof(buf)
> + if( (reader == 4) && (status == SANE_STATUS_JAMMED) ){
> + DBG (DBG_INFO,
> + "do_scan: accepting %d bytes from scanner despite status %s\n", length, sane_strstatus(status));
> + status = SANE_STATUS_GOOD;
> + length = 0;
> + }
> + /* 2011-11-01 L Widman */
>
> reset_watchdog ();
>
>
>
> --
> sane-devel mailing list: sane-devel at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel
> Unsubscribe: Send mail with subject "unsubscribe your_password"
> to sane-devel-request at lists.alioth.debian.org
>
--
"The truth is an offense, but not a sin"
More information about the sane-devel
mailing list