Note These printers may be technically supported under CUPS, but that does not mean they are well supported. They do work but configuration and usage may not be as simple as described in this article. Canon provides updates, but the drivers are not updated often and thus changes to the kernel and CUPS may introduce bugs. Additionally, in the case of errors, this driver is notorious for not providing any debug information.

Installing the drivers

For using it you would need to create custom repository explained on page Custom repository.

Follow instructions in Creating a custom repository section.

Download archive net-print-cndrvcups.tar.gz and unpack it in created overlay.
It contains two ebuilds: net-print/cndrvcups-capt and net-print/cndrvcups-common.

If your custom repository location is /usr/local/portage you should have directories:

/usr/local/portage/net-print/cndrvcups-common

/usr/local/portage/net-print/cndrvcups-capt

In that case you will need to issue this commands to be able to emerge ebuilds:

root # pushd /usr/local/portage/net-print/cndrvcups-common

root # repoman manifest

root # popd

root # pushd /usr/local/portage/net-print/cndrvcups-capt

root # repoman manifest

root # popd

After that you will need to emerge them (net-print/cndrvcups-capt depends on net-print/cndrvcups-common):

root #emerge --ask net-print/cndrvcups-capt

If you are using USB printer you will need usblp kernel module which is by default blacklisted by net-print/cups, easiest way around this is recompiling cups with USE="-usb". usbplp module is creating /dev/usb/lp0 device used for communicating with printer.

Currently only use flag is USE="-cngplp", disabled by default and is creating some GUI that is not really interesting and needed. And creates multiple issues with compiling this drivers.

Configuration

CUPS

There are two options for setting device-uri with lpadmin command using ccp://localhost:59687 and ccp:/var/ccpd/fifo0.

Make sure cupsd is started

root #/etc/init.d/cupsd status

if it is not, start it first

root #/etc/init.d/cupsd start

Option 1: Using ccp://localhost:59687

The printer driver file can be found in /usr/share/cups/model. For the printer model, use the ShortNickName found inside the PPD, or take it directly from the file name, for example CNCUPSLBP6310CAPTK.ppd

Alternatively you could check the table provided on the Ubuntu help page, which matches each supported printer with its corresponding PPD.

CAPT

Next you'll need to register the printer with the CAPT driver itself via ccpdadmin:

USB printers

root # ccpdadmin -p printer_model -o usb_port

e.g.

root #ccpdadmin -p LBP6310 -o /dev/usb/lp0

network printers

root # ccpdadmin -p printer_model -o net:ip_address

e.g.

root #ccpdadmin -p LBP6310 -o net:192.168.1.100

Starting service

After this you will need to start ccpd service:

root # /etc/init.d/ccpd start

And add it do default init.

NoteIt is know that this service can freak out and use 100% of CPU, it usually means that it is started before cupsd.

Status Monitor

The driver includes a status monitor GUI which can be launched with

user $captstatusui -P printer_model

e.g.

user $captstatusui -P LBP6310

If you only want the status monitor to pop up when a problem occurs, simply append the -e switch:

user $captstatusui -P LBP6310 -e

You may want to add this to your startup folder/script

NoteIf you are connecting your printer to a central CUPS print server, you may want to run the status monitor remotely using X11 forwarding and an SSH key without passphrase, restricted to running only this command

Troubleshooting

100% CPU

This is known to happen. ccpd service must be started aftercupsd and udevd.

module usblp

If Status monitor reports error "Check the DevicePath of /etc/ccpd.conf", then you probably don't have usblp kernel module. Run the following command:

lsmod | grep usblp

If it outputs nothing, load the module and restart ccpd:

root #modprobe usblp

root #ls -l /dev/usb/lp0

root #/etc/init.d/ccpd stop

root #/etc/init.d/ccpd start

usblp has been deprecated by CUPS and might not be automatically loaded when you connect your USB printer.

Device URI: ccp://localhost:59687 VS ccp:/var/ccpd/fifo0

On some systems setting printer with ccp://localhost:59687 does not work, in that case try Option 2 ccp:/var/ccpd/fifo0.

See Section for configuring CUPS.

CUPS

Use cups web interface to detect problem http://localhost:631 it can help with different issues. Since Canon's this drivers are notorious for not providing any debug information.

64-bit Systems

Proprietary part of this module is complied for 32-bit systems. This can cause problems mostly related to libc6 and libpopt0 libraries on which it depends. You can check that with:

Alternatives

Those were really nice open source drivers, that were actually working at the time, but only had one release. It would be nice if someone would take over those projects and keep them alive. Until then, we will have to use official ones.