sane−canon_dr − SANE backend for Canon DR-series scanners


The sane−canon_dr library implements a SANE (Scanner Access Now Easy) backend which provides access to some Canon DR-series scanners.

This document describes backend version 41, which shipped with SANE 1.0.24.


This version has only been tested with a few scanner models. Please see http://www.sane−−supported−devices.html for the most recent list.

This backend may support other Canon scanners. The best way to determine level of support is to test the scanner directly, or to collect a trace of the windows driver in action. Please contact the author for help or with test results.

In general, the larger machines (DR-4000 and up) which have been tested use a fairly complete protocol, with hardware support for many modes, resolutions and features. The smaller machines have many limitations, like missing horizontal resolutions, missing binary mode, always scanning full-width, etc. There is code in the backend to address these problems, but there seems to be no way to detect if they are required, so they must be hard-coded.


Effort has been made to expose most hardware options, including:

source s

Selects the source for the scan. Options may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".

mode m

Selects the mode for the scan. Options may include "Lineart", "Halftone", "Gray", and "Color".


Controls scan resolution.

tl−x, tl−y, br−x, br−y

Sets scan area upper left and lower right coordinates. These are renamed t, l, x, y by some frontends.

page−width, page−height

Sets paper size. Used by scanner to determine centering of scan coordinates when using ADF and to detect double feed errors.

Other options will be available based on the capabilities of the scanner: enhancement, compression, buttons and sensors, etc.

Additionally, several ’software’ options are exposed by the backend. These are reimplementations of features provided natively by larger scanners, but running on the host computer. This enables smaller machines to have similar capabilities. Please note that these features are somewhat simplistic, and may not perform as well as the native implementations. Note also that these features all require that the driver cache the entire image in memory. This will almost certainly result in a reduction of scanning speed.


Requests the driver to detect the extremities of the paper within the larger image, and crop the empty edges.


Requests the driver to detect the rotation of the paper within the larger image, and counter the rotation.

swdespeck X

Requests the driver to find and remove dots of X diameter or smaller from the image, and fill the space with the average surrounding color.

Use ’scanimage −−help’ to get a list, but be aware that some options may be settable only when another option has been set, and that advanced options may be hidden by some frontend programs.


The configuration file "canon_dr.conf" is used to tell the backend how to look for scanners, and provide options controlling the operation of the backend. This file is read each time the frontend asks the backend for a list of scanners, generally only when the frontend starts. If the configuration file is missing, the backend will fail to run.

Scanners can be specified in the configuration file in 4 ways:

"scsi CANON DR"

Requests backend to search all scsi busses in the system for a device which reports itself to be a scanner made by ’CANON’, with a model name starting with ’DR’.

"scsi /dev/sg0" (or other scsi device file)

Requests backend to open the named scsi device. Only useful if you have multiple compatible scanners connected to your system, and need to specify one. Probably should not be used with the other "scsi" line above.

"usb 0x04a9 0x1603" (or other vendor/product ids)

Requests backend to search all usb busses in the system for a device which uses that vendor and product id. The device will then be queried to determine if it is a Canon scanner.

"usb /dev/usb/scanner0" (or other device file)

Some systems use a kernel driver to access usb scanners. This method is untested.

Besides the ’scsi’ and ’usb’ lines, the configuration file supports the following ’option’ lines:

"option buffer-size [number of bytes]"

Set the number of bytes in the data buffer to something other than the compiled−in default of 4MB. Large values may cause timeouts or hangs, small values may cause slow scans.

Note: The backend does not place an upper bound on this value, as some users required it to be quite large. Values above the default are not recommended, and may crash your OS or lockup your scsi card driver. You have been warned.

"option vendor-name [string of text]"
"option model-name [string of text]"
"option version-name [string of text]"

These options can be used collectively to override the values provided by the scanner, or to provide the values when the scanner cannot.

"option padded-read [0|1]"

Some scanners prepend all data transmitted to host with 12 bytes. Enable this option if the scanner fails to respond to commands.

"option duplex-offset [integer]"

Some scanners pad the upper edge of one side of a duplex scan. There is some variation in the amount of padding. Modify this option if your unit shows an unwanted band of image data on only one side.

Note: ’option’ lines may appear multiple times in the configuration file. They only apply to scanners discovered by the next ’scsi/usb’ line.


The backend uses a single environment variable, SANE_DEBUG_CANON_DR, which enables debugging output to stderr. Valid values are:

5 Errors
10 Function trace
15 Function detail
20 Option commands
25 SCSI/USB trace
30 SCSI/USB detail
35 Useless noise


This backend was entirely reverse engineered from usb traces of the proprietary driver. Various advanced features of the machines may not be enabled. Many machines have not been tested. Their protocol is unknown.


The various authors of the sane−fujitsu backend provided useful code
Yabarana Corp. provided significant funding
EvriChart, Inc. provided funding and loaned equipment
Canon, USA. loaned equipment
HPrint provided funding and testing for DR-2510 support
Stone-IT provided funding for DR-2010 and DR-2050 support
Gerhard Pfeffer provided access and testing for P-208 and P-215
Special thanks to: Alejandro Imass, Andre Shimakawa, Martijn van Brummelen, Thanos Diacakis and Junren Shi for testing and feedback.


sane-abaton(5), sane−scsi(5), sane−usb-devices(1)


m. allan noah: <kitno455 a t gmail d o t com>


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.