[sane-devel] Canon MF8330
zuikkis at gmail.com
Sat Dec 3 15:06:55 UTC 2011
sorry for talking to myself. :)
It works now 100%. All resolutions work etc.
The problem was that in pixma_imageclass.c there is this define:
#define IMAGE_BLOCK_SIZE (0xffff)
MF8330 sends 0x1fff8 sized blocks, they don't fit. I increased
IMAGE_BLOCK_SIZE to 0x1fff and it's ok now. Should this be device
There's the current pixma_imageclass.c and a diff to the latest git
version in http://zuik.org/sane/
If anyone is listening and interested, you can add my changes to git..
2011/12/3 Teemu Suikki <zuikkis at gmail.com>:
> Hmm, no. I can scan any part of the paper, as long as the scan size is
> so small that the data fits under 65536 bytes. Anything higher
> I don't understand what happens, it all looks fine in the logs, until this:
> [pixma] read_image():reader task closed the pipe:0 bytes received,
> 1681920 bytes expected
> scanimage: sane_read: Error during device I/O
> This happens exactly when received data hits the 65536 bytes mark..
> Do other devices use >64k chunk sizes? is it possible that there is a
> 16bit counter used somewhere where it shouldn't..
> 2011/12/3 Teemu Suikki <zuikkis at gmail.com>:
>> I tried scanning smaller area, with
>> SANE_DEBUG_PIXMA=25 scanimage -l100 -t100 -x50 -y50 --format=tiff
>> And surprisingly it worked! :) Perfect scan. So probably the "full
>> page" settings are somehow out of bounds, I need to figure that out.
>> The scanner was "stuck" for maybe 30 seconds after the scan, saying
>> "scanning" even when the scan had already competed. I noticed that
>> windows driver always sends cmd_abort_session after scanning; adding
>> this fixed it on Sane as well.
>> Anyway, looks very promising now. I updated http://zuik.org/sane/ with
>> the latest files.
>> 2011/12/3 Teemu Suikki <zuikkis at gmail.com>:
>>> I now started digging this myself with UsbSnoop. MF8330 really is
>>> using this 0xd460 instead of 0xd420, as data transfer command.. I
>>> couldn't find any other big differences.
>>> I modified pixma_imageclass.c to use d460.. it almost seems to work,
>>> but there isn't enough data coming from the scanner. For full A4 scan
>>> at 75dpi, scanner only sends about 65536bytes of data total.. After
>>> that, scanimage reports:
>>> [pixma] read_image():reader task closed the pipe:0 bytes received,
>>> 1683840 bytes expected
>>> scanimage: sane_read: Error during device I/O
>>> Why does it say 0 bytes, it's actually 65536?
>>> Also in the log there are many "empty" data packets, that are not
>>> there on windows log:
>>> [pixma] OUT T=4.841 len=11
>>> [pixma] 00000000:d4 60 00 00 00 00 00 00 04 00 06
>>> [pixma] IN T=4.845 len=8
>>> [pixma] 00000000:06 06 00 00 00 00 00 00
>>> I have the UsbSnoop.log, sane debug output and the modified source available at:
>>> Teemu Suikki
>> Teemu Suikki
> Teemu Suikki
More information about the sane-devel