How do I add a Canon Pixma MX860 network printer?

I am running Ubuntu Oneiric 11.10 on two computers, one is AMD-64bit architecture, the other i386--same problem on both. In 11.04 I could print and scan just fine, after some tinkering, but after a fresh install of 11.10, adding ppa:michael-gruz/canon, and installing cnijfilter-mx860series and scangearmp-common from the PPA, Ubuntu's system-config-printer cannot detect my network printer.

In the previous installation it appeared as cnijnet://printers-mac-address. I know it should be able to see it because I can ping the printer at its IP address, I can browse the printer's web admin page from the computer, and my Windows guest in VirtualBox on the computer has no problem detecting and installing it. It seems like this problem is new to Oneiric. How I can find my network Pixma again?


I found workarounds.

Printing

The network printer can be installed if you enter the URI manually. When adding a new printer, select EnterURI from the devices list and enter cnijnet:/01-23-45-67-89-AB where 01-23-45-67-89-AB is the MAC address of the printer. You have to manually select the printer model for the driver, but everything prints as it should.

If that doesn't work, follow the manual instructions from http://linux.wikia.com/wiki/Getting_Canon_PIXMA_to_work_on_Linux:

$ cnijnetprn --search auto 
<...Wait for system search...>
network cnijnet:/00-1E-8F-B6-E0-1A "Canon MX860 series" "Canon-MX860-series_00-1E-8F-B6-E0-1A"

$ locate mx860.ppd
/usr/share/cups/model/cnmx860.ppd
/usr/share/ppd/cnmx860.ppd
$ sudo /usr/sbin/lpadmin -p CanonMX860 -m cnmx860.ppd -v cnijnet:/00-1E-8F-B6-E0-1A -E

the -p option specifies printer name, the -m option specified ppd file. The ppd file for your printer should be included in your binary driver package and at this point should have been installed in /usr/share/ppd. The -v option specifies device uri (copy it from cnijnetprn's output).

Scanning

For scanning, edit /etc/sane.d/pixma.conf and add the line bjnp://10.0.0.20 (the Pixma's IP address). List the devices to make sure Ubuntu can find it with

$ scanimage -L
device `pixma:MX860_10.0.0.20' is a CANON Canon PIXMA MX860 multi-Function peripheral

You can additionally edit out unnecessary backends (all but pixma) from /etc/sane.d/dll.conf. That should speed the discovery up a bit. For more details, check out man sane-pixma.

Although I couldn't find any documentation as to why or how, the Canon network printer discovery protocol doesn't work right in 11.10 as it does in previous versions – perhaps a discovery timeout issue. Still, everything is up and running now.