Scanning and printing on a Canon MP800R on Gentoo Linux

This howto, written 29 September 2007, describes getting a multifunction Canon Pixma MP800R working on Gentoo Linux over USB. It is based on a Gentoo forum post, Printing and Scanning with Canon Pixma/Pixus Series, two gentoo wiki entries, HOWTO Install a USB scanner and Canon Pixma Series, and about six hours of bu66ering around!

Installing SANE and CUPS

As root:

# emerge sane-backends sane-frontends xsane net-print/cups

At this point sane-find-scanner can find the scanner:

$ sane-find-scanner -q
found USB scanner (vendor=0x04a9 [Canon], product=0x170e [MP800R]) at libusb:001:006

But sane will not support it:

$ scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

After starting CUPS:

# /etc/init.d/cupsd start

The printer will appear on the Adminstration tab after browsing to the CUPS server:

...but after adding it I could not print a test page. So....

Installing the unofficial ebuilds

The ebuilds needed are not in the standard gentoo portage tree, you need to get them manually.

# cd /usr/local/portage

Get version 0.13.1 of the sane-pixma ebuild from

# mkdir -p media-gfx/sane-pixma/
# wget -O media-gfx/sane-pixma/sane-pixma-0.13.1.ebuild

Get the latest CUPS filter for Canon inkjets from

# mkdir -p net-print/cnijfilter/
# wget -O net-print/cnijfilter/cnijfilter-2.70.ebuild

For amd64 systems, you should also get the 32bit emulation wrapper from

# mkdir -p app-emulation/emul-linux-x86-bjdeps/files
# wget -O app-emulation/emul-linux-x86-bjdeps/emul-linux-x86-bjdeps-0.1-r1.ebuild
# wget -O app-emulation/emul-linux-x86-bjdeps/files/popt-1.7-missing-tests.patch
# wget -O app-emulation/emul-linux-x86-bjdeps/files/popt-1.7-nls.patch

Now create the digests for these ebuilds:

# ebuild /usr/local/portage/media-gfx/sane-pixma/sane-pixma-0.13.1.ebuild digest
# ebuild /usr/local/portage/net-print/cnijfilter/cnijfilter-2.70.ebuild digest
# ebuild /usr/local/portage/app-emulation/emul-linux-x86-bjdeps/emul-linux-x86-bjdeps-0.1-r1.ebuild digest

...then the packages can be emerged:

# emerge sane-pixma emul-linux-x86-bjdeps cnijfilter

Modify the hotplug config file to recognize the scanner:

# nano /etc/hotplug/usb/libsane.usermap

Search for the MP800 config and add the following lines below it:

# Canon PIXMA MP800R
libusbscanner 0x0003 0x04a9 0x170e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000

Start hotplug:

# /etc/init.d/hotplug restart

Trying it out!

Now scanimage should find the scanner:

$ scanimage -L

device `pixma:04A9170E_11F67B' is a CANON Canon PIXMA MP800R multi-function peripheral

You should now be able to scan using xscan.

In CUPS (at delete any existing setup for the MP800R and on the Administration tab:

Add This Printer Canon MP800R (Canon MP800R USB #1)

Select model:
Canon MP600 Ver.2.70 (en)

On the printers tab you should find a new printer, Canon_MP800R_USB_1, in state:
Printer State: idle, accepting jobs, published

Try printing a test page to confirm all is well.

Installing as a network printer

First locate the IP address of the printer. You can print the LAN settings from the printer itself, in copy mode click the Menu button then select Maintenance/Settings->Device Settings->LAN settings->Print LAN details.

The MP800R has a web-server you can use to administer the network settings. I specified a fixed IP address and created an entry in /etc/hosts to save typing the IP address in the rest of the configuration steps: pixma

Running a port scan on the printer yields:

# nmap pixma

Starting Nmap 4.20 ( ) at 2007-10-06 09:39 BST
Interesting ports on pixma (
Not shown: 1693 closed ports
80/tcp open http
139/tcp open netbios-ssn
515/tcp open printer
9100/tcp open jetdirect
MAC Address: 00:00:85:62:75:77 (Canon)

Nmap finished: 1 IP address (1 host up) scanned in 2.048 seconds

Back on the CUPS Administration tab, simply add the printer as device:
AppSocket/HP JetDirect

with URI:

selecting make Canon and model Canon MP600 Ver.2.70 (en)

To do...

Get network scanning working. I'm hoping I can scan to a shared Samba folder.

Linux home home