Section: SANE Scanner Access Now Easy (5)Updated: 8 Jan 2010Local indexUp
- SANE backend for Canon PIXMA Multi-Functions Printers
MP, MX, ImageCLASS and I-SENSYS series
library implements a SANE (Scanner Access Now Easy) backend that provides
access to Canon PIXMA multi-function devices (All-in-one printers).
The backend implements both USB interface and Network LAN interface
using Canon's BJNP protocol.
Currently, the following models work with this backend:
The following models are not well tested and/or the scanner sometimes hangs
and must be switched off and on.
PIXMA PIXMA MP760, PIXMA MP780
The following models may use the same Pixma protocol as those listed
above, but have not yet been reported to work (or not). They are declared
in the backend so that they get recognized and activated.
Feedback in the Sane-dev mailing list welcome.
#The following models may use partly the same Pixma protocol as MPs listed
#above, but may still need some work. They are declared in the backend as
#experimental. Snoop logs are required to further investigate, please contact
#the sane-devel mailing list.
The backend supports:
* resolutions of 75, 150, 300, 600, 1200, 2400, and 4800 DPI (some maybe buggy),
* color and grayscale mode, as well as lineart on certain models,
* a custom gamma table,
* Automatic Document Feeder, Simplex and Duplex.
* Transparency Unit, 24 or 48 bits depth.
The device name for USB devices is in the form pixma:xxxxyyyy_zzzzz
where x, y and z are vendor ID, product ID and serial number respectively.
Example: pixma:04A91709_123456 is a MP150.
Device names for BJNP devices is in the form pixma:aaaa_bbbbb
where aaaa is the scanners model and bbbb is the hostname or ip-adress.
This backend, based on cloning original Canon drivers protocols, is in
a production stage. Designed has been carried out without any applicable
manufacturer documentation, probably never available. However, we have tested
it as well as we could, but it may not work in every situations. You will find
an up-to-date status at the project homepage. (See below).
Users feedback is essential to help improve features and performances.
Besides "well-known" options (e.g. resolution, mode etc.) pixma backend also
provides the following
options for button handling, i.e. the options might change in the future.
Button scan is disabled on MAC OS X due to darwin libusb not handling
timeouts in usb interrupt reads.
This option can be used in combination with
in batch mode, for example when you want to scan many photos or
multiple-page documents. If it is enabled (i.e. is set to true or yes), the
backend waits before every scan until the user presses the "SCAN" button
(for MP150) or the color-scan button (for other models). Just put the
first page in the scanner, press the button, then the next page, press
the button and so on. When you finished, press the gray-scan button. (For
MP150 you have to stop the frontend by pressing Ctrl-C for example.)
button-update button-1 button-2
These options are interesting for developers. To check button status: (1) set
to zero, (2) set
(Its type is SANE_TYPE_BUTTON.), (3) get
If the result is not zero, the corresponding button was pressed.
The static library implementing this backend.
The shared library implementing this backend (present on systems that
support dynamic loading).
The backend configuration file (see also description of
below). The files contains an optional list of scanners. Normally only scanners
that can not be auto-detected because they are on a different subnet shall be
listed here. If your OS does not allow enumeration of interfaces (i.e. it does not
support the getifaddrs() function) you may need to add your scanner here as well.
Scanners shall be listed as:
USB scanners will be auto-detected and require no configuration.
The pixma backend supports network scanners using the so called Canon BJNP protocol.
Configuration is normally not required.
The pixma backend will auto-detect your scanner if it is within
the same subnet as your computer if your OS does support this.
If your scanner can not be auto-detected, you can add it to the pixma configuration
file (see above).
FIREWALLING FOR NETWORKED SCANNERS
The sane pixma backend communicates with port 8612 on the scanner. So
you will have to allow outgoing traffic TO port 8612 on the common subnet
Scanner detection is slightly more complicated. The pixma backend sends
a broadcast on all direct connected subnets it can find (provided your OS allows for enumeration
of all interfaces). The broadcast is sent FROM port
8612 TO port 8612 on the broadcast address of each interface.
The outgoing packets will be allowed by the rule described above.
Responses from the scanner are sent back to the computer TO port 8612.
Connection tracking however does not see a match as the response does not come
from the broadcast address but from the scanners own address.
You will therefore have to allow incoming packets TO port 8612 on your computer.
So in short: open the firewall for all traffic from your computer to port 8612 AND
to port 8612 to your computer.
With the firewall rules above there is no need to add the scanner to the
pixma.conf file, unless the scanner is on a network that is not directly
connected to your computer.
If the library was compiled with debug support enabled, this environment
variable controls the debug level for this backend. Higher value increases
Setting to a non-zero value will enable the support for experimental models.
You should also set SANE_DEBUG_PIXMA to 11.
This environment variable specifies the list of directories that may
contain the configuration file. Under UNIX, the directories are
separated by a colon (`:'), under OS/2, they are separated by a
semi-colon (`;'). If this variable is not set, the configuration file
is searched in two default directories: first, the current working
directory (".") and then in /etc/sane.d. If the value of the
environment variable ends with the directory separator character, then
the default directories are searched after the explicitly specified
directories. For example, setting
to "/tmp/config:" would result in directories "tmp/config", ".", and
"/etc/sane.d" being searched (in this order).