Canon Pixma Series

=About=

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

=Printing=

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).
 * Official

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.
 * Commercial

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.
 * Open Source

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.


 * net-print/bjfilter

entries enclosed in brackets imply that there is a better use-flag
 * net-print/cnijfilter-2.60


 * net-print/cnijfilter-2.70


 * net-print/cnijfilter-2.80


 * net-print/cnijfilter-3.00


 * net-print/cnijfilter-3.40

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.


 * New and untested


 * Not working properly (works with CVS version of gutenprint)

Official Listing of Supported Printers
 * TurboPrint (commercial)

Installation
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, net-print/cnijfilter-2.70, net-print/cnijfilter-2.80 or net-print/cnijfilter-3.40. 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: /usr/local/portage/net-print/bjfilter that's where the *.ebuild-file must go.

If you use the patch for all printers under 'ip4100', this one goes to /usr/local/portage/net-print/bjfilter/files

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 (32bit-workaround on amd64)
 * servicetools (additional monitoring and maintenance software)
 * nocupsdetection (only useful to export as binary package)

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:
 * alt.bjfilter-VERSION is an ALTERNATE version of the above bjfilter-VERSION excepting that its compiled with the TAKUSHIPATCH use flag. If this patch is needed for your printer to work you must download this file and rename it to bjfilter-VERSION. Due to hosting requirements an alternate filename was needed to keep the two versions seperate. Excluding takushipatch these two are functionally identical.

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 printuipixusipXXX (where XXX=4100, ...). Then go to the maintenance tab.

Network Printing
At least some of these printers (MX700 and MX860 for sure) use a proprietary protocol called BJNP. Louis Lagendijk has started working on a CUPS driver, available at http://sourceforge.net/projects/cups-bjnp/. See also this discussion on the Ubuntu forums: http://ubuntuforums.org/showthread.php?t=571795

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: "<>setpagedevice" *CloseUI: *Resolution with: *OpenUI *Resolution/Output Resolution: PickOne *DefaultResolution: 600 *Resolution 600/600 dpi: "<>setpagedevice" *Resolution 1200/1200 dpi: "<>setpagedevice" *Resolution 2400/2400 dpi: "<>setpagedevice" *CloseUI: *Resolution

Troubleshooting

 * If it doesn't work
 * Remember to reload the .ppd file into cups whenever you make changes, i.e. restart cups.


 * amd64
 * If it fails because of

/emul/linux/x86/usr/lib/libssl.so.0.9.7: 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
 * gcc 4.* and amd64
 * It's likely not to compile due to some linking problems like:

../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible ../../214/libs_bin/libcnbpcmcm214.so when searching for -lcnbpcmcm214
 * You can try Shan's binary packages from above.


 * Gentoo Forum
 * Feel free to visit the original Forum Thread and ask for support.

ToDo
There are a few things to do and everyone (i.e. you) can help with them.
 * Borderless Printing
 * 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.


 * service tools on amd64
 * 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.


 * GCC 4.*
 * I think this is quite advanced. Maybe someone could take a look at this compilation-trouble with gcc 4.* on amd64?


 * Gutenprint CVS
 * Provide an ebuild for Gutenprint CVS in the meantime. It might be good advice to take a look at the gimp-print ebuild first.

=Scanning=

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).

=References=
 * Printing and Scanning with Canon Pixma/Pixus Series
 * Canon Japan FTP-Server
 * HOWTO - Canon Pixma
 * SANE Backend for Canon PIXMA MP Series