Canon CAPT Printer
This guide is not working and is deprecated since Canon has not released new driver since 2017. which is not possible to build with current versions of tools and libraries.
This page explains setup and configuration of Canon CAPT Printers.
The Canon i-Sensys series of laser printers are supported under CUPS by Canon's proprietary Canon Advanced Printing Technology (CAPT) backend.
Supported models are: LBP9100C, LBP7210Cdn, LBP7200C series, LBP7200Cdn (network mode), LBP7018C, LBP7010C, LBP6310dn, LBP6300, LBP6300n, LBP6200, LBP6020, LBP6018, LBP6000, LBP5300, LBP5100, LBP5050 series, LBP5000, LBP3500, LBP3310, LBP3300, LBP3250, LBP3210, LBP3200, LBP3150, LBP3108, LBP3100, LBP3050, LBP3018, LBP3010, LBP3000, LBP2900, LBP-1210, LBP-1120, LBP-810
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.
This driver contains binary blobs. Some i-Sensys printers are usable with open Generic PCL Laser Printer driver for basic printing needs.
Make sure net-print/cups is installed:
emerge --ask net-print/cups
The cups service must be started before the driver(s) can be installed.
If OpenRC is used, then the following command can be issued to start the cups service.
To have it started automatically at boot time, use rc-update:
rc-update add cupsd default
To start CUPS immediately, issue the following command:
systemctl start cups
To start it automatically at boot:
systemctl enable cups
Installing the drivers
Drivers are located on Gentoo's Bugzilla bug #130612
Ebuilds for latest version 2.60 are in github repo: https://github.com/homoludens/canoncapt-euilds
For using it you would need to create custom repository explained on page Custom ebuild 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:
In that case you will need to issue this commands to be able to emerge ebuilds:
After that you will need to emerge them (net-print/cndrvcups-capt depends on net-print/cndrvcups-common):
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.
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:
if it is not, start it first:
Option 1: Using ccp://localhost:59687
First the printer needs to be registered with CUPS using lpadmin:
lpadmin -p printer_model -m printer_driver_file -v ccp://localhost:59687 -E
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.
Some models have multiple PPDs, where the last letter indicates the regional model (J = Japan, K = United Kingdom, S = United States)
For example, for the Canon LBP6310dn (UK model) you would enter
lpadmin -p LBP6310 -m CNCUPSLBP6310CAPTK.ppd -v ccp://localhost:59687 -E
Option 2: Using ccp:/var/ccpd/fifo0
If previous option is not working for you you can try:
If the status monitor works but printing does not, make sure that /var/ccpd/fifo0 actually exists:
ls -l /var/ccpd
When missing, it can be added manually:
chown -R lp:lp /var/ccpd
lpadmin -p LBP6310 -m CNCUPSLBP6310CAPTK.ppd -v ccp:/var/ccpd/fifo0 -E
Next you'll need to register the printer with the CAPT driver itself via ccpdadmin:
ccpdadmin -p printer_model -o usb_port
ccpdadmin -p LBP6310 -o /dev/usb/lp0
ccpdadmin -p printer_model -o net:ip_address
ccpdadmin -p LBP6310 -o net:192.168.1.100
After this you will need to start ccpd service:
And add it do default init.
It is know that this service can freak out and use 100% of CPU, it usually means that it is started before cupsd.
The driver includes a status monitor GUI which can be launched with
captstatusui -P printer_model
captstatusui -P LBP6310
If you only want the status monitor to pop up when a problem occurs, simply append the -e switch:
captstatusui -P LBP6310 -e
You may want to add this to your startup folder/script
If 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
This is known to happen. ccpd service must be started after cupsd and udevd.
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:
ls -l /dev/usb/lp0
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.
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.
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:
Additionally linked ebuilds are only tested for x86.
(I hope someone with amd64 will be able to provide support or more info, until then take a look at https://forums.gentoo.org/viewtopic-t-1017844-highlight-capt.html - it has useful information about amd64)
Until someone helps with amd64, his should be helpful and should be done before emerging driver:
emerge --ask x11-libs/pangox-compat
echo "dev-libs/popt abi_x86_32" >>/etc/portage/package.use
emerge --ask dev-libs/popt
echo "dev-libs/libxml2 abi_x86_32" >>/etc/portage/package.use
emerge --ask dev-libs/libxml2
Last command also pulls sys-libs/zlib with abi_x86_32 use flag.
Helpful Gentoo forum topics
https://forums.gentoo.org/viewtopic-t-1017844-highlight-capt.html -- this one is useful for amd64
Expect them. And please report bugs/problems you have with ebuilds to bug #130612
While searching for solutions of your problems with some of this printers you will get to this pages, eventually:
Driverless printing. To be tested/verified by someone owning such printer
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.