Printing on Linux has come a long way, but in 2011, getting a Canon printer to work on Ubuntu often meant wrestling with proprietary drivers, architecture mismatches, and CUPS configuration. Canon did provide Linux drivers for many of their inkjet and laser modelsโthey just didn’t make it easy. This guide walks through the entire process: finding the right driver, handling dependencies, installing the .deb packages, configuring CUPS, and troubleshooting the issues that tripped up most users.

Before You Begin
Gather this information first:
- Exact printer model (e.g., Canon PIXMA MP280, Canon LBP6000). Check the label on the front or top of the printer.
- Ubuntu version โ run
lsb_release -ain a terminal. - System architecture โ run
uname -m. If it returnsx86_64, you’re on 64-bit. Ifi686, 32-bit. - Connection type โ USB or network. Have the cable connected or the printer on the same network before starting.
Step-by-Step Installation
Step 1 โ Download the Canon Linux Driver
Canon’s support site provides Linux drivers for supported models. Navigate to your printer’s support page and look for the “Linux” option under Drivers & Downloads. The driver package is typically a .tar.gz archive containing .deb and .rpm packages.
Download the archive to your ~/Downloads directory.
Step 2 โ Extract the Archive
Open a terminal and navigate to the download:
cd ~/Downloads
tar xvf canon_printer_driver_*.tar.gz
This creates a directory structure containing the driver packages. The exact layout varies by model, but you’ll typically find directories like cnijfilter-common and cnijfilter-mp280series (or your model equivalent).
Step 3 โ Install Required Dependencies
Canon’s drivers depend on several libraries. Install them first:
sudo apt-get update
sudo apt-get install libcupsimage2 libcups2 libpango1.0-0 libxml2
For 64-bit systems installing 32-bit drivers, add the compatibility libraries:
sudo apt-get install ia32-libs
On Ubuntu 12.04 and later, ia32-libs may be replaced by specific 32-bit packages. Install them as needed:
sudo apt-get install lib32stdc++6 lib32z1
Step 4 โ Install the .deb Packages
Navigate into the extracted directory. You’ll find one or more .deb files. Install the common package first, then the model-specific package:
cd canon_driver_directory/packages/
sudo dpkg -i cnijfilter-common_*.deb
sudo dpkg -i cnijfilter-mp280series_*.deb
Replace mp280series with your actual model’s package name. If dpkg reports missing dependencies, fix them:
sudo apt-get install -f
Then re-run the dpkg commands.

Step 5 โ Verify the Driver Installation
Check that the Canon filter was installed correctly:
ls /usr/lib/cups/filter/ | grep cif
You should see files like cifmp280 (or your model equivalent). Also confirm the PPD file exists:
ls /usr/share/ppd/cnijfilter-mp280series/
Step 6 โ Add the Printer in CUPS
Open the CUPS web interface in your browser at http://localhost:631. Navigate to Administration โ Add Printer.
- Select your Canon printer from the list of discovered printers (USB or network).
- Give it a name and description.
- On the driver selection page, choose Provide a PPD File and browse to the PPD installed in
/usr/share/ppd/cnijfilter-*/. - Set default options (paper size, quality, colour mode) and click Add Printer.
Alternatively, add the printer via the command line:
sudo lpadmin -p CanonMP280 -E -v usb://Canon/MP280%20series -P /usr/share/ppd/cnijfilter-mp280series/canonmp280.ppd
Adjust the URI and PPD path for your model.
Step 7 โ Set as Default Printer
sudo lpadmin -d CanonMP280
Step 8 โ Print a Test Page
echo "Test page from Ubuntu" | lp -d CanonMP280
Or open the CUPS web interface, click your printer, and select Print Test Page.

Network Printer Configuration
If your Canon printer connects over Wi-Fi or Ethernet, the process differs slightly at the CUPS discovery step. The printer URI format for network printers is typically:
socket://192.168.1.100:9100
Or for Canon’s BJNP protocol:
bjnp://192.168.1.100
To use BJNP, install the cups-backend-bjnp package:
sudo apt-get install cups-backend-bjnp
Then restart CUPS:
sudo service cups restart
The network printer should now appear in the CUPS Add Printer discovery list.
Troubleshooting Common Issues
Printer Not Detected via USB
Check the connection:
lsusb | grep -i canon
If nothing appears, try a different USB cable or port. Some Canon printers also need to be powered on and in “ready” state (not sleep mode) before they’re detected.
Check permissions:
ls -la /dev/bus/usb/*/*
Your user should have read/write access. Adding your user to the lp and lpadmin groups helps:
sudo usermod -aG lp,lpadmin $USER
Log out and back in for group changes to take effect.
Driver Architecture Mismatch
If dpkg fails with errors about wrong architecture, verify what you downloaded matches your system. The error typically reads:
package architecture (i386) does not match system (amd64)
Enable multi-arch support on 64-bit systems:
sudo dpkg --add-architecture i386
sudo apt-get update
Then retry the installation.
Print Jobs Stuck in Queue
Check the CUPS error log:
tail -50 /var/log/cups/error_log
Common causes include incorrect PPD selection, missing filter files, or permission issues. Restart CUPS and try again:
sudo service cups restart
Clear stuck jobs:
cancel -a
Common Pitfalls
Installing RPM packages instead of DEB. Canon’s Linux driver archives contain both .rpm and .deb packages. Ubuntu uses .deb. If you accidentally try to install an RPM, it will fail. Always navigate to the debian or packages subdirectory for .deb files.
Skipping the common package. The model-specific driver depends on cnijfilter-common. Installing the model package alone will either fail outright or result in a non-functional driver. Always install the common package first.
Using the wrong PPD file. If CUPS offers a generic Canon driver during setup, it may not support your model’s full feature set (duplex printing, borderless printing, specific paper trays). Always use the PPD that was installed by the Canon driver package.
Firewall blocking CUPS on network printers. If your printer is on the network but not discovered, ensure UDP port 8612 (BJNP) or TCP port 9100 (AppSocket/JetDirect) is not blocked by your firewall:
sudo ufw allow 8612/udp
sudo ufw allow 9100/tcp
Final Thoughts
Canon printer installation on Ubuntu in 2011 was undeniably more involved than on Windowsโdownload, extract, satisfy dependencies, install packages, configure CUPS. But once configured, the printer worked reliably through standard Linux printing infrastructure. The key was patience with the initial setup: right driver, right architecture, right PPD, right order. Get those four things right and printing just worked.