For some reason I didn’t consider Linux compatibility when selecting the printer I would buy, and regretted it immediately. Preliminary post-purchase research on the internet seemed to indicate that most were not having much luck with the Canon Pixma MP500. I contacted Canon USA customer service stating firmly the case for linux drivers, only to be told with equal resolve that Canon USA simply does not support linux.
More searching revealed Turboprint as a non-free linux driver solution supporting extensive featuresets in the latest printers. Unfortunately, their licensing terms are draconian, a whopping $40 for a single-user license.
Hope came in the form of an Ubuntu forums thread on other printers in the Pixma lineup. From here I was able to jump off to a page dedicated to linux support for inkjet printers on the Canon Japan website. Unfortunately it is in Japanese, of which I can only pick out the kanji. Fortunately, I rediscovered the amazing Babel Fish translation tool, which I recall hearing about in NLP class. (I think I tried it a few years back and was not too impressed. The opposite is the case now.)
The download server for the files you’ll need is ftp://download.canon.jp/pub/driver/bj/linux/. Grab the following two files:
The guide is also available for download, but it is in Japanese. You can view the very useful Babel Fish’d translation here.
You’ll also need to install libxml1. I use Arch Linux primarily now and pacman denies the existence of libxml1, so I had to build and install from source; your distribution may offer a pre-built package. Lots of branch optimization warnings flashed by, but no compilation errors.
% wget ftp://xmlsoft.org/libxml2/old/libxml-1.8.17.tar.gz
Now if you are using a non-rpm based system like myself, you’ll need to extract the rpm binaries and install them by hand. (With Debian systems the
alien command may be used for this purpose.)
% rpmunpack cnijfilter-mp500-2.60-1.i386.rpm % gunzip cnijfilter-mp500-2.60-1.cpio.gz % cat cnijfilter-mp500-2.60-1.cpio | cpio -idv
Do the same thing with cnijfilter-common. This will leave a
usr directory, the contents of which you will have to copy to
/usr as root.
This is the important part, where I got stuck for a long time. Edit the file
/etc/cups/cupsd.conf as root and search for the section containing the comment “The user the server runs under.” Here you’ll need to change
The reason is explained succinctly in the section describing Cif command usage in the translated guide:
When cif command is used, it is necessary in su command to become the super user.
The MP500 ppd (Postscript Printer Description) file specifies the
pstocanonij binary from cnijfilter-common as the postscript filter, which is all fine and dandy, except when you realize that
pstocanonij always invokes
cifmp500, which must be run as the superuser. Printing just fails unless the proper permissions are granted. Since I don’t have access to the source of
cifmp500, I’m not sure exactly why it requires superuser privileges.
Plug in the printer, and turn it on. Restart cups. In Arch:
% su % /etc/rc.d/cups restart
Now you can go to the web interface to cups, set up the printer, and print a test page! I know when my test page printed my arm shot into the air, and I WHOOPED! YESSSSSS!!! After fearing the worst – having to boot Windows every time I wanted to print something – I was ecstatic when the ink started to flow!
I found I needed to set the printing margins, and used the method suggested by linuxprinting.org. If you do the same using the
alignmargins perl script, make sure the configuration variables are set up properly. I had to make the following change:
my $cut = '/bin/cut';
The alignment guide
alignmargins prints out is pretty confusing. I’ll just provide my x and y margin values:
x: 0 y: -50.4
In closing, I won’t leave it unsaid: Shame on you, Canon USA.
Shame, shame, shame.