[sane-devel] Canon MF8330

Teemu Suikki zuikkis at gmail.com
Sat Dec 3 15:06:55 UTC 2011


Ok,

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
dependant?

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..

--
Teemu




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
> fails..
>
> 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..
>
> --
> Teemu
>
>
> 2011/12/3 Teemu Suikki <zuikkis at gmail.com>:
>> Hi,
>>
>> I tried scanning smaller area, with
>>
>> SANE_DEBUG_PIXMA=25 scanimage -l100 -t100 -x50 -y50  --format=tiff
>>>test.tif 2>debug
>>
>> 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.
>>
>> --
>> Teemu
>>
>> 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]
>>> [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:
>>> http://zuik.org/sane/
>>>
>>> --
>>> Teemu Suikki
>>> http://www.ksportfinland.com
>>> http://www.z-power.fi/
>>
>>
>>
>> --
>> Teemu Suikki
>> http://www.ksportfinland.com
>> http://www.z-power.fi/
>
>
>
> --
> Teemu Suikki
> http://www.ksportfinland.com
> http://www.z-power.fi/



-- 
Teemu Suikki
http://www.ksportfinland.com
http://www.z-power.fi/



More information about the sane-devel mailing list