CUPS driver for Canon CAPT v1 printers based on reverse engineering of the original driver.
Implemented as a CUPS backend using libusb.
The driver is divided into two parts: the CUPS side (this repository) and the protocol side (libcapt).
| Model | Cartridge | PPM (A4) | Max Resolution | Year (approx.) |
|---|---|---|---|---|
| LBP800 | EP-22 | 8 | 600 dpi | 1999-2001 |
| LBP810 | EP-22 | 8 | 600 dpi | 2001-2002 |
| LBP1120 | EP-22 | 10 | 600 dpi | 2003-2004 |
| LBP1210 | EP-25 | 14 | 600 dpi | ~2002 |
| LBP3200 | EP-26/EP-27 | 18 | 600 dpi | 2004-2006 |
| Feature | Status |
|---|---|
| 600 DPI | SUPPORTED |
| 300 DPI | NOT IMPLEMENTED |
| Custom media size | NOT IMPLEMENTED |
| Borderless printing | SUPPORTED* |
| Multi-page jobs | SUPPORTED |
| Cleaning | SUPPORTED |
| Toner saving | SUPPORTED |
| Toner density | SUPPORTED |
| Media type selection | SUPPORTED |
| Automatic Image Refinement | SUPPORTED |
* The hardware cannot print ~4 mm from the top anyway.
At the moment, the protocol is quite well known. The raster format (SCoA compression algorithm) is also well known and, theoretically, is completely reliable.
- gcc >= 11 or clang >= 16
- cmake >= 3.21
- git
- python3
- libcapt >= 1.0 (downloaded automatically by CMake FetchContent)
- cups
- libusb-1.0
cmake -S. -B build
cmake --build buildThis command will install the backend, PPD files, and quirks that prevent Canon CAPT v1 printers from being detected by the CUPS USB backend:
cmake --install buildIf you don't want to blacklist Canon CAPT v1 printers for the CUPS USB backend, you can use:
cmake --install build --component=base- List devices:
lpinfo -v
# Example output
direct usb://Canon/LBP3200?serial=00000000
direct captusb://Canon/LBP3200?drv=capt&serial=00000000- Copy captusb URI and add printer using lpadmin:
lpadmin -p LBP3200 -E -v 'captusb://Canon/LBP3200?drv=capt&serial=00000000' -m LBP3200CAPTPPD.ppd- Verify with lpstat:
lpstat -v
# Example output
device for LBP3200: captusb://Canon/LBP3200?drv=capt&serial=00000000- Go to admin page (default: http://127.0.0.1:631/admin).
- Click “Find New Printers”.
- Select the captusb printer.
- And the model should be like
Canon LBP3200, captppd 0.1.0.
- Make sure that your printer is displayed in the
lsusboutput. - Execute the backend directly:
sudo $(cups-config --serverbin)/backend/captusb- If the backend couldn't detect the printer, create an issue.
- Check
lpstat -vand make sure that thecaptusbbackend is being used. - Make sure you are using the correct PPD (should be like
Canon LBP3200, captppd 0.1.0, notCanon LBP3200 CAPT ver.1.5). - Enable CUPS debug logging:
cupsctl --debug-logging- See logs at
/var/log/cups/error_log.
To filter out unwanted messages, you can use grep:
grep '\] \[Job' /var/log/cups/error_log- Create an issue and attach the log.
- UoWPrint — convert your old USB printer (or MFP) into Wi-Fi printer/MFP
- mounaiban/captdriver — open source CUPS driver for the newer Canon LBP models
PVS-Studio — static analyzer for C, C++, C#, and Java code.
captppd is licensed under a 2-clause BSD license.