Warning: The developement of this driver is discontinued, because my Lexmark 2050 was definitively broken many time ago, so I cannot test improvements nor develop it anymore.
The Lexmark 2050 is a fine printer: two seperate cartridges, up to 600dpi, full color printing capabilities and cheap. At least it was cheap, as you cannot buy it any longer. But if you already have one and want to use it with Linux, here the right driver can be found. Unfortunately, Lexmark decided to design the 2050 as a Windows GDI printer. The protocol is proprietary, so there is not any documentation available. Fortunately, as it is a very simple protocol, it has not been an unsolvable problem to reverse engineer it by printing to a file using the Windows driver.
The protocol uses a short initialization sequence to set up the printer and load a page. After that, bit patterns with their own header are sent to the printer, usually followed by a sequence to transport the paper to the next vertical position. The bit patterns have one bit for each pen in the cartridge. The bits are in the reverse order of the pens in one column of the sweep; the uppermost pen last, then up to the last pen, after that the next column.Certain bytes in the header set the horizontal start position and the number of columns to print. A checksum, the complete number of bytes for one sweep including the header, has to be present in the header to make the printer accept the data.
Color printing is nonetheless a difficult issue. As there are three colors in the color cartridge, there is only a third of the pens available for each color. There is also a gap inbetween two colors and magenta is disaligned as to the other colors. Yet all three colors are printed in one sweep, so there have to be some arithmetics. Optimization of white spaces is also handled by this driver by reducing the sweeps to their minimum width and transporting vertically over completely empty lines in just one sequence.
The driver filters GhostScript output to the Lexmark protocol. The input format is bitcmyk. The driver simply reads the standard input, converts it and then sends the data to the standard output. This has been successfully tested with GhostScript 5.10, which is included in Debian 2.2.
After you have downloaded the tarball with the sourcecode, you have to extract its contents into a directory of your choice by typing
tar zxvf c2050-0.1.tar.gz
Then you have to compile the code to get the binary for your system. This is done simply by typing
If you are root (you should be root while installing new software in most cases anyway) you can now copy the binary to its destination, which is /usr/bin/c2070 by typing
To print Ghostscript example tiger.ps type (/dev/lp0 may be writable by the current user):
gs -q -sDEVICE=bitcmyk \ -r300 \ -dDITHERPPI=150 \ -dNOPAUSE \ -dSAFER \ -dBATCH \ -sOutputFile=\|c2050 \ /usr/doc/gs/examples/tiger.ps > /dev/lp0
or use ps2lexmark script:
ps2lexmark < /usr/doc/gs/examples/tiger.ps > /dev/lp0