Canon Pixma Series
From Gentoo Linux Wiki
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.
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) |
- TurboPrint (commercial)
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
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).