Contents |
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:
- Ubuntu 14.04 - Trusty
- Ubuntu 13.10 - Salamander
- 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 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