Hi Albert,

On Mittwoch, 26. November 2003 12:51, Albert ARIBAUD wrote:
[SNIPSNAP]
> > I simply turned the IO operations in the parport backend, and hoped, that
> > the scanner will work. The major problem is, that the GL640 allows
> > various ways on how a parport-ASIC can be connected, and therefore it is
> > almost impossible to directly "map" the former parport I/O functions to
> > USB I/O functions...
>
> Uhm. OK. :( How about reverse engineering the connections between the
> 98003 and the GL640? My brother is not a software guy indeed, but he can
> use an ohmmeter and help sort out things there.

I don't think, that we need this. In the end we don't have a pin-out for the
P98003. The only the we can compare are probably the connections to
the parport and GL640...

> > After all of these trials had no or minor success, I made some USB-snoop
> > loggings and noticed, that for this scanner almost only bulk-read and
> > -writes are used and so the whole parport-driver code needs to be
> > rewritten there. There are currently also some parts of the log, that I
> > do not understand...
>
> An outside eye might be helpful. Could you send me the logs together
> with an indication of what the scanner was asked to do at that time?

Here you are, the following sequence is interesting and representative,
because the data can be assigned to a function in the plustek_pp code
called p12ProgramCCD(). So this shows us, that single transfers on
plain parport are done via BULK transfers in the U12...

7       out down        0x02    12.861  BULK_OR_INTERRUPT_TRANSFER      2c 00 
39 3d 3a 06 3b 46
URB Header (length: 72)
SequenceNumber: 7
Function: 0009 (BULK_OR_INTERRUPT_TRANSFER)
TransferFlags: 0x00000002

TransferBuffer: 0x0000003a (58) length
0000: 2c 00 39 3d 3a 06 3b 46 3c 06 41 3d 42 92 43 01
0010: 44 13 45 13 46 f2 47 01 48 13 49 13 4a fa 4b 1b
0020: 4c 06 4d 06 4e 0b 50 23 51 06 52 06 53 0b 67 00
0030: 6f 30 70 06 60 17 61 9f 65 01
7       out up  0x02    12.862  BULK_OR_INTERRUPT_TRANSFER      -       
0x00000000
URB Header (length: 72)
SequenceNumber: 7
Function: 0009 (BULK_OR_INTERRUPT_TRANSFER)
TransferFlags: 0x00000002

No TransferBuffer

8       out down        0x00    12.872  VENDOR_DEVICE   01 11 00 00 08 00 00 00
URB Header (length: 80)
SequenceNumber: 8
Function: 0017 (VENDOR_DEVICE)
PipeHandle: 00000000

SetupPacket:
0000: 40 04 82 00 2c 00 00 00
bmRequestType: 40
  DIR: Host-To-Device
  TYPE: Vendor
  RECIPIENT: Device
bRequest: 04

TransferBuffer: 0x00000008 (8) length
0000: 01 11 00 00 08 00 00 00

This last transfer I do not understand. I can't identify it's meaning, but it
seems that all bulk transfers, are closed by such a 8 byte sequence. 
The only point where these sequences differ is position 5. Maybe somebody
out there has an idea?

Maybe we once get a driver ;-)

Gerhard


Reply via email to