Printing in Ubuntu with the Canon MF3010
I recently switched my laptop over to [Lubuntu](http://lubuntu.net/). 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](http://www.usa.canon.com/cusa/consumer/products/printers_multifunction/black_white_laser_multifunction/imageclass_mf3010#DriversAndSoftware) 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](https://help.ubuntu.com/community/NetworkPrintingWithUbuntu). 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](http://ubuntuforums.org/showthread.php?t=1867260&p=11384912#post11384912): 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`.