Skip to content
mounaiban edited this page Aug 21, 2022 · 53 revisions

📣 Welcome back! This fork has recently re-synced with the original on 2022-06-26. Changes have been made to important parts of the codebase. If you run into any problems, please check the Issues section or leave a message there.

An exclusive feature, manual duplex, which unconditionally pauses the printer between pages is no longer available, but will be restored in a later release.

In the meantime, you may revert to 5cefa27, the last major commit before the re-sync.

More details about the re-sync will be posted soon. Thanks for your patience! 🙇‍♂️

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, Benoit Bolsee, Alexey Galakhov, 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

This fork has largely the same level of device support as Galakhov's original version. The driver is currently capable of handling most printing tasks but with two significant issues: the compatibility issues with the CUPS-libusb interface and pauses between pages.

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
  • LBP3010
    • x86-64: undisclosed GNU/Linux system, probably Ubuntu, Arch Linux or Manjaro
  • LBP3100/3108/3150

All tests on ARM-based systems were run on Raspberry Pi computers.

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 devices made from the late 1990s to the early 2000s used a different compression algorithm, SCoA, which is distinct from the newer Hi-SCoA algorithm.

SCoA support is required by LBP810 and LBP1120.

While still unsupported in the original and this fork, there is an ongoing work to implement SCoA support:

Please see the SCoA Specifications Page for technical information.

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