A reverse-engineered CUPS driver for Canon CAPT-based printers (LBP2900, LBP2900B).
- 5 Toner Density Levels: Lightest, Light, Normal, Dark, Darkest
- Toner Save Mode: Reduce toner consumption
- Multiple Media Types: Plain Paper, Heavy Paper, Transparency, Envelope, etc.
- 11 Page Sizes: A4, Letter, Legal, Executive, A5, B5, Envelopes, Index Card
- Auto Paper Size Detection: Automatically detects paper size from dimensions
- Job Metadata: Sends hostname, username, and document name to printer
- LED Status: Proper LED blinking for paper-out and other conditions
- Communication Retry: Automatic retry on USB communication errors
- Graceful Job Cancellation: Handles SIGTERM/SIGINT for clean cancellation
# Using yay
yay -S canon-lbp2900-capt
# Using paru
paru -S canon-lbp2900-capt
# Manual AUR installation
git clone https://aur.archlinux.org/canon-lbp2900-capt.git
cd canon-lbp2900-capt
makepkg -si- CUPS development libraries
- autoconf, automake
- GCC compiler
Debian/Ubuntu:
sudo apt install cups libcups2-dev autoconf automake build-essentialFedora/RHEL:
sudo dnf install cups cups-devel autoconf automake gccArch Linux:
sudo pacman -S cups autoconf automake base-develgit clone https://github.com/gauravyad69/Canon-LBP2900B.git
cd Canon-LBP2900B
# Generate build system
aclocal
autoconf
automake --add-missing
# Configure and build
./configure
make
# Install (as root)
sudo make install
# Or manually install:
sudo cp src/rastertocapt /usr/lib/cups/filter/
sudo cp Canon-LBP-2900.ppd /usr/share/cups/model/
# Restart CUPS
sudo systemctl restart cupsAfter installation:
- Connect the printer via USB
- Open CUPS web interface: http://localhost:631
- Go to Administration → Add Printer
- Select your Canon LBP2900 from the USB devices
- Choose "Canon LBP2900 CAPT" as the driver
- Configure print options as needed
Or via command line:
# List available devices
lpinfo -v | grep -i canon
# Add printer (replace usb://... with your device URI)
sudo lpadmin -p LBP2900 -E -v "usb://Canon/LBP2900?serial=..." -m Canon-LBP-2900.ppd
# Optional: Reject jobs when printer is offline (recommended)
sudo lpadmin -p Canon-LBP2900 -o printer-error-policy=abort-jobAvailable through CUPS print dialog or lpoptions:
| Option | Values | Description |
|---|---|---|
| TonerDensity | 1-5 | Toner density (1=Lightest, 5=Darkest) |
| TonerSave | Off, On | Enable toner saving mode |
| MediaType | Plain, Heavy, HeavyH, PlainL, Transparency, Envelope | Paper type |
| PageSize | A4, Letter, Legal, Executive, A5, B5, Envelope#10, EnvelopeC5, EnvelopeDL, EnvelopeMonarch, IndexCard | Paper size |
Example:
lp -d LBP2900 -o TonerDensity=3 -o MediaType=Plain document.pdf# Check USB connection
lsusb | grep Canon
# Should show: 04a9:2676 Canon, Inc. LBP2900
# Check CUPS status
sudo systemctl status cups# Add user to lp group
sudo usermod -aG lp $USER
# Log out and back in# Enable CUPS debug logging
sudo cupsctl --debug-logging
# View logs
tail -f /var/log/cups/error_logSee the SPECS file for reverse-engineered protocol documentation.
GPL-2.0-or-later
- Original reverse engineering by Alexey Galakhov
- Additional features by Gaurav Yadav
- Based on USB traffic analysis of the official Canon Windows driver