Introduction


Canon laser printers are supplied with Canon Advanced Printing Technology (CAPT), a proprietary closed-source printer driver software-stack developed by Canon. For an alternative open source driver, see foo2capt.

These instructions will help get Canon's CAPT drivers installed for your LBPxxxx and automatically starting with monitor on:

  1. Ubuntu 14.04 - Trusty
  2. Ubuntu 13.10 - Salamander
  3. Ubuntu 12.04 - Pangolin

For other canon printers see: HardwareSupportComponentsPrinters/CanonPrinters and its sub-articles but hopefully yours is in the list below.


Supported Printers Canon CAPT Driver v2.6


According to the official Canon driver documentation:

See extra notes after table where there are *'s.

Please update if your get an unlisted printer/ubuntu version working by going to the top of the page and finding the edit link at the very top of the screen (requires login)

Printer Name

PPD File Name

Verified, Ubuntu Releases

LBP9100C

CNCUPSLBP9100CCAPTK.ppd

LBP7210Cdn

CNCUPSLBP7210CCAPTK.ppd

LBP7200C series

CNCUPSLBP7200CCAPTK.ppd

10.10/11.04

LBP7200Cdn (network mode)

CNCUPSLBP7200CCAPTK.ppd

10.10/11.04

LBP7018C/LBP7010C

CNCUPSLBP7018CCAPTK.ppd

LBP6310dn

CNCUPSLBP6310CAPTK.ppd

LBP6300

CNCUPSLBP6300CAPTK.ppd

10.10

LBP6300n

CNCUPSLBP6300nCAPTK.ppd

LBP6200

CNCUPSLBP6200CAPTK.ppd

LBP6020

CNCUPSLBP6020CAPTK.ppd

LBP7210Cdn

CNCUPSLBP7210CCAPTK.ppd

LBP7200C series

CNCUPSLBP7200CCAPTK.ppd

10.10/11.04

LBP7200Cdn (network mode)

CNCUPSLBP7200CCAPTK.ppd

10.10/11.04

LBP7018C/LBP7010C

CNCUPSLBP7018CCAPTK.ppd

LBP6310dn

CNCUPSLBP6310CAPTK.ppd

LBP6300

CNCUPSLBP6300CAPTK.ppd

10.10

LBP6300n

CNCUPSLBP6300nCAPTK.ppd

LBP6200

CNCUPSLBP6200CAPTK.ppd

LBP6020

CNCUPSLBP6020CAPTK.ppd

LBP6000 LBP6018

CNCUPSLBP6018CAPTK.ppd

13.10(64bit)/12.10/12.04(32bit)

LBP5300

CNCUPSLBP5300CAPTK.ppd

LBP5100

CNCUPSLBP5100CAPTK.ppd

10.10

LBP5050 series

CNCUPSLBP5050CAPTK.ppd

9.10/9.04

LBP5000

CNCUPSLBP5000CAPTK.ppd

LBP3500

CNCUPSLBP3500CAPTK.ppd

LBP3310

CNCUPSLBP3310CAPTK.ppd

LBP3300

CNCUPSLBP3300CAPTK.ppd

12.04

LBP3250

CNCUPSLBP3250CAPTK.ppd

12.04/14.04 32 bit

LBP3210

CNCUPSLBP3210CAPTK.ppd

LBP3200

CNCUPSLBP3200CAPTK.ppd

10.04

LBP3150 / LBP3108 / LBP3100

CNCUPSLBP3150CAPTK.ppd

12.04

LBP3100 / LBP3108 / LBP3150

CNCUPSLBP3150CAPTK.ppd

10.10

LBP3010 / LBP3018 / LBP3050

CNCUPSLBP3050CAPTK.ppd

13.10/12.04/11.10/11.04/10.10/10.04/9.10/9.04

LBP3000

CNCUPSLBP3000CAPTK.ppd

11.04

LBP2900

CNCUPSLBP2900CAPTK.ppd

11.04/10.10/10.04/9.10/9.04

LBP-1210

CNCUPSLBP1210CAPTK.ppd

10.10/10.04/9.10/9.04

LBP-1120

CNCUPSLBP1120CAPTK.ppd

13.10/13.04/12.10/12.04/10.10/9.10.9.04

LBP-810**

CNCUPSLBP1120CAPTK.ppd

11.04/10.10/10.04/9.10/9.04

** LBP-810 is not officially supported in version 2.3 of the Canon Driver


Ubuntu 14.04 Install


Start by following the setup procedure for Ubuntu 13.10 (below). After you've added the printer it most likely will not print anything, even though cups sees it. I had to fix three issues when configuring a Canon LBP6000B:

  • Only one ccpd process running after system startup. A workaround is in the "Known issues" section below.
  • The printer device path in /etc/ccpd.conf was wrong: ccpd was looking for /dev/usb/lp0, but the correct device file was /dev/lp0 instead. Fix this in the config file and restart ccpd.
  • AppArmor may be blocking communication between ccpd and cupsd. To verify this tail /var/log/syslog when trying to print a test page. You can work around this by putting AppArmor to complain mode for ccpd with "aa-complain /usr/sbin/cupsd".

The driver also seemed to crash occasionally, causing apport (the Ubuntu bug reporting tool) dialog to pop up. Besides that the driver and ccpd seemed to work ok on Ubuntu 14.04.


Ubuntu 13.10 Install


For the 2.6 driver download:

Find the debian packages in the v2.60 drivers deb folder 32/64 bit:

  • cndrvcups-capt.deb

    cndrvcups-common.deb

Then follow the canon guide v2.60 carefully. My install commands were (You must modify these for your specific printer):

sudo /etc/init.d/cups restart
sudo lpadmin -p LBP3010 -m CNCUPSLBP3050CAPTK.ppd -v ccp://localhost:59687 -E
sudo ccpdadmin -p LBP3010 -o /dev/usb/lp0
sudo update-rc.d ccpd defaults

Afterwards in system settings->printers you will see two printers set the LBP3010 or whatever you decided to call your printer to the default. The other printer right click and untick shared and enabled.

If things won't work, you may try changing the port from 59687 to 59787 by going to System settings -> Printers and opening the printer properties windows (accessible by right-clicking the printer). (For more information about this, see the old Ubuntu 12.04 instructions below and this thread on Debian User Forums.)


Status Monitor & Cleaning


Manually Running Monitor

The Canon status monitor can alert you to any issues with your printer. This can be run directly on the terminal by issuing this command:

captstatusui -P <Your printer name as specified in cups>
My printers example: captstatusui -P LBP3010

You will be presented with the User Interface and it should say ready to print. If not make sure the printer is switched on.

Running Monitor on Startup

If we want the monitor to run each time the computer is switched on we can add it to the as a startup application by searching for and running "Startup Applciations" from the hub.

Click the Add button.

Name:Canon Printing Status Monitor

Command: captstatusui -e -P <Your printer name as specified in cups>

Description: Hidden until error occurs

The -e option causes the monitor to stay hidden until an error occurs like when you run out of paper.

Cleaning

If for any reason you need to clean the printer you can access this tool from the status monitor. It can be found in the app menu system under Option->Utility->Cleaning... This feature would be useful if you are getting streaks/lines on your print outs.


Printing a Test Page


At this point you can test your printer by going to: System Settings->Printers

You should see a icon for the printer you have just setup. There maybe another printer in there with a similar name just ignore this one for the time being. Right click on the printer and choose properties. Click the buttons "Print Test Page". Hopefully your page should print.


Restart and Verify


Now it is time to restart the system. If all goes well the system should restart and at the login page be able to print from another computer. This guide will not cover setting up cups for network printing.

After you login open a terminal and run:

sudo service ccpd status
/usr/sbin/ccpd: 1245 1141

This shows the process Id's for the two ccpd processes that should now be running. If you only see one then you still have a problem with the way the ccpd daemon is starting. Please see further down the page for hints.

At this point you should again be able to print a test page all being well. This means you machine is now configured to print correctly.

If you run into problems try turning your printer off, restart your computer and only turn your printer on, after you have logged in.


Information past this point has been kept for reference only.



Ubuntu 12.04 Install

For a new install please see the html guide in the 2.4 driver download:

For newer 2.6 driver download:

Find the debian packages in the v2.40 drivers deb folder:

  • cndrvcups-capt.deb

    cndrvcups-common.deb

Install from the v2.40 driver as you would any other package with Ubuntu Software Center. Then follow the canon guide v2.40 carefuully making sure that you change this line accordingly:

sudo /usr/sbin/lpadmin -p LBP5000 -m CNCUPSLBP5000CAPTK.ppd -v ccp://localhost:59787 -E

The manual says ccp://localhost:59687 but Ubuntu by default is using 59787. This will give you a headache if you do not change it. (The file /etc/ccpd.conf defines UI_Port 59787 and PDATA_Port 59687. So, both these ports need to be open in the firewall setting.)

* Note: Ubuntu 12.04 has again blacklisted the usblp module which creates the /dev/usb/lp0 device link. To solve this problem do this

sudo nano /etc/modprobe.d/blacklist-cups-usblp.conf

Then comment the file to look like this, canons driver does not talk to the printer through cups:

# cups talks to the raw USB devices, so we need to blacklist usblp to avoid
# grabbing them
# blacklist usblp

* Note: The later sections of this article under 'Adding a printer' and 'Troubleshooting' suggest using 'ccp:/var/ccpd/fifo0'. That works, but you have to ensure /var/ccp/fifo0 exists with correct ownership/mode. Using 'ccp://localhost:59787' is simpler as it requires no extra steps involving fifo file.

Please note after installing the driver you must still add and configure your printer (read below).


Automated install using a BASH script

A script has been developed to automate the install of this driver on both kinds of architectures (amd64, i386). Unfortunately Canon doesn't supply 64bit DEB packages and compiling the driver from source is a bit tricky. Therefore using this script is the best approach for users of 64bit Ubuntu, while for the 32bit users it's just an automation of the manual install mode.

The archive containing the script and the packages needed for the install can be found here. Please read the README file contained in the archive for more details or use the -h or --help command line options when invoking the script.

For questions, details, bugs or enhancements, please visit this page.


Adding a printer

Configuring CUPS

System->Administration->Printing add printer. Choose "Add printer". Do not choose USB Printer found by Ubuntu here. Select "CAPT Printer". You should see "ccp" in URI. Change it so URI should become "ccp:/var/ccpd/fifo0". Click "next", find your model and add your printer. Choose English variant if you see Japanese and English variants. Also If you do not have you exact model in list, choose nearest. For example, for LBP 810, I choose "LBP 1120".

To look for available models you may use command:

$ find /usr/share/cups/model -name '*LBP*K.ppd'

Close configuration dialog, open again and rename your printer to, say, "LBP810". Remember name you chose, as later commands will refer to it.

Instead of GUI actions, you may try this:

sudo /usr/sbin/lpadmin -p LBP810 -m CNCUPSLBP1120CAPTK.ppd -v ccp:/var/ccpd/fifo0 -E

Again, choose another .ppd name, if you have another printer...

Configuring Canon services

$ sudo /etc/init.d/ccpd restart
$ sudo /etc/init.d/ccpd status
Canon Printer Daemon for CUPS: ccpd: 8956 8954

If you see only one number at the end of line, edit /etc/ccpd.conf and add this:

<Printer  LBP810>
DevicePath  /dev/usb/lp0
</Printer>

Instead you may try this:

$ sudo /usr/sbin/ccpdadmin -p LBP810 -o /dev/usb/lp0

Next, check for record in /etc/ccpd.conf

For a network printer such as the LBP7200Cdn, the "DevicePath" should say "net:<ipaddress>", so for example if your network printer is on IP address 192.169.1.69, then the entry in /etc/ccpd.conf should say

<Printer Canon-LBP7200C-CAPT>
DevicePath net:192.168.1.69
</Printer>

Now, restart canon services:

$ sudo /etc/init.d/ccpd restart
$ sudo /etc/init.d/ccpd status
Canon Printer Daemon for CUPS: ccpd: 8956 8954

You should see two numbers at the end. If you do, you are lucky Smile :) If you only see one number here, then try restarting the computer, or possibly you could try replacing the ccpd start up script with the one on this page, and then restart the computer.

Starting/stopping on USB add/Remove

Fill /etc/udev/rules.d/85-canon-capt.rules with your preferred editor

$ gksudo gedit /etc/udev/rules.d/85-canon-capt.rules

with this:

KERNEL=="lp*", SUBSYSTEMS=="usb", ACTION=="add", SYSFS{idVendor}=="04a9", RUN+="/bin/bash /etc/init.d/ccpd start"
KERNEL=="lp*", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/bash /etc/init.d/ccpd stop"

* Note: SYSFS{idVendor} support is removed and should be changed to ATTRS{idVendor} in version 12.04 and higher.

Next, reload UDEV config:

$ sudo udevadm control --reload-rules

Now, using

$ sudo /etc/init.d/ccpd status

check that printer started/stopped on adding/removing it from USB.

diagnostics:

mmarkk@imac:~$ sudo ccpdadmin

Usage:
  ccpdadmin [-p Printer-name -o Printer-dev-path]
  ccpdadmin [-x Remove-Printer-name]


 CUPS_ConfigPath = /etc/cups/
 LOG Path        = None
 UI Port         = 59787

 Entry Num  : Spooler   : Backend       : FIFO path             : Device Path   : Status
 ----------------------------------------------------------------------------
     [0]    : LBP810    : ccp           : /var/ccpd/fifo0       : /dev/usb/lp0  :

Troubleshooting

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:

sudo modprobe usblp
ls -l /dev/usb/lp0
sudo /etc/init.d/ccpd restart

Note: As of Ubuntu 11.10, usblp has been deprecated and will not be automatically loaded when you connect your USB printer (see bug #842823]).


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:

sudo mkdir /var/ccpd
sudo mkfifo /var/ccpd/fifo0
sudo chown -R lp:lp /var/ccpd

(Issue might be related to AppArmor, also see this bug.


Known Issues

64-bit Systems

Canon CAPT Printer Driver for 64-bit architecture include the proprietary closed-source 32-bit executable captfilter (called by pstocapt CUPS filter, used to convert PostScript data to CAPT data stream) which depends on 32-bit libraries libc6 and libpopt0. The libraries are not installed as dependencies. You can use the following commands to check whether the captfilter is working:

$ ldd /usr/bin/captfilter

Messages like "not a dynamic executable" or "libpopt.so.0 => not found" mean that your system affected by the problem. For a workaround install the following packages:

# apt-get install libc6:i386 libpopt0:i386

Below is an example of working captfilter:

$ ldd /usr/bin/captfilter
linux-gate.so.1 (0xf76eb000)
libpopt.so.0 => /usr/lib32/libpopt.so.0 (0xf76a6000)
libc.so.6 => /lib32/libc.so.6 (0xf7501000)
/lib/ld-linux.so.2 (0xf76ec000)

There may be other dependencies to 32-bit libraries. To find more, you may use the following command:

$ ldd /usr/bin/capt* | sort | uniq | grep "not found"

In one system, three libraries were missing. After installing them:

$ sudo apt-get install zlib1g:i386 libxml2:i386 libstdc++6:i386

the printer started working.

UDEV rules

You can find the UDEV rules described earlier not working then the system-config-printer-udev package is installed. The package installs system UDEV rules "/lib/udev/rules.d/70-printers.rules" (used to automatically configure printers) which may prevent execution of your rules. You can remove the problem package:

# apt-get purge system-config-printer-udev

Only one ccpd process running after system startup

For normal operation two ccpd processes should be running in a system. The ccpd daemon depends on running cups daemon before forking the second process. You can use the following method to workaround the problem:

1. Enable the cups init script (update-rc.d cups defaults).

2. Instruct the ccpd init script to run after the cups init (update-rc.d ccpd defaults 99), or add "sleep 10 && /etc/init.d/ccpd start" in /etc/rc.local script.

If you want to use UDEV rules and startup script, be aware that UDEV rules executes before the CUPS init script, so it may be usefull to restart the ccpd init script rather then simply start. For example, you can place the following string in "/etc/rc.local":

sleep 10 && /etc/init.d/ccpd restart

For Canon LBP-6020B only viable option was disabling the initscript (update-rc.d -f ccpd remove) and creating Upstart job /etc/init/ccpd with following content form http://www.linuxmania.jp/ubuntu_service.html

description "Canon Printer Daemon for CUPS (ccpd)"
author "LinuxMania <customer@linuxmania.jp>"
start on (started cups and runlevel [2345])
stop on runlevel [016]
respawn
expect fork
exec /usr/sbin/ccpd


CategoryHardware

CanonCaptDrv190 (last edited 2015-11-17 21:18:54 by 35-80-196-88)