Gentoo Wiki




This page explains how to print (and scan) with Canon Pixma and Pixus devices.


In order to print, you have to install a driver first. There are currently three alternative drivers among which you can choose from:

There are currently a couple of ebuilds with support for the Canon Pixma/Pixus series. Because all of them are partially binary, they will only work on ~x86 and ~amd64. They base on driver packages released by Canon (see below).
If those don't work for you, there is still the alternative to use TurboPrint which is a commercial (but inexpensive) collection of printer drivers.
Gutenprint (formerly known as Gimp-Print) offers support for some of these printers. The quality is quite good, so you might want to check, whether your model is supported by this driver. You're also encouraged to test the CVS-Version of this this driver and provide feedback to the developers, if the driver of your model still is in development, i.e. in cvs only.
Note: Currently (May 22, 2008), the required source RPM packages for cnijfilter 2.60 and 2.70 are no longer on the Canon file server. You will need to find a mirror somewhere to be able to use the ebuilds.
Note: All gzcnijfilter-2.60 RPMs. Extract to /usr/portage/distfiles.
Note: The files for the 2.70 cnijfilter can be fetched here, or here.

The following only deals with the official driver.

Supported Devices

Those printers listed in the second column should work too, because they all use the same printhead. But there might be exceptions. Just take it as a recommendation - and please report here if anything does (or doesn't) work.

use-flag compatible devices
ip1000i250/320/350 ip1000 mp110
ip1500i450/455/470d/475 ip1500/2000 mp360/370/390
ip3100i560/850 ip3000/3100 mp700/730
ip4100i860/865 ip4000/4100/5000 mp750/760/770/780/790
use-flag compatible devices
ip2200ip1600/2200 170/450
ip4200ip4200/4300 mp(500)/600
mp500ip(4200) mp500/(600)
entries enclosed in brackets imply that there is a better use-flag
use-flag compatible devices
mp160mp160 mp460
use-flag compatible devices
cnijfilter-2.80.ebuild is new and only ip3500 on amd64 is confirmed to work. If it works for you, please confirm it on bugzilla, mentioning your architecture and use-flags.
ip5300 works out-of-the-box with the 4300 driver following this tutorial. I didn't try the duplex mode though, nor borlderless printing.
device forum posts
mp150jabhatti91, doman, bulki

baeksu (reports success with gutenprint CVS)

Official Listing of Supported Printers


Because these drivers are partially binary, they will only work on ~x86 and ~amd64.

Make sure your Kernel supports either usb or parallel (whatever your printer is connected to).

Method A: Zugaina Overlay

The ebuilds exist on the overlay "zugaina", available through layman. You can easily add this overlay and skip the next section. However this overlay is currently not up-to-date at all.

Method B: Local Overlay

Download either net-print/bjfilter, net-print/cnijfilter-2.60 or net-print/cnijfilter-2.70. On ~amd64 you'll also need app-emulation/emul-linux-x86-bjdeps.

Place the neccessary ebuilds (and any patches) into a portage overlay Remember to maintain the same file-structure as in normal portage trees. This means, that you have to make some directories. If your local portage-overlay is located in /usr/local/portage, then you have to add directories according to the ebuild you use. If you use net-print/bjfilter then your tree would look like this:


that's where the *.ebuild-file must go.

If you use the patch for all printers under 'ip4100', this one goes to

Note: This location is available only after you digested the ebuild which is incluced in the command below.
emerge --digest -av bjfilter

So you may get an error-message if you need the patch for all ip4100-printers. It is possible to make this directory before digesting the ebuild.

Unmask and emerge

Unmask them (within /etc/portage/package.keywords). Set local use-flags (/etc/portage/package.use) and run emerge, e.g.:

emerge --digest -av bjfilter

There are useflags beside those listed above:

NOTE: Currently not supported with amd64. (Add Support)

AMD64 and GCC4.x.x

Many users have reported problems compiling and using these drivers with GCC4.x on AMD64 systems. Symptoms vary from compiling errors to the printer just "not working". A workaround is to compile binary packages using GCC 3.x either via a chroot or by having multiple slotted versions of GCC however this can be a bigger chore then it needs to be. Shan has taken the liberty of creating "monolithic" binaries via this method and is providing them (without warranty of course) here. Available are:

file build-dateuse-flags
net-print/cnijfilter-2.60-r1 08.29.2006 +amd64 +ip2200* +ip4200 +ip6600d* +ip7500* +mp500* -servicetools +unstablecups
net-print/bjfilter-2.50 08.29.2006 +amd64 +ip1000 +ip1500 +ip3100 +ip4100 +ip8600 -servicetools -takushipatch +unstablecups
net-print/alt.bjfilter-2.50* 08.29.2006 +amd64 +ip1000 +ip1500 +ip3100 +ip4100 +ip8600 -servicetools +takushipatch +unstablecups
app-emulation/emul-linux-x86-bjdeps-0.1 08.29.2006 none available

Service Tools

If you enabled the "servicetools" useflag, you can do some maintenance jobs, such as:

Cleaning Nozzles

To clean the nozzles of your printer, run


(where XXX=4100, ...). Then go to the maintenance tab.

Network Printing

At least some of these printers (MX700 for sure) use a proprietary protocol called BJNP. Louis Lagendijk has started working on a CUPS driver, available at See also this discussion on the Ubuntu forums:

Custom Settings

To allow printing quality options to be accessed through cups' printer properties you must edit as root the printer's ppd file. (YMMV, these are known to work with the ip1000 and ip4100). It's not neccessary with the ip4100 driver, because the ebuild already patches this ppd file.

vi /usr/share/cups/model/canonpixusip*.ppd

Add these lines:

*OpenUI *CNQuality/Quality: PickOne
*DefaultCNQuality: 3
*CNQuality 2/High: "2"
*CNQuality 3/Normal: "3"
*CNQuality 4/Standard: "4"
*CNQuality 5/Economy: "5"
*CloseUI: *CNQuality

You can also replace these lines:

*OpenUI *Resolution/Output Resolution: PickOne
*DefaultResolution: 600
*Resolution 600/600 dpi: "<</HWResolution[600 600]>>setpagedevice"
*CloseUI: *Resolution


*OpenUI *Resolution/Output Resolution: PickOne
*DefaultResolution: 600
*Resolution 600/600 dpi: "<</HWResolution[600 600]>>setpagedevice"
*Resolution 1200/1200 dpi: "<</HWResolution[1200 1200]>>setpagedevice"
*Resolution 2400/2400 dpi: "<</HWResolution[2400 2400]>>setpagedevice"
*CloseUI: *Resolution


Remember to reload the .ppd file into cups whenever you make changes, i.e. restart cups.
If it fails because of
/emul/linux/x86/usr/lib/ undefined reference to `HMAC_CTX_set_flags'
downgrade app-emulation/emul-linux-x86-baselibs-2.5.5 to 2.5.4 with
echo "=app-emulation/emul-linux-x86-baselibs-2.5.5" >> /etc/portage/package.mask
emerge emul-linux-x86-baselibs
It's likely not to compile due to some linking problems like:
../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible ../../214/libs_bin/ when searching for -lcnbpcmcm214
You can try Shan's binary packages from above.
Feel free to visit the original Forum Thread and ask for support.


There are a few things to do and everyone (i.e. you) can help with them.

Take a look at the ip4200-ppd patch of the cnijfilter ebuild (which activates borderless printing) and adapt it to another driver model. You'll need the commands patch and diff -u to do this. But only add options which are supported by the printer - and don't forget to test them.
There are service tools, which need some additional libraries. For them to work on amd64, we need the bjdeps ebuild to be enhanced a little. bjdeps currently is a clone of dev-libs/popt-1.6 with one additional export ABI=x86 which makes sure, it compiles as 32bit on amd64. Also bjdeps has to store the 32bit files in a different location to avoid a collision with the 64bit version. This task is about doing the same with >=gnome-base/libglade-0.6 and >=dev-libs/libxml-1.8. In the end there should be a new version bjdeps-0.2, which provides popt-1.6, libglade-0.6 and libxml-1.8.
I think this is quite advanced. Maybe someone could take a look at this compilation-trouble with gcc 4.* on amd64?
Provide an ebuild for Gutenprint CVS in the meantime. It might be good advice to take a look at the gimp-print ebuild first.


media-gfx/sane-backends-1.0.18 finally supports the Canon Pixma series (although not completely yet). You may take a look at this device listing. The backend is just called pixma.

Follow the instructions in HOWTO Install a USB scanner.

You are also encouraged to test the latest version of the pixma-backend (as it is still beeing developed).


Retrieved from ""

Last modified: Sun, 31 Aug 2008 23:13:00 +0000 Hits: 45,015