[sane-devel] Implementing Canon CanoScan D646U ex SANE driver?

m. allan noah anoah at pfeiffer.edu
Mon Dec 11 14:37:51 CET 2006

On Sun, 10 Dec 2006, ezzetabi wrote:

> Hi everyone, I am an owner of the Canon in subject.
> It is not supported by SANE atm, so I'd like to help implementing a driver 
> for it.
> Unfortunately I never worked on large projects or commercial quality 
> products, but studying at the university I have a good C++ knowledge 
> including advanced topics like multiple virtual inheritance, exception safe 
> coding...
> So, I guess SANE gives a common interface in form of a base abstract class 
> and it needs the specific implementations of every scanner. So the operating 
> system just need to know the SANE function and the virtual call system gives 
> the correct commands to the scanner... It is so?

uh- sane is written in C, not C++, so your terminology is a bit off, but a 
series of pre-processor manipulations of your source files combined with a
hidden dynamic loader, gives a similar effect to what you describe.

> Where can I find what I need to start? In the D646U page the chipset is 
> marked with a '?', should I open my scanner and check if the info is correct? 
> And overall, how can I know the commands my scanner understand?
> Any info is very welcome, please be verbose as you can...

read: http://www.sane-project.org/contrib.html
read: http://www.sane-project.org/backend-writing.txt
get: windows trace using benoits usb sniffer
get: chip info by openning scanner
write: tiny libusb prog that mimics the windows traffic
read: sane.ps from source distro
write: new or modified sane backend

at any and every one of the steps, its a good idea to post back to this 
list your findings, someone here may recognize part of the usb trace, for 


> Thanks.

"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

More information about the sane-devel mailing list