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 colour". 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 http://ug.ms.wits.ac.za/~jovanod/sm3800/index.html, 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ยข http://photos.yahoo.com/ph/print_splash
