Leon's Weblog

November 21, 2009

Setting up a Canon MX860 Printer on a 64-Bit Linux System

Filed under: Gadgets — Leon @ 4:41 pm

Canon MX860 I bought the MX860 printer because I knew it had Linux support but getting it setup was a bit harder than I had anticipated. The fist step was getting the proper drivers (since the CD that came with the printer only had Windows and MacOS drivers). Luckily the Linux drivers were available on the Canon Europe page at the following link.

The drivers are available in 3 formats: RPM package, Deb package, and the source code. After several failed attempts at getting the source code to compile, I tried installing the RPM package. Unfortunately, I run a 64-bit system and the packages were compiled for a 32-bit. The drivers essentially provide two CUPS backends: cnijnet and ncijusb. However, these files were placed in /usr/lib/cups/backend instead of in /usr/lib64/cups/backend where I needed them. Copying the files to the proper location allowed CUPS to see the drivers and I was pleasantly surprised that this actually worked. Similarly the RPM installed a CUPS filter pstocanonij into /usr/lib/cups/filter instead of into /usr/lib64/cups/filter so this file needs to be copied as well. Just make sure to restart the CUPS server using the following command before continuing to the next step: /etc/init.d/cups restart

Before playing with the CUPS configuration, I wanted to test that the drivers were installed properly and could find the printer on the network. To do this just run /usr/lib/cups/backend/cnijnet from the command prompt and it should return the device URI for the printer. If this works, just open to the CUPS config page in your browser of choice at http://localhost:631/ and add the new printer. The Canon MX860 series Ver.3.10 driver should be available in the pick-list. If the test page does not come out, check your firewall settings. You may also find other discussions on setting up the MX860 in Linux useful. Good luck.

P.S. I have used this printer with my Linux setup for more that 4 years without problems. I also found generic ink cartridges at a fraction of the OEM brand cost that work just as well. It’s worth a try if you print a lot of documents.

Update 08/26/13: I recently updated my OS to OpenSuse 12.3 and ran into some additional trouble with the printer installation. Luckily I saved the rpm files from the last time that I installed this printer because Canon no longer links to them on their site (only the driver source code is provided and I could not get it to compile on my system). If you need the files don’t worry. You can still download them here.

Installing the rpm involved an additional problem of locating the proper dependencies. Even with all required libraries installed, RPM complained that libtiff.so.3 was missing (it is an old library… libtiff.so.5 is now standard). I forced the RPM to install ignoring this dependency and everything worked fine. To do this, just install the packages directly and do not use the install.sh script.

A few final words for success. My system no longer configured CUPS to store the drivers in /usr/lib64 so moving the file from /usr/lib was no longer required. Remember to disable the Linux firewall when adding the printer in CUPS. You can enable it again after the printer is installed. Also use the Gutenprint ‘simplified’ driver for best results.


  1. Thanks for the discussions link

    It help me figure out how to set the URI for the wireless


    Comment by DMAN — November 22, 2009 @ 6:30 am
  2. Confused about the 32bit app (/usr/lib/cups/backend/cnijnet) running in a 64bit environment… I couldn’t get it to run my 64bit machine- command not found.

    Comment by Jay — December 2, 2009 @ 6:50 pm
  3. Jay, I don’t know your setup but in a 64-bit environment, the libraries are expected in /usr/lib64. If you have a 64-bit version of CUPS, just copy the files as instructed above.

    Comment by leon — December 2, 2009 @ 7:44 pm
  4. I’ll give it a shot. I’ve had some luck getting it recognized, but not able to print yet. Scanner works great though 🙂

    Comment by Jay — December 5, 2009 @ 7:20 pm
  5. Copied everything over but I get this error in cups when doing a test page or printing in general:
    “Failed to read side-channel request!”

    Found out I had a different package installed that was an older version of the Canon Network driver- I created a new package using the RPM you link to (it’s a different package system, I did this to keep this process a little more clean) and then copied the files over from the other RPM (to appropriate directories- I don’t have lib64 with my distro). I’m using Arch Linux, which I’m sure won’t be of any help, but maybe some else out there got this working.

    Oh well, if I get it working at some point I’ll post back here, thank you for the instructions.

    Comment by Jay — December 8, 2009 @ 7:46 pm
  6. Used the Gutenprint ppd for IP4600:


    If you set it to Cassette it prints fine from there, despite what the documentation says. I’ll stick with this method for now. Thank you again, this taught me how to get at least the Canon Network driver going to get it recognized (this is my first Canon Printer in Linux, let alone in general).

    Comment by Jay — December 10, 2009 @ 5:02 pm
  7. Has anyone suceeded in setting up this printer as a *fax* in linux? I was able to get it working as printer and also as scanner (thanks to the downloadable canon drivers and the above HOWTO) but using it as fax from the computer is still a missing feature for me..

    At least under windows it also installs a virtual fax printer driver to allow sending faxes from any application directly without paper – anyone got that working in linux also? With CUPS or something similar?

    Thanks for any hint.

    Comment by bert — January 25, 2010 @ 4:35 am
  8. Re #2: “Confused about the 32bit app (/usr/lib/cups/backend/cnijnet) running in a 64bit environment… I couldn’t get it to run my 64bit machine- command not found.”

    Install the ia32-libs package (at least on Ubuntu). For more info, see this post and preceding ones.

    Comment by Dan Halbert — July 5, 2010 @ 9:32 pm
  9. Thanks Dan, I do have a package with my distro that would cover this. I may try it out later but for now the other driver works perfectly.

    Comment by Jay — July 28, 2010 @ 5:15 pm
  10. After I copied the files manually into the various /usr subdirectories, nothing worked as expected until I ran ldconfig so that the library files could be located.

    Comment by Craig — February 26, 2011 @ 2:28 pm
  11. For anybody attempting to install a Cannon MX860 on Ubuntu(Debrian) x66/amd64 refer to http://forums.linuxmint.com/viewtopic.php?f=49&t=74326

    It worked perfectly for me in Ubuntu 10.10 x64.

    Comment by Ding — October 10, 2011 @ 4:23 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment