[sane-devel] Canan CanoScan 8400F backend driver

Alejandro Imass ait at p2ee.org
Mon Aug 29 14:41:40 UTC 2011

On Mon, Aug 29, 2011 at 5:01 AM, Chris Molanus <chrismolanus at hotmail.com> wrote:
> Hi,
> I would like to attempt to create backend support for the Canon CanoScan
> 8400f Scanner.
> I am finding it difficult to to find information on how to start as I have
> never done this before.
> I can program in C but have no experience in writing back end drivers.
> Can anyone point me to some information are tell me a good place to start?
> Chris
> --

There are already some Canon ADF drivers that work pretty well. The
process is not that simple as there are a lot of details regarding
mechanical movements, sensors and there is always the possibility of
damage to the device while developing.

The usual method is to snoop the comm between the OS and the scanner
by using the officially supported driver in the supported OS, e.g. the
Windoze driver. Is the interface is USB you can use the USB Snoop
program and capture a sample scan of a black and white page and then a
color one. Your test subjects should be large rectangles of color
and/or black so it makes it easier to identify the image data block.

It's a painstaking job but you need to figure out the protocol first.
You will need background into many subjects of which C is probably the
least of your worries. Before you talk to the scanner in Linux you
need to understand about the USB subsystem, probably deal with libusb,
udev and/or hal (a.k.a. hell ;-) ) and many other layers of software
and options that Sane handles. Remember that Sane runs on many types
us *nix set-ups so there are *many* options and paths to talk to the

I wanted to build a driver myself a few years ago, but even with 23
years of work experience in the field, I decided to hire someone from
this list and then just helped to snoop, test, debug and even hack the
driver a little bit.  This experience taught me the basics of sane
driver building and hacking and I can now appreciate some of the
complexities of this. Of course, given enough time, you will
eventually become an expert, but at least in my case I usually don't
have much free time to head-bang at something that requires a very
wide of skills and I'd rather focus my time on the expertise I already
have. YMMV of course.

Your best option IMHO is to download the Sane and Sane Backends source
code and look at the existing Canon drivers. Who knows, the current
drivers may even work with the 8400f, and you could contact the author
of some of these drivers directly and perhaps they could dedicate some
one-to-one time which you'll probably have to pay for but in my case
it was completely worth it.

Hope this helps,

Alejandro Imass

More information about the sane-devel mailing list