Printing in Ubuntu with the Canon MF3010

I recently switched my laptop over to Lubuntu. The experience has been pretty good overall, but one painful thing was getting my printer to cooperate.

Specifically, I am using 64-bit Lubuntu 13.10 and a Canon MF-3010. It was great to find out that Canon has an officially-released driver for its proprietary UFR II protocol. At the time of this writing, the driver version is 2.70.

I downloaded the installed the driver from the 64-bit Debian packages. CUPS recognized and happily added the printer, but when I would issue a command to print, the printer didn’t respond at all.

After a great deal of troubleshooting, I determined the issue: the 64-bit packages released by Canon depend on various 32-bit libraries, but those required libraries are not explicitly listed anywhere that I could find. Eventually I would hit on forum threads where the advice was to apt-get install ia32-libs, a catch-all package with a bunch of useful 32-bit libraries for 64-bit Ubuntu. It was deprecated in Ubuntu 13.10, and is no longer available from the normal package repositories.

With some more digging, and some trial and error, I was able to get what appears to be the minimal set of 32-bit libraries that must be installed for the printer to print. After downloading the Linux_UFRII_PrinterDriver_V270_*.tar.gz and extracting it into a directory, this sequence of commands should get the printer up and running:

$ sudo dpkg -i 64-bit_Driver/Debian/cndrvcups-common_2.70-1_amd64.deb
$ sudo dpkg -i 64-bit_Driver/Debian/cndrvcups-ufr2-us_2.70-1_amd64.deb
$ sudo apt-get install libxml2:i386
$ sudo apt-get install libjpeg62:i386
$ sudo apt-get install lib32z1
$ sudo apt-get install libstdc++5:i386 libstdc++6:i386
$ sudo restart cups

Each of the packages listed seems to be essential. For instance, getting rid of libstdc++6 caused my print jobs to hang at “processing” status, while getting rid of libstdc++5 caused the print jobs to appear successful in CUPS, but with no printer output.

Addendum (March 8, 2014)

I wanted to set up network printing. My wife’s computer (also running Lubuntu) is connected to our printer by USB, and I want to be able to print over the network, via her computer. It was almost as simple as following the official Ubuntu guide. After using those instructions, I would send a print job and its status would be “printer not connected?”. The fix was to manually add the printer using an ipp address, as described in this forum post: access the CUPS control panel at http://[printer-server host]:631 and access the printer’s status page. The ipp address is the same as the status page’s URL, with http replaced by ipp. In my case, ipp://[wife's ip]:631/printers/Canon-MF3010.