[sane-devel] Microtek ScanMaker 3800 backend work-in-progress

Damjan Jovanovic dj015@yahoo.com
Mon, 19 Apr 2004 04:49:21 -0700 (PDT)

I've made quite a lot of progress with the SANE
backend for the Microtek ScanMaker 3800. I've finally
figured out how the USB control transfer setup packets
are formed (thank you for your help, Henning!), and I
can get the scanner to work under Linux (but only by
replaying the logs I've captured from the Windows
driver). I can even view the images from the scanner.
The problem is, I have absolutely no idea why it works
or what it does :-).

So far, I've managed to isolate the message to return
the scanner carriage to the beginning, which gives me
a way to implement sane_cancel(), but that's about it.
The differences between the logs from different
colours / resolutions / scan frames are scattered
throughout the logs and run into dozens of kilobytes.
If I were to simply copy the logs into a SANE backend,
the backend would be over a megabyte large and have no
options to set except "16-bit grayscale / 48-bit

For USB scanners that use both control messages and
bulk reads and writes to communicate, what do these
generally mean? Do the control messages read and write
registers while the bulk pipes read and write memory?
What is the usual meaning for bRequest, wValue,
wIndex, and wLength, and the data sent in a
"vendor-specific" control message? And how large are
scanner registers / memory generally?

Also, so far I've been using libusb. Should I switch
to the sanei_usb functions at some stage?

I'll set up a website with some
information/logs/scanning tools/progress at
can someone add it to the "PROJECTS" file that comes
with SANE?

Thank you
Damjan Jovanovic

Do you Yahoo!?
Yahoo! Photos: High-quality 4x6 digital prints for 25