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:
-
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. -
The Finicky
ccpdDaemon: The official driver requires a proprietary background daemon (ccpd) talking overccp://localhost:59687. If you turn your printer off and back on,ccpdfrequently hangs and requires a manual service restart before you can print again. -
Ghost USB Queues: Because
ccpduses 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
You should see output similar to:
Bus 003 Device 006: ID 04a9:271a Canon, Inc. LBP6000
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
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
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
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
cupsdis permitted to execute the filter:
sudo restorecon -Rv /usr/lib/cups/filter /usr/share/cups/model
Now enable and restart CUPS:
sudo systemctl enable --now cups
sudo systemctl restart cups
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
Example output:
direct usb://Canon/LBP6000/LBP6018?serial=0000B1A8M1qu
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
(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
Check the printer status with:
lpstat -p CanonLBP6000
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
- 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
-
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
rastertocaptyour model by adding these two lines to/etc/cups/cups-files.confand restarting CUPS:
PassEnv CAPT_MODEL
SetEnv CAPT_MODEL LBP6000/LBP6018
Top comments (0)