[sane-devel] HP Scanjet 3690 support

Henning Meier-Geinitz henning@meier-geinitz.de
Thu, 15 Jan 2004 21:17:30 +0100


Hi,

On Wed, Jan 14, 2004 at 11:44:06PM +0100, adrianpj@users.sourceforge.net wrote:
>    Henning, could you take a look to the hp3670 SnoopyPro logs? It seems to
> follow the low level protocol of the gl646; at least the protocol in 
> genesys_bulk_write_register() (genesys_low.c:131):
> 
>   outdata[0] = BULK_OUT;          /* 0x01 */
>   outdata[1] = BULK_REGISTER;     /* 0x00 */
>   outdata[2] = 0x00;
>   outdata[3] = 0x00;
>   outdata[4] = (size & 0xff);          /* length of the bulk data stuff */
>   outdata[5] = ((size >> 8) & 0xff);
>   outdata[6] = ((size >> 16) & 0xff);
>   outdata[7] = ((size >> 24) & 0xff);

If that were all that's similar I wouldn't be sure. I think I have
seen SCSI-over-USB like protocols that are similar. Are the values
used for the actual control message the same (they can be found i the
"setup packet")? Do the register numbers and values make sense
according to the gl646 spec?

>   The logs are in http://www.alezan.org/hp3670/, in SnoopyPro binary format.  I 
> tried to use usblogdump in Linux but it doesn't work very well for me.  I had to
> analyze them in Windoze using SnoopyPro.

I'll check later. I don't have a working Windows or WINE installation
currently.

>   So maybe if sane-find-scanner.c ignores device descriptors and just probe
> the gl646 protocol using the present USB endpoints it will tell us if really
> HP3690, HP2300, HP2400 and maybe other scanners are based in such chipset?

You can try that for testing. But this can't be used in the published
version because control messages like that will confuse non-gl646
scanners. That's the reason we use the descriptor to identify the
chipset first and then send specific commands. That's not absolutely
safe either but better then writing directly.

Bye,
  Henning