[sane-devel] Insights from a newbie backend writer...

m. allan noah anoah@pfeiffer.edu
Sat, 9 Apr 2005 09:55:20 -0400 (EDT)

if it makes you feel any better, there are a dozen people on this list in 
the same boat. i dont know of any lawsuits that have occurred so far. in 
fact, the opposite might be more likely to be true, as vendors realize the 
utility of a package that means they dont have to write drivers for 
several platforms. i would expect support from some vendors to increase as 
time goes on. other vendors, especially those of cheap crap, may never 
come around.


On Fri, 8 Apr 2005, Fred Odendaal wrote:

> So, I'm thinking "I've got a degree in comp. sci. How difficult can it be to 
> write a scanner driver?" I leaf through the sane documentation - looks simple 
> enough! "Okay", I decide, "I'll do it!" Then I start looking for information 
> about my scanner - a Lexmark X1185. I start with  Lexmark. They've got a 
> Linux developer's kit. "Oh wow! This is going to be easier that I 
> thought...".
> Nope.
> The developer's kit only works with specific models of Lexmark scanners - not 
> mine, and is only compliant with really old versions of RH Linux. I'm using 
> FC3. The kit includes libraries for the low level drivers (they won't supply 
> the source code) and C++ code to interface between the low level drivers and 
> the sane backend code. "Yuck!"
> Okay, back to the drawing board. I go back to Lexmark and read their spec. 
> sheet. Later, I find you really can't trust the information in the spec. 
> sheet, which I find out after 4 rounds of emails with their help desk - I 
> don't think they really understood  the difference between resolution and 
> colour depth. The spec. sheet says 48-bit colour and 18-bit gray scale. Well, 
> the scanner never returns enough data to support this. Lexmark's claim is 
> that the scanner does this bitdepth internally and picks the best results 
> from the sample, but only sends 24-bit colour or  8-bit gray scale back to 
> the computer.
> Oh, as another interesting side bar - black and white scanning is not really 
> black and white. It's a gray scale scan that gets converted to black and 
> white. Also, the Windows driver lets you select a myriad of resolutions from 
> 72dpi up to 9600 dpi. The scanner really only does 75x75, 150x150, 300x300, 
> 600x600, 600x1200 dpi scans.
> So, eventually I find enough information from various sources. I found the 
> part number (rts8852C) of the scanner chip from the sane pages and the best 
> usb sniffer to use from this mailing list. As I dug a little further I found 
> there has been a lot of work already done on the predecessors to the rts8852, 
> the rts8801 and rts8891. I'm not sure why this isn't part of the sane 
> backends yet, but there is a sane web page at 
> http://hp44x0backend.sourceforge.net/ for several HP scanners that use these 
> chips.
> Finally after many Windows scans and log files at various different sizes, 
> resolutions, and colour or gray  scale mode I start writing the backend. It 
> only took me about 2 weeks before I could scan on Linux, but this is the easy 
> part! What I soon discovered is something called CALIBRATION. At 600x1200dpi 
> colour resolution the Windows driver actually does ~20 scans off to the side 
> of the glass flat bed. I have no idea what its doing. By looking at the usb 
> logs it appears to be setting the gain and the dc offset in a gradual fashion 
> over several calibration scans.
> Now I'm faced with a dilema. I ask myself - "Do I continue and try to reverse 
> engineer the Windows driver?" "Is this even legal?" I really can't see 
> progressing any further without taking a peak, but I'd really rather not get 
> sued. I've already looked at the .ini file used to configure the driver. I 
> wish I'd found it earlier. It's got a lot of valuable information in it, 
> which confirms what I've said above...
> I'd really like to continue. It's actually become a bit of an obsession with 
> me, but I'm also a realist.
> Anyone else faced a similar conundrum?
> Fred Odendaal

"so don't tell us it can't be done, putting down what you don't know.
money isn't our god, integrity will free our souls" - Max Cavalera