Back to the main page (French)
See also: CAPT Linux driver
This driver now works fine with the LBP-460. Many thanks to Indan Zupancic for his work.
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.
Version 0.3.1 (August 16 2005): lbp660-0.3.1.tar.gz
Version 0.3 (August 15 2005):
lbp660-0.3.tar.gz
Full support for LBP-460 (Thanks to Indan Zupancic)
Version 0.2.4 (May 18 2005):
lbp660-0.2.4.tar.gz
Sleeps after restarting CUPS (Thanks to Marc Ferraton & Nille Kungen)
Version 0.2.3-test5 (May 5 2005): lbp660-0.2.3-test5.tar.gz
Including
a patch from Yale Huang fixing problem when the printer runs out of
paper in the middle of a document.
Version 0.2.3-test4 (September 2 2004): lbp660-0.2.3-test4.tar.gz
Version 0.2.2 (August 16 2004): lbp660-0.2.2.tar.gz
Version 0.2.1 (July 13 2004): lbp660-0.2.1.tar.gz
Version 0.2 (July 12 2004): lbp660-0.2.tar.gz
Version 0.1 (June 23 2004): lbp660-0.1.tar.gz
Check you have Ghostscript installed.
Extract the archive, then type:
# make
And log in as root and type:
# make install
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).
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.
Indan Zupancic, for his great work to adapt the driver for the LBP-460.
Rildo Pragana, for his driver for another GDI winprinter (Samsung ML-85G), on which I based my work, and for his articles which helped me a lot.
Rildo Pragana, again, for testing this driver with the Canon LBP-460.
Yale Huang, for his patch included in 0.2.3-test5.