adventures logo
adventures in linux programming


microterminal (FPGA)
KeenView driver
Tiny Cobol


C básico
Linux sob medida
tclslides talk
FSL(P.Alegre) 2003
Forum linux I
Real Time Linux
Americano Batista Linux


GDI printers
SOS Linux
gimp tutorial
hardware projects
free photos
short commands
brazilian keyboard
personal info
html editing
favorite places (links)


Chapeuzinho Vermelho
Linux Pernambuco
Why Linux?
Day after

GDI printers under Linux

Here you find tools, articles, and software for porting the so called GDI printers or winprinters, devices that originally runs over the WPS (Windows printing system), to make them work under Linux and other free operating systems. The GDI printers are devil devices with many traps to catch the unaware programmer, like a maze. You are invited to read the articles, see how I dissected my own winprinter, a Samsung ML-85G, and try my methods to solve the puzzle on yours printer. Many tols discussed here are also useful to port other windows-only hardware. Yes, I want to free the world from this disease created by bad guys like BG and his forty thieves of the Persian story.

  • Running a GDI printer under Linux - a preliminary report
  • Running a GDI printer under Linux - part 2 - First code
  • Running a GDI printer under Linux - part 3 - Tools and Techniques
  • Running a GDI printer under Linux - part 4 - Real Time Techniques
  • Running a GDI printer under Linux - part 5 - Solving the compress puzzle
  • Running a GDI printer under Linux - part 6 - Writing the printer software

There are links to the articles at Linux Printing. Thanks Grant!

A Canon winprinter driver

Nicolas Boichat was able to tame this other monster, a Canon LBP-660 winprinter. He said "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." Exactly as I suspected. Of course, he found a good use for my winprinter articles above. Thanks Nicolas!

Some tools

There are many emulators and real time tools available, suitable for this anatomizing of windows software. My favorites are Bochs, written by Kevin Lawton, and RT-Linux, by Victor Yodaiken and Michael Barabanov, and see also the RealTimeLinux site. I'm aware of flex86, the new PC emulator by Kevin Lawton (he told me ;-) It is faster and very promising, but not yet so stable to do the same we can do with Bochs.

Unfortunatelly, the standard bochs package don't have parallel port emulation, so you can download here my patched bochs version. In the near future, I plan to write some special purpose tools to help us dissecting those devices. If you are interested, write to me. If you want to help, better yet! Let' fight for a free software world.

If you happen to have a Samsung ML-85G or a Qwikprint 85G, my own driver (see downloads below) do the job. You can find the driver at Metalab too, under /pub/Linux/hardware/drivers. It's name is ml85p-X.Y.Z.tar.gz. Enjoy!

Samsung printers downloads

Here is the driver for the Samsung ML85G (win)printer:

  • ml85p-0.2.0.tar.gz
  • ml85p-0.0.6.tar.gz
  • ml85p-0.0.5.tar.gz
  • ml85p-0.0.3.tar.gz
  • ml85p-0.0.1.tar.gz

Pentax printers downloads

Here is the driver for the Pentax PocketJet II/200 (win)printers:

  • pentaxpj-1.0.0.tar.gz (final)
  • pentaxpj-20020301-11.tar.gz
  • pentaxpj-20020205-10.tar.gz
  • pentaxpj-20011210.tar.gz
  • pentaxpj-20011206.tar.gz

And here is a fancy printer test page suitable to check your printer accuracy.


Here is a screenshot of the test page I've assembled for testing the driver. With a command like zcat ./ |/usr/bin/gs -q -dNOPAUSE -r600x600 -sPAPERSIZE=a4 -sDEVICE=pbmraw -sOutputFile=\|/usr/local/bin/ml85p - 2> /dev/null

you may check if it works, before trying to configure your lpd/lpr daemon. You may find also many docs and other information from the Linux Printing site.
If you don't have a Samsung printer, don't desperate! It is not impossible to get your printer working. It requires patience, though, but I found it funny to screw M$. They are really innocent and dumb people, and I like to take the donut out of their mouth :)

Last updated: 2006/10/12 10:50:09