Canon Pixma Series

From Gentoo Linux Wiki

Jump to: navigation, search

Contents

[edit] About

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

[edit] Printing

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

  • Official

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

  • Commercial

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.

  • Open Source

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.

[edit] 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
ip1000 i250/320/350 ip1000 mp110
ip1500 i450/455/470d/475 ip1500/2000 mp360/370/390
ip3100 i560/850 ip3000/3100 mp700/730
ip4100 i860/865 ip4000/4100/5000 mp750/760/770/780/790
ip8600 ip8600
use-flag compatible devices
ip2200 ip1600/2200 170/450
ip4200 ip4200/4300 mp(500)/600
ip6600d ip6600d/6600pd
ip7500 ip5200/7500
mp500 ip(4200) mp500/(600)

entries enclosed in brackets imply that there is a better use-flag

use-flag compatible devices
ip90 ip90
ip1800 ip1700/1800
ip2500 ip2500
ip3300 ip3300
ip4300 ip4300
mp160 mp160 mp460
mp510 mp510
mp600 mp600
use-flag compatible devices
mp140 mp140
mp210 mp210
ip3500 ip3500
mp520 mp520
ip4500 ip4500
mp610 mp610


use-flag compatible devices
ip1900 ip1900
ip3600 ip3600
ip4600 ip4600
mp190 mp190
mp240 mp240
mp540 mp540
mp630 mp630

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
ip1300/1700/3300/5300/6700d
mp800/800r/830
ip5300 works out-of-the-box with the 4300 driver following this tutorial. I didn't try the duplex mode though, nor borlderless printing.
  • Not working properly (works with CVS version of gutenprint)
device forum posts
mp150 jabhatti91, doman, bulki

baeksu (reports success with gutenprint CVS)

Official Listing of Supported Printers

[edit] 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).

[edit] 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.

[edit] Method B: Local Overlay

Download either net-print/bjfilter, net-print/cnijfilter-2.60, net-print/cnijfilter-2.70 or net-print/cnijfilter-2.80. 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
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.

[edit] 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:

  • amd64 (32bit-workaround on amd64)
  • servicetools (additional monitoring and maintenance software)

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

  • nocupsdetection (only useful to export as binary package)

[edit] 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-date use-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
  • 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.

[edit] 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.

[edit] 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 http://sourceforge.net/projects/cups-bjnp/. See also this discussion on the Ubuntu forums: http://ubuntuforums.org/showthread.php?t=571795

[edit] 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

with:

*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

[edit] 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.

[edit] 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.

[edit] 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).


[edit] References

Personal tools