[sane-devel] The HRP 8701 chip

Robert Brijder rbrijder at gmail.com
Tue Sep 11 20:01:08 UTC 2007


I spend a bit of time on the mysterious HRP 8701 chip found in a
number of scanners. I have the Compeye Simplex 1236C scanner myself
which contains this chip in addition to the PowerVision 8630 C1L, a
USB to parallel port converter. I made a log of the USB data send and
received when doing a preview scan using USB sniffer.

Fortunately, the PowerVision 8630 chip has been implemented in SANE.
Therefore I used the specifications of this chip to process the log
file and output the data send to and received from the HRP 8701. The
resulting file, the original log file, and the script can be found on
a page I created: http://www.liacs.nl/~rbrijder/sane/hrp8701.html.

My question is: When looking at the postprocessed log file, does
anybody notice any similarities with other chips (which may have a
SANE backend already)?? A few features can be seen immediately and are
given below. Please reply if you think this chip is similar to
something else.

Finally, on the SANE website a page is devoted to this (and other
similar) scanners. It is said that the scanner implements the HP
protocol using SCSI-over-parport and will work over the parport using
the ppscsi and epst modules
http://penguin-breeder.org/kernel/download/. I couldn't get the
scanner to work, and based on the postprocessed log file I think it is
unlikely that the HP protocol is used. Can anyone confirm that it does
or does not work?

Some properties of this chip
There are two special registers (these registers I think belong to the
PV8630): the status register and the mode register. In the log the
status register has always value 0xa0. The mode registers determines
the type of data transfer. Value 0x12 means normal transfer, and value
0x16 means bulk transfer. Also, value 0x13 is sometimes used.

The normal registers are numbered from 0x00 to 0x19 (thus 25 registers
in total). Although 0x08, 0x14, and 0x15 were not used in the log
(maybe never?). The meaning of a few of the registers is given below.
The syntax is "register number: register function".
    * 0: interface to ADC (which in my case is the LM9820)
    * 1: used for bulk read of scanned data
    * 5: MSB is busy signal?
    * 6: used for bulk write
    * 7: used for bulk write


More information about the sane-devel mailing list