[sane-devel] Script to interpret USB logs for GL841 based scanners

John Dalton john.dalton at daltons.info
Wed Nov 23 04:24:39 UTC 2005


For the last couple of weeks I've been writing a script
to interpret the output of 'usbsniff' and a modified
version of 'parseusbsnoop.awk'.

This PERL script assumes a GL841 based scanner and is currently
to the point where is can convert a USB log into a sequence
of reads and writes to the various registers and bit fields
of a G841.  In the case of a register containing multiple
bit fields it also highlights the bit field which has been
modified.

I'm pushing ahead to get the script to recognise higher
level functions, which may or may not be specific to the
LiDE 60.

In case anyone is interested, I've put the script on my
website:
https://john.daltons.info/lide60/
Hopefully it will be useful to anyone working with GL841
based scanners.

Here is an example of the output for portion of an LiDE60's cyle
where it starts the scan and reads the image data from the
scanner:

---------- BEGIN CUT HERE----------------------------------------------
24253      :  216128ms   Start motor movement.
24254-24597:  216129ms  Wait for image buffer to contain data. ([0x41] bit 6)==1
24598-24603:  216474ms  [gl841:validword]     ->     564    Read number of bytes available to read from the image buffer (564) from the GL841.
24604-24609:  216480ms  [gl841:validword]     ->    1204    Read number of bytes available to read from the image buffer (1204) from the GL841.
24610-24615:  216486ms  [gl841:validword]     ->    1740    Read number of bytes available to read from the image buffer (1740) from the GL841.
24616-24621:  216492ms  [gl841:validword]     ->    2252    Read number of bytes available to read from the image buffer (2252) from the GL841.
24622      :  216498ms  Point to the read  port of the GL841 image buffer DRAM (address 0x45) in preparation for a bulk read.
24623-24725:  216499ms  Multiple reads from image buffer  (1678578 bytes)
24726      :  225445ms   0xa0 -> [gl841:scanner_setup]    Write scanner setup.
                                                                          *scan process                  : disable
                                                                           shading area                  : whole line
                                                                           DRAM size                     : 4Mx1
                                                                           DRAM size                     : 4M or 8M
                                                                           shading                       : enable
                                                                           watchdog timer (register 0x1e): disable
                                                                           scanner type                  : CIS
24727-24730:  225446ms   0b 11 0000 0010  -> [gpio18..9]   set GPIO18-9 to known state (includes pins which control motor?)
24731-24732:  225450ms  [gl841:motor_status] ->  0x03     Read motor status.
                                                                                                 *scanner mode: command
                                                                                                 *motor is    : moving
                                                                                                  motor speed : normal
24733-24734:  225452ms  [gl841:scanner_status] ->  0xf5     Read scanner status.
                                                                                                  motor is           : processing
                                                                                                  front end is       : not busy (ready to read/write)
                                                                                                  lamp is            : on
                                                                                                  scanner is position: not home
                                                                                                 *scanning is        : finished
                                                                                                  motor feeding      : finished
                                                                                                 *image buffer is    : empty
                                                                                                  power              : on
---------- END CUT HERE----------------------------------------------





More information about the sane-devel mailing list