Skip to content
mounaiban edited this page May 12, 2022 · 53 revisions

About

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.

Acknowledgements

This project is based on the works of Rildo Pragana, Nicolas Boichat, Alexey Galakhov, Benoit Bolsee and Vitaliy Tomin.

Building and Installing Captdriver

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.

About This Fork

This fork was originally created to focus on maintaining LBP3000 support. It currently has three main goals:

  1. Improve compatibility: enable use on a wider range of Linux distros and more operating systems and platforms.

  2. Enhance usability: implement missing features and make the driver truly suitable for end-users.

  3. 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.

Status

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.

Supported Devices

The following printer-host-operating system combinations have been found to work:

  • LBP2900
  • 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.

Wishlist

Better Reliability and Compatibility

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:

Finding a workaround for these compatibility problems is currently a top priority.

SCoA Support

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.

Miscellaneous Features

Drum cleaning, detection of service errors and Automatic Image Refinement are yet to be implemented.

Support for More Printers

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.

Motivations

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).

Further Reading and Other Resources

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:

  • anticapt: Galakhov's original experiments in reverse-engineering Hi-SCOA compression

  • Studycapt: a repository of diagnostic and miscellaneous programs for studying the CAPT protocol.

Bookmarks

Installation Guide

Targeted Printers

Essential Test Suite

Unofficial Introduction to CAPT (Executive Summary)

Support Levels

Rootless Write Access To USB Devices

Miscellaneous Tips

Wishlists

Other Canon Printer-Related Projects

SPECS: 0xA1A1 Command and Response Format

Home Page

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
Clone this wiki locally