Back to the main page (French)

Canon LBP-660 / LBP-460 Linux driver

Version française

See also: CAPT Linux driver

By Nicolas Boichat

Notes concerning LBP-460

This driver now works fine with the LBP-460. Many thanks to Indan Zupancic for his work.

Summary

The Canon LBP-660 and LBP-460 are GDI printers (or winprinters), using a proprietary and undocumented protocol, that I reverse engineered using techniques presented by Rildo Pragana (see Tools and Techniques).
By chance, some parts of the protocol were the same as used by the Samsung ML-85G, so I could base my work on the driver written by Rildo Pragana.

You can download here a driver for Linux.
It should support both A4 and Letter sized paper, but I only tested it with A4 sized paper.

Download

Install notes

Check you have Ghostscript installed.

Extract the archive, then type:

# make

And log in as root and type:

# make install

Install in CUPS

Check you have CUPS installed.

Then type, replacing 660 by 460 if you are using a Canon LBP-460 :

# make cups-install-660-a4

or

# make cups-install-660-letter depending on your paper format.

If you decide to install manually the printer in CUPS, please set the device to file:/dev/null (NEVER set it to xxxx:/dev/lp0).

Tools and Techniques

Here is the way I followed to write this driver:

First, I read the excellent articles by Rildo Pragana (Adventures in Linux Programming), and I installed Windows 98 in Bochs emulator, which allows to execute Windows on top on Linux.

I could not get my printer working in the latest version of Bochs (2.1.1), so I adapted the patches made by Rildo Pragana to this version (download my patch here).

I used this .bochsrc file (note: you need to set the ips parameter, see Bochs documentation on how to do it).

I then used:

# tail -f bochsout.txt | grep DEV > output.log

to log all parallel port read and write (inactive/active it by pressing 1/2 on the keypad with numlock enabled). Then I wrote various Perl scripts to parse this output.

The init sequence is totally different from the one used with the Samsung ML-85G, but, by chance, the compression algorithm is exactly the same.

Thanks


© Nicolas Boichat, Ecublens, May 4 2005