[sane-devel] Genesys GL846/847 trying to add new scanner

Stef stef.dev at free.fr
Sat Nov 3 09:13:05 UTC 2012


On 03/11/2012 09:36, Stef wrote:
> On 02/11/2012 21:13, Radoslav Kolev wrote:
>> Hi,
>>
>> we are trying to get a GL846 based scanner to work - Canon Image
>> Formula Flatbed Scanner Unit 101.
>>
>> I'm new to sane and scanners, so please excuse me if I'm asking some
>> simple/stupid questions.
>> Any pointers to documentation of any sort will be appreciated.
>>
>> So, I've captured a scan under windows. The raw log can be found here:
>> http://kolev.info/files/Image-formula-101-win-scan-raw-usbsnoop.log.gz
>>
>> I have run the following utility
>> (web.media.mit.edu/~mhirsch/lide100/usbsnoop-gl847.pl) to get a more
>> human readable version, the results are here:
>> http://kolev.info/files/Image-formula-101-win-scan.log.gz
>>
>> The above log file with some note's I've written trying to figure out
>> what's happening:
>> http://kolev.info/files/Image-formula-101-win-scan-annotated.log.gz
>>
>> The usbsnoop-gl847.pl spits out a lot of "unknown8e(33) = 0x00,
>> Unknown in register value 138,  Unknown out buffer value 139"
>> messages. I looked at the raw USB data and then after checking the
>> section /* USB control message values */ in genesys_low.h it seems
>> that some of these might be GPIO_READ requests, and I suspect another
>> part might be connected with talking to the FE.
>>
>> Where did the defines in the  /* USB control message values */ in
>> genesys_low.h come from? It's easy to find the GL846 datasheet online,
>> but there's nothing in there about the USB protocol. Was all this
>> reverse engineered or there's some document/source I've not found yet?
>> I can see in the source that register access is handled differently
>> for GL847 vs others, but I have no idea which of these defines are
>> relevant for which chip.
>>
>> When loaded with the gl847 backend there is some communication with
>> the scanner (lamp blinks during calibration) but no motor movement.
>>  From the usbsnoop logs I see that a motor phase table is loaded into
>> RAM and then the MPENB bit (Enable motor generating function which is
>> stored in memory) is set to high in register 0x08, which is not used
>> in any of the other scanners.  Is this something gl846/7 specific and
>> should I try to replicate this, or there's a better approach without
>> using a phase table in RAM?
>>
>> Other things that seem interesting from the snoop log file is that a
>> lot of GPIO toggling is going on, and also in higher GPIO numbers 25,
>> 26 27.
>>
>> Also, there are some bulk writes to address 0x10014000 and 4008 which
>> I can't figure out the reason for.
>>
>> Before the actual scan begins there is a pattern of setting some
>> registers and RAM, then reading RAM contents (image data?). My current
>> guess is this may be hunting for the page start on the scanner bed.
>>
>> So, that's about as far as we are now. Any ideas, suggestions or
>> pointers to information will be greatly appreciated.
>>
>> Best regards,
>> Radoslav Kolev
>>
>
>     Hello,
>
>     the only public documentation from genesys logic is the register 
> description you already found. Firmware functions have been reversed 
> engineered. When there are many reads and writes, it could be hardware 
> setting and polling and so GPIO related.
>
>     The MPENB use is a new feature that I haven't implemented in the 
> genesys backend, and will have to be added. Unless you create proper 
> slope tables and make this model work like the others.
>
>     Sometimes it is safe to drop some unidentified reads. For instance 
> I have found writes that could be image watermark with the CCD sensor 
> name. Sometimes you don't really find what they are for, but you have 
> to implement them to get the scanner working.
>
>     I have learned that a lot of experimenting and testing is needed 
> to get these scanner work. For instance I was blocked by an 
> undocumented register (or buggy write to a register) that was required 
> to get correct scanned data.
>
> Regards,
>     Stef
>
     Hello,

     a question comes to my mind. How did you find it is a GL846 scanner ?

Regards,
     Stef



More information about the sane-devel mailing list