[sane-devel] Insights from a newbie backend writer...
m. allan noah
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
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
> 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
> 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