DEV Community

Cover image for How to Install the Canon i-SENSYS LBP6000 Printer on Modern Fedora Linux
drLacheheb
drLacheheb

Posted on AI-assisted

How to Install the Canon i-SENSYS LBP6000 Printer on Modern Fedora Linux

If you own a Canon i-SENSYS LBP6000 (or LBP6000B / LBP6018) laser printer and tried plugging it into a modern Fedora Linux machine, you probably noticed right away that it refuses to print out of the box.

Even when GNOME Settings detects the USB printer, standard PostScript/PCL drivers won't work because the LBP6000 uses Canon's proprietary CAPT (Canon Advanced Printing Technology) protocol.

In this guide, we'll walk through why the old official Canon driver struggles on modern Fedora (tested on Fedora 45 x86_64) and how to set up the open-source captdriver, which works natively with CUPS without needing legacy 32-bit libraries or background daemons.


Why Skip Canon's Official CAPT Driver on Modern Fedora?

If you search older FedoraForum threads, the traditional method uses Canon's official linux-capt-drv (cndrvcups-common and cndrvcups-capt) RPM packages. On modern Fedora releases, that approach has major drawbacks:

  1. Legacy 32-bit Dependency Hell: Canon's driver was last updated around 2017. Even the 64-bit RPM relies on 32-bit (.i686) binary filters, deprecated GTK2/Glade libraries, and legacy /etc/init.d/ scripts.
  2. The Finicky ccpd Daemon: The official driver requires a proprietary background daemon (ccpd) talking over ccp://localhost:59687. If you turn your printer off and back on, ccpd frequently hangs and requires a manual service restart before you can print again.
  3. Ghost USB Queues: Because ccpd uses a virtual port, Fedora's automatic USB printer detection keeps creating a second, non-working USB printer queue every time you plug the printer in.

The Better Way: Open-Source captdriver (muxoc/captdriver-lbp6000)

The community-maintained muxoc/captdriver-lbp6000 fork adds native LBP6000/LBP6018 job prologue support and a matching PPD file to the open-source captdriver CUPS filter (rastertocapt). It compiles cleanly as a native 64-bit binary and talks directly to the standard usb:// CUPS backend.


Step-by-Step Installation Guide

Step 1: Verify USB Connection

Plug in your Canon LBP6000 via USB, turn it on, and check that Linux sees it:

lsusb | grep -i canon
Enter fullscreen mode Exit fullscreen mode

You should see output similar to:

Bus 003 Device 006: ID 04a9:271a Canon, Inc. LBP6000
Enter fullscreen mode Exit fullscreen mode

Step 2: Install Build Dependencies & CUPS

Open a terminal and install the compiler toolchain, autotools, and CUPS development headers:

sudo dnf install -y git autoconf automake libtool gcc make cups-devel cups
Enter fullscreen mode Exit fullscreen mode

Step 3: Clone and Compile captdriver-lbp6000

Clone the repository and compile the rastertocapt CUPS filter:

git clone https://github.com/muxoc/captdriver-lbp6000.git
cd captdriver-lbp6000
autoreconf -i
./configure
make
Enter fullscreen mode Exit fullscreen mode

Once finished, you will have the compiled filter binary at src/rastertocapt and the printer PPD profile at src/ppd/CanonLBP-6000-6018.ppd.


Step 4: Install the Filter, PPD, and Fix SELinux Contexts

Install the compiled filter into /usr/lib/cups/filter/ and the PPD into /usr/share/cups/model/:

sudo install -m 755 src/rastertocapt /usr/lib/cups/filter/rastertocapt
sudo install -D -m 644 src/ppd/CanonLBP-6000-6018.ppd /usr/share/cups/model/CanonLBP-6000-6018.ppd
Enter fullscreen mode Exit fullscreen mode

Important (Fedora SELinux Step): Because Fedora runs SELinux in enforcing mode by default, restore the default SELinux security contexts on the newly installed files so cupsd is permitted to execute the filter:

sudo restorecon -Rv /usr/lib/cups/filter /usr/share/cups/model
Enter fullscreen mode Exit fullscreen mode

Now enable and restart CUPS:

sudo systemctl enable --now cups
sudo systemctl restart cups
Enter fullscreen mode Exit fullscreen mode

Step 5: Detect the Printer USB URI

With the printer turned on, ask CUPS for the exact usb:// device URI:

sudo lpinfo -v | grep -i usb
Enter fullscreen mode Exit fullscreen mode

Example output:

direct usb://Canon/LBP6000/LBP6018?serial=0000B1A8M1qu
Enter fullscreen mode Exit fullscreen mode

Step 6: Register the Printer in CUPS

Copy the usb://... URI from Step 5 and register the printer queue using lpadmin:

URI="usb://Canon/LBP6000/LBP6018?serial=YOUR_SERIAL_HERE"
PPD="/usr/share/cups/model/CanonLBP-6000-6018.ppd"

sudo lpadmin -p CanonLBP6000 -E -v "$URI" -P "$PPD"
sudo lpoptions -d CanonLBP6000
sudo lpadmin -p CanonLBP6000 -o printer-error-policy=retry-job
sudo systemctl restart cups
Enter fullscreen mode Exit fullscreen mode

(Setting printer-error-policy=retry-job prevents CUPS from permanently pausing the printer queue if you accidentally print while the printer power switch is off.)


Step 7: Test Printing

Send a test job from the terminal:

echo "Hello from Fedora!" | lp -d CanonLBP6000
Enter fullscreen mode Exit fullscreen mode

Check the printer status with:

lpstat -p CanonLBP6000
Enter fullscreen mode Exit fullscreen mode

Troubleshooting Tips

  • Printer says disabled since ... - reason unknown: If the printer was off or busy when a job was sent, CUPS may pause the queue. Re-enable it with:
  sudo cupsenable CanonLBP6000
  sudo cupsaccept CanonLBP6000
Enter fullscreen mode Exit fullscreen mode
  • Inspecting CUPS logs: If a print job fails, enable debug logging and watch the CUPS log:
  sudo cupsctl --debug-logging
  sudo journalctl -u cups -f
Enter fullscreen mode Exit fullscreen mode
  • Forcing CAPT Model Detection (if needed): If the USB side-channel fails to report the IEEE 1284 device ID string fast enough, you can explicitly tell rastertocapt your model by adding these two lines to /etc/cups/cups-files.conf and restarting CUPS:
  PassEnv CAPT_MODEL
  SetEnv CAPT_MODEL LBP6000/LBP6018
Enter fullscreen mode Exit fullscreen mode

Top comments (0)