The Canon PIXMA MP560 on Ubuntu

I’ve resisted getting an all-in-one printer / scanner / copier device in the past, largely due to worrying about the driver situation on Linux, but when I found out that my scanner hadn’t survived the trip to Zürich and we were also without a printer, we risked it and bought a Canon PIXMA MP560.

I say “risked”, because the noise levels in the search results when trying to find out whether this printer would actually work were very high.  In the hope that it will be of use to anyone similarly searching in the future, I thought it might be useful to add the following notes about things that definitely work for us.  (There are lots of things that we haven’t simply tried yet, e.g. printing via USB or scanning via USB, so I can’t comment on what’s involved in getting those to work.)

Update: with these drivers the printer does seem to have trouble printing more complex pages – it’ll only print out the top eighth of the page and then give up.  e.g. as an example, try printing out the English rules for Tobago (PDF linked from that page).  Rather annoying, and I haven’t had time to report it to Canon yet.

Obviously I can’t provide support if you’re having problems with this printer, so this is just to describe what worked for us on Ubuntu 9.04 (Jaunty Jackalope) and 9.10 (Lucid Lynx).  I’m pretty happy with this printer, and it’s great to see that Canon are supporting Linux users by providing drivers.

Printing over Wireless

The instructions supplied with the printer explain how to get it to connect to your wireless network, which worked fine with WPA2 (AES).

Then you need to go to the drivers page for the PIXMA MP560 on Canon’s website, select “Linux” and “English”, and download “Debian Linux Print Drivers (3.2)”.  That’ll give you a tar file, which you should unpack in a new directory.  This in turn contains a tar.gz archive called cnijfilter-mp560series-3.20-1-i386-deb.tar.gz.  Unpack that and you’ll get the following:

cnijfilter-mp560series-3.20-1-i386-deb/
cnijfilter-mp560series-3.20-1-i386-deb/packages/
cnijfilter-mp560series-3.20-1-i386-deb/packages/cnijfilter-common_3.20-1_i386.deb
cnijfilter-mp560series-3.20-1-i386-deb/packages/cnijfilter-mp560series_3.20-1_i386.deb
cnijfilter-mp560series-3.20-1-i386-deb/install.sh

The “install.sh” script will fail if your setup is like either of ours, with the error message:

==================================================
Canon Inkjet Printer Driver Ver.3.20-1 for Linux
Copyright CANON INC. 2001-2009
All Rights Reserved.
==================================================
Error! Cannot specify package management system.

This error arises when both “dpkg” and “rpm” exist in your path, so you need to edit install.sh to cause the test for “rpm” to fail – find these lines:

## Judge is the distribution supporting rpm? ##                                                                                                                
 rpm --version 1> /dev/null 2>&1                                                                                                                                
 c_system_rpm=$?                                                                                                                                               

… and change “rpm –version” to “rpm-no-thanks –version”, or something.  If you re-run ./install.sh then it should all work OK.  (I’ve put in bold the bits where you need user interaction.

 : mark@cava:~/Desktop/canon-drivers/cnijfilter-mp560series-3.20-1-i386-deb (master)
 ./install.sh
==================================================
Canon Inkjet Printer Driver Ver.3.20-1 for Linux
Copyright CANON INC. 2001-2009
All Rights Reserved.
==================================================
Execution command = sudo dpkg -iG ./packages/cnijfilter-common_3.20-1_i386.deb
[sudo] password for mark: 
(Reading database ... 490522 files and directories currently installed.)
Preparing to replace cnijfilter-common 3.20-1 (using .../cnijfilter-common_3.20-1_i386.deb) ...
Unpacking replacement cnijfilter-common ...
Setting up cnijfilter-common (3.20-1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place/sbin/ldconfig.real: /usr/local/lib/ is not a symbolic link
Execution command = sudo dpkg -iG ./packages/cnijfilter-mp560series_3.20-1_i386.deb
(Reading database ... 490522 files and directories currently installed.)
Preparing to replace cnijfilter-mp560series 3.20-1 (using .../cnijfilter-mp560series_3.20-1_i386.deb) ...
Unpacking replacement cnijfilter-mp560series ...
Setting up cnijfilter-mp560series (3.20-1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
/sbin/ldconfig.real: /usr/local/lib/ is not a symbolic link

## Driver packages installed. ##
#=========================================================#
#  Register Printer
#=========================================================#
Next, register the printer to the computer.
Connect the printer, and then turn on the power.
To use the printer on the network, connect the printer to the network.
When the printer is ready, press the Enter key.
>
#=========================================================#
#  Connection Method
#=========================================================#
 1) USB
 2) Network
Select the connection method.[1]2
Searching for printers...

#=========================================================#
#  Select Printer
#=========================================================#
Select the printer.
If the printer you want to use is not listed, select Update [0] to search again.
To cancel the process, enter [Q].
-----------------------------------------------------------
 0) Update
-----------------------------------------------------------
Could not detect the target printer.
-----------------------------------------------------------
(Currently selected:[0](Update) )
[At this point I remembered to turn on the printer...]

Enter the value. [0]0
Connect the printer, and then turn on the power.
To use the printer on the network, connect the printer to the network.
When the printer is ready, press the Enter key.
>
Searching for printers..

#=========================================================#
#  Select Printer
#=========================================================#
Select the printer.
If the printer you want to use is not listed, select Update [0] to search again.
To cancel the process, enter [Q].
-----------------------------------------------------------
 0) Update
-----------------------------------------------------------
Target printers detected (MAC address  IP address)
1) Canon MP560 series (00-1E-8F-64-60-96 192.168.1.5)
-----------------------------------------------------------
(Currently selected:[1]Canon MP560 series (00-1E-8F-64-60-96 192.168.1.5))
Enter the value. [1]
#=========================================================#
#  Printer Name
#=========================================================#
Enter the printer name.[MP560LAN]mp560-again
Execution command = sudo /usr/sbin/lpadmin -p mp560-again -m canonmp560.ppd -v cnijnet:/00-1E-8F-64-60-96 -E
#=========================================================#
#  Set as Default Printer
#=========================================================#
Do you want to set this printer as the default printer? (yes/no) [yes]no
#=========================================================#
Installation has been completed.
Printer Name : mp560-again
Select this printer name for printing.
#=========================================================#

Then the printer should be set up correctly, and you can test it by going to System -> Administration -> Printing, right clicking on the new printer, selecting “Properties” and clicking on “Print Test Page”.

Scanning to a USB stick

This has turned out to be convenient enough that I haven’t bothered to get scanning over USB from my netbook to work yet, and of course it works fine – just follow the prompts on the display.  It only offers scanning to PDF or JPEG, unfortunately – it would be nice if PNG was another option available when scanning to a USB mass storage device.

12 comments to The Canon PIXMA MP560 on Ubuntu

  • Andres

    Thanks for this guide. I got to the point where my printer is supposed to be detected, but I keep getting the message “could not detect the target printer.” Any thoughts about what I might try would be appreciated!

  • Andres

    Nix that. I got it working!

    • Great, I’m glad to hear it. On another occasion (with the printer on!) I had to try the step where it searches for the printer a couple of times before it found it.

  • Alexi

    When I try to type in the password in terminal, it wont let me?

  • richard

    Thanks for the scanning to USB stick section.
    Was having fun trying to get it working wirelessly with Ubuntu

  • Marc

    Thanks, Mark, for the great instructions. The bold bits for user interaction were very helpful.

    The instructions worked out for me on 10.04. I first did a ‘which dpkg’ and a ‘which rpm’ to see if the update.sh would have a conflict, and since rpm wasn’t found the script just worked without any modification.

  • Tyger

    Thanks! I just had to download, unpack and run ./install.sh – now I can print wireless from laptop running 10.04.

  • Gonzalo Mendívil

    Thanks. I’ve just move to ubuntu, so I was worried about coundn’t get my printer to work.

  • Pete

    I’m on 10.04, and I get the following error when I try to run install.sh:
    Error: Dependency is not satisfiable: cnijfilter-common (>= 3.20)
    I tried the rpm-no-thanks edit, but that didn’t work, either.
    Thanks!

  • Rob

    Thanks for this tutorial, it worked like a charm. Printing wirelessly in 10.04. Still haven’t figured out how to scan yet, but will try that next.

  • Dan

    thanks for the link and info!!!
    went to the website and downloaded the driver using Linux mint 9. went without a hitch and am using it wirelessly as well. amazing!
    thanks again
    Dan

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>