-
Notifications
You must be signed in to change notification settings - Fork 16
Home
Captdriver is a libre, open-source driver for Canon printers that only accept the proprietary Canon Advanced Printing Technology (CAPT) protocol and the associated compression formats. This includes many, but not all LBP Canon laser printers sold until the late 2000s.
Such printers were part of the Laser Shot product range, and in some regions, the i-SENSYS range. CAPT-only devices from the imageCLASS and imageRUNNER product lines have also been documented.
In CUPS terminology, captdriver acts both as a filter and a port monitor. It converts print data to a device-compatible format, while also monitoring the printer and coordinating print jobs as required by CAPT's full-time bi-directional operation.
Support for non-CAPT printers are beyond the scope of this project. CUPS has built-in support for PCL and IPP. Please check this list of other Canon printer-related projects if you have a device that uses CARPS or UFR.
This project is based on the works of Rildo Pragana, Nicolas Boichat, Benoit Bolsee, Alexey Galakhov, and Vitaliy Tomin.
This driver must be manually compiled and installed. To get started, go to the unified guide. The guide is written in a modular style to account for differences between operating systems or distros.
Also check out the Installation Examples, if it helps.
This fork was originally created to focus on maintaining LBP3000 support. It currently has three main goals:
-
Improve compatibility: enable use on a wider range of Linux distros and more operating systems and platforms.
- This depends on solving a long-standing problem with the CUPS-libusb interface.
-
Enhance usability: implement missing features and make the driver truly suitable for end-users.
-
Enable automatic installation and get the driver included in mainstream distro package repositories once goals 1 & 2 are achieved.
Maintaining similarity with the original source tree is a priority.
Alexey Galakhov has pretty much nailed the general technical details on how CAPT works, and his original driver performs well for documents with simple page layouts. This fork does pretty much the same in terms of performance and compatibility.
The following printer-host-operating system combinations have been found to work:
-
LBP2900
- x86-64(?): Manjaro, Void Linux
- ARMv7: Ubuntu 19.10
-
LBP3000
- x86-64: Debian 10.6, 10.7, Fedora 32
- aarch64/ARMv8-A: Alpine Linux 3.12
All tests on ARM-based systems were run on Raspberry Pi computers.
LBP3010 support has been documented, but not tested since commit 6938395.
LBP3100 support has been verified by at least one user (with an LBP3108) using Galakhov's original version. An edit has to be made to the source code before use.
End users with supported printers are welcome to try the driver, at their own risk. This software is licensed under the terms and conditions of the GNU General Public License, Version 3.
Issues with CUPS' USB backend has been limiting compatibility to a rather narrow list of architecture-OS combinations. This issue is discussed in greater detail in the following conversations:
- https://github.com/mounaiban/captdriver/commit/18797c4c8edf916add31c09a2c527cf284021e14#r38572647
- https://github.com/mounaiban/captdriver/issues/8
- https://github.com/agalakhov/captdriver/issues/7
Finding a workaround for these compatibility problems is currently a top priority.
Older CAPT printers made from the late 1990s to the early 2000s used a different compression algorithm that has not yet been implemented. There is an ongoing work in progress by Oleg Sazonov to implement SCoA support. For a brief description of the algorithm and associated codec see the SCoA Specifications.
SCoA support is required by LBP810 and LBP1120.
Drum cleaning, detection of service errors and Automatic Image Refinement are yet to be implemented.
The driver currently only recognises a few out of the many targeted printers. Help with widening support, adding missing features, improving reliability and testing is wanted, and would be greatly appreciated.
If you have a colour printer, your help is especially appreciated. Issue #10 is dedicated to discussions for CMYK/colour support.
This Captdriver fork was originally created to enable printing to an LBP3000 from GNU/Linux distros like Fedora and Ubuntu. Attempts to install the original Canon driver were met with frustration; it was discovered later that support for the original driver has been lost in newer distros (Ubuntu 14.04 was the latest OS found to be compatible).
This project aims to produce a free and open-source alternative driver that will extend support for CAPT printers to newer GNU/Linux distros, more processor architectures like Arm, Power and RISC-V, and more operating systems beyond Linux (e.g. FreeBSD, OpenBSD, NetBSD).
Details of the CAPT format, including printer control protocols,
status registers and compression algorithms are documented in the
SPECS
file. While incomplete and expected to contain errors and
omissions, help with expanding it and making corrections is greatly
appreciated.
Please also check out the following repositories:
Content in this wiki is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Any errors, omissions or suggestions? File an issue and apply the wiki
label.
Bookmarks
Unofficial Introduction to CAPT (Executive Summary)
Rootless Write Access To USB Devices
Other Canon Printer-Related Projects
SPECS: 0xA1A1
Command and Response Format
Search for pages starting with
-
SPECS
for notes on the operation of the CAPT data formats and communications protocol -
TESTING
for guidelines on testing Captdriver -
TIPS
for potentially helpful information on studying the project or the CAPT format-protocol