Forum: Printers from Lexmark and IBM
http://www.linuxprinting.org/printer_list.cgi?make=Lexmark
Lexmark produces two lines of printer: the Optras and the Color Jetprinters. The Optras are business-focused printers with the unique characteristic that every Optra supports Postscript and PCL; no other vendor has such uniform support for standardized printing languages. As a result of this, every Optra is 100% supported by free software. The Color Jetprinters are consumer-focused printers with the exact opposite characteristics: not a one of them supports any standard printing language, and not a one of them is 100% supported by free software.
The two groups in the company are very much separate, although the occasional Optra product is produced by taking a reasonable Color Jetprinter and nailing an Optra-style mainboard onto the back; this produces a Postscript/PCL networkable inkjet (like the Optra 40, for example). Efforts to obtain programming information for the Color Jetprinter protocols have been unsuccessful and will probably remain that way; Lexmark apparently feels that the details of the protocol reveal some of the engineering techniques they use to make the Color Jetprinters so competitively inexpensive
But their engineering secrets are more marketing secrets, and they are only secret as long as you stay in the front part of the store where you see the printers and do not go into the back part with the cartridges. They make the printers so cheap that they probably do not earn money from them but they earn the money with their ink. The ink is really expensive: One letter/A4-sized page with black text costs around 0.16 dollars, a high-quality photo 2.50 dollars (one cartridge gets empty with around 20 photos). These numbers are from a printer review in the desktop-oriented german magazine Linux User, issue 1/2002.
Lexmark offers a GNU/Linux x86 binary Color Jetprinter drivers for several models. These are supported and work, but are a somewhat imperfect solution. Once they are binary-only, so one can neither fix bugs, nor contribute features or embed code into other drivers as Gimp-Print or Omni, nore contribute features, and even not recompile in case of library incompatibilities. Also users of other operating systems than GNU/Linux for x86 cannot make use of these drivers. In addition they support only GNU/Linux versions from before the "new printing generation" with CUPS and Foomatic. The installers of the drivers only support the LPD spooler and the list of supported versions of the distros stops where they started with CUPS and/or Foomatic (Red Hat up to 6.x, Mandrake up to 7.1, ...). I (Till) have done a hack to make these drivers working with Foomatic, but due to Lexmark keeping their drivers well hidden, this package is not up-to-date most of the time
In addition, all printer manufacturers who have provided printers for the review in Linux User, 1/2002 have made their printers available to free software developers, except Lexmark, they probably do not want that others then them develop drivers
As if a lack of cooperation weren't enough; Lexmark has recently filed a lawsuit against a vendor of serial number chips designed to spoof Lexmark printer into accepting third-party replacement ink. The suit apparently is made under the DMCA, which is a bit of a stretch given that they really wanted to keep a trade secret. Sigh...
Lexmark is actively offering GNU/Linux support for Optra printers (for various distributions, no less). All Lexmark Optra PCL, Postscript, and PJL commands are fully documented in freely downloadable technical reference manuals. They offer their traditional Unix solution compiled for GNU/Linux at no cost. These traditional "MarkVision" "drivers" implement essentially the same things as can PDQ, CUPS, or Minolta's mltflt package: they modify print jobs by prepending PJL option settings and the like in an lpd or lpsched backend. Lexmark is also planning enhancements to the findability of GNU/Linux information on their website (it's there, but it's erratically scattered around in the support database, and not mentioned at all on the actual product pages). And they are investigating current free printing software with an eye to providing full support for users.
See the Vendor ScoreCard.
Related projects: lm1100 pbm2l2030 c2070 pbm2l7k lx5000 lxm5700m
Alway use the free software drivers if at all possible. The Lexmark drivers are not updated often enough, and do not integrate well with today's spoolers. Lexmark is supposedly working on this.
For the time being, gimp-print supports the following printers:
The Z45 is not supported by free software or Lexmark. This printer simply won't work.
This is possible, as the ratings only count for free software ("free" in the sense of liberty, www.gnu.org).
Free software has the big advantage that it comes with source code and the user is allowed to change and re-distribute it. So it can be easily used on BSD, Mac OS X, or other operating systems (this site does not only support GNU/Linux, but every Unixish OS), and the user can fix bugs and customize the software. And distributions can include free drivers on their downloadable CDs.
The Lexmark drivers are proprietary. You don't get the source code for them. In addition, they are made for GNU/Linux distributions as one had two or more years ago. Lexmark didn't realize that one uses CUPS and Foomatic nowadays. So it is extremely difficult to use them with modern distros.
In the beginning I have tried to help the users with my "lexmark-foomatic-kit" (which you also used), but Lexmark changed their drivers and published more and more different types of drivers. So I once gave up guessing how all these different Lexmark drivers work and producing non-working code due to lack of having test printers.
So I recommend not to by the Lexmark boxes with the penguin, the printers in the penguin-less boxes from HP and Epson are much better supported under free software. Another reason to avoid Lexmark is their extremely expensive ink and their flimsy hardware.
With a two years old distro it perhaps even works, as Lexmark didn't realize that on printing under Linux/Unix changed a lot and now CUPS and Foomatic are the standards. A GNU/Linux expert would perhaps make the printer working, too, but when a manufacturer promises GNU/Linux support for a consumer product, it must be possible that a consumer can set it up. Hiring an expert to make this printer running is out of discussion, it would cost at least ten times the price of the printer.
They published drivers which do not integrate well with current distros. In addition the drivers are proprietary, which makes the experts at the distro companies not integrating them (you cannot put non-free software on the downloadable CDs of a distro).
Don't use Internet Explorer for downloading .tar.gz files, since IE likes to corrupt them. Try wget.
Also try deleting and reinstalling the program.
http://drivers.lexmark.com/drivers.nsf/printer+driver/F18EB01AC454976585256952006E93AA?OpenDocument
If you were using the Lexmark drivers, the stopped working because your new distribution is not using the old "LPD" spooler system. It is probably using CUPS, and the Lexmark drivers do not work with CUPS. If possible, try to use a free software driver.
Many people have succeeded in installing the old "LPD" system instead of CUPS, and have made their printers work again. See below for the various steps involved.
This printer may be able to use the Samsung SmartGDI printer driver. http://www.linuxprinting.org/download/printing/samsung-gdi/
Yes, it has been reported printing, but very slow.
I think printer E320 and drivers recognises only PCL5.
The Generic PCL 5 printer in the database on linuxprinting.org and set up your print queue based on that data, or use printconf-gui and choose the HP LaserJet 4 as your printer model.
If the printer's manual claims that your printer is a PostScript printer, choose printer language auto-detection or PostScript as printer language (sometimes called "Personality") in the front panel menus. If the printer has no front panel menus, get PUP to change the hardware configuration of the printer.
Another problem can be that when the printer is a PostScript printer and already in auto-detection mode that it does not understand PostScript when the PostScript job is preceeded by a PCL banner. Either do not use banners or use PostScript banners.
GhostScript drivers
Choose "Generic PCL 6/XL Printer" as your printer model. They support 1200 dpi.
This is untested.
Below is a patch against the ljet4 driver when the printer is "Generic PCL 5/5e Printer". The basic steps are:
2) From the PPD-O-Matic Select Printer drop-down choose Generic PCL 5/5e Printer. Click GENERATE PPD FILE and save the resulting file to a convenient location. By default the file is named Generic-PCL_5_5e_Printer-ljet4.ppd. http://www.linuxprinting.org/show_driver.cgi?driver=ljet4
3) From the bottom of this message put everything AFTER the
//// PATCH BELOW ////
in a file in that same default location. Name the file GenPCL5-to-LexE320.patch. Make sure none of the lines in the patch have been word-wrapped. The first column will ALWAYS be a @ + - or a space. Anything else means you got a wordwrap issue and the patch won't work.
4) From your shell, cd to the location of the files and issue the command
patch Generic_PCL_5_5e_Printer-ljet4.ppd GenPCL5-to-LexE320.patch
(the first file is the orignal PPD and the second is the patch in case you changed the names and aren't familiar with patch).
5) Rename this file to LexmarkE320.ppd
6) Move it to /usr/share/cups/models/Lexmark/LexmarkE320.ppd or your equivalent cups/models location.
7) Restart your cups server so it finds the new PPD and choose the Lexmark -> Lexmark E320 from your CUPS config tool of choice.
Sorry this is a little verbose but I want to make sure the causal user can create the file.
//// PATCH BELOW //// --- Generic-PCL_5_5e_Printer-ljet4.ppd 2003-03-05 15:22:34.000000000 -0500 +++ LexmarkE320.ppd 2003-03-05 15:25:25.000000000 -0500 @@ -17,16 +17,16 @@ *FileVersion: "1.1" *LanguageVersion: English *LanguageEncoding: ISOLatin1 -*PCFileName: "LJET4.PPD" -*Manufacturer: "Generic" -*Product: "(PCL 5/5e Printer)" +*PCFileName: "LexmarkE320.PPD" +*Manufacturer: "Lexmark" +*Product: "(E320)" *cupsVersion: 1.0 *cupsManualCopies: True *cupsModelNumber: 2 *cupsFilter: "application/vnd.cups-postscript 0 cupsomatic" -*ModelName: "Generic PCL 5/5e Printer, Foomatic + ljet4" -*ShortNickName: "Generic PCL 5/5e Printer, ljet4" -*NickName: "Generic PCL 5/5e Printer, Foomatic + ljet4" +*ModelName: "Lexmark E320, Foomatic + ljet4" +*ShortNickName: "Lexmark E320, ljet4" +*NickName: "Lexmark E320, Foomatic + ljet4" *PSVersion: "(3010.000) 550" *PSVersion: "(3010.000) 651" *PSVersion: "(3010.000) 652" @@ -126,7 +126,7 @@ *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 110 AnySetup *Resolution -*DefaultResolution: 600 +*DefaultResolution: 1200 *Resolution 75/75 DPI: "<</HWResolution75>>setpagedevice" *Resolution 150/150 DPI: "<</HWResolution150>>setpagedevice" *Resolution 300/300 DPI: "<</HWResolution300>>setpagedevice" @@ -525,4 +525,9 @@ *% COMDATA #$VAR1->{'args'}[1] = $VAR1->{'args_byname'}{'InputSlot'}; *% COMDATA #$VAR1->{'args'}[2] = $VAR1->{'args_byname'}{'Resolution'}; *% COMDATA #$VAR1->{'args'}[2] = $VAR1->{'args_byname'}{'Dithering'}; +*OpenUI *Margins/Page Margins/Offsets: PickOne +*DefaultMargins: Custom +*Margins Default/Driver Default: "" +*Margins Custom/Custom (set with 'alignmargins'): "<</.HWMargins[12 11 12 .13] /Margins-37.5>>setpagedevice" +*CloseUI: *Margins
No. If you are able to purchase a new machine, buy an OfficeJet, or a suggested printer. http://www.linuxprinting.org/suggested.html
Another possibility is to configure for several different lexmark printers, and hope that one works. Like a lottery.
No. Their binary driver set does not support it.
No. You'll definitely have to write a driver yourself.
No one has reported it working yet. Try using the lxm3200 driver. Note, the lxm3200 driver is no longer maintained.
Work is an overstatement. It is possible to print with this printer, using the Lexmark drivers, however the process is long and difficult.
This worked for one person, using debian. The initial steps are very similar to the other examples of installing the Lexmark drivers.
1. Download the Z35 drivers from the Lexmark website. These directions apply to the CJLZ35LE-1.0-1.TAR.GZ file.
2. Untar the file, but don't use the unzip -z option. A self-extracting archive will fall out, but don't run it.
3. Strip off the bash code until the END_OF_STUB marker, and then save it as a .gz file.
4. Untar the compressed file with
gzip -cd lexmarkz35-1.0-1.gz | tar xvf -
5. Use alien to convert their Redhat RPM to a .gz file.
6. Untar the .gz file, and place its contents in /usr/local/.
7. Create the directory /var/spool/lexmark/Z35Driver/ WARNING! This directory is going to hold some rather large output files. If you are low on space in var, create this directory in their /usr/local/lexmark tree and make a symlink to /var/spool/lexmark.
8. Run ./z35install in the directory you extracted the gz.sh file to. Ignore the RPM failure. Any other failures are probably bad news, though. I had to run it twice, and then it magically worked.
9. Make the following symlinks in /var/spool/lexmark/Z35Driver/
lrwxrwxrwx 1 root root 44 Sep 15 22:03 auckUS.lut -> /usr/local/lexmark/z25-z35/layout/auckUS.lut lrwxrwxrwx 1 root root 39 Sep 15 22:03 colorsV.lut -> /var/spool/lexmark/Z35Driver/auckUS.lut
NOTE: The links may be created automatically, but they will point to the wrong place. Double check. Also, make sure it copied the Z35Driver.conf file into the spool direcotry.
10. touch /var/spool/lexmark/Z35Driver/lpd.log
11. Check /etc/printcap, and either change the
:if=/usr/bin/LexmarkZ35:
line to
:if=/usr/local/lexmark/z25-z35/scripts/LexmarkZ35:
or make a symlink.
12. Make sure that you have the following programs:
13. Now you' ll use
/usr/local/lexmark/z25-z35/scripts/LexmarkZ35
"directlly". convert the doc you want to print and then use this command to print:
cat filetoprint.foo | /usr/local/lexmark/z25-z35/scripts/LexmarkZ35 -
14. You can modiffy the LexmarkZ35 script to make things
more "automatic". Remember that you need the FIFO
pipes that has the spool-dir, you can use mknod -p ...
to create them, look at the install scripts in the
rpm file.
Lexmark did a poor job of packaging the driver, and the installation is broken.
There is a link missing. colorsV.lut pointing at auckEU.lut was missing. This can be seen by running the driver with ltrace or strace Check to see if there are broken links in the last lines of the trace output.
cat image.ppm | ltrace LexmarkZ35 > trace.info
You can't. The Lexmark drivers do bi-directional communication with the printers. Files don't to bi-directional I/O.
Type z35 Linux in the Find Drivers ... box http://www.lexmark.com/US/support/drivers/index.html and download CJLZ35LE-1.0-1.TAR.GZ
You will need enscript.
The Lexmark driver is made for LPD and LPRng. Red Hat 7.3 uses LPRng as default spooler, and Mandrake 9.0 uses CUPS. You can switch to LPRng by doing urpmi LPRng on the command line (as root) and then starting printerdrake, clicking Expert Mode, and then Change printing system. Choose LPRng. Some additional packages will be installed. Say No if you are asked to transfer your Z35. Then re-install the Lexmark driver and you should be able to print.
Take a look at Lexmark-List and the next pages also.
0. Download the Z35 drivers from the lexmark site. These directions apply to CJLZ35LE-1.0-1.TAR.GZ. If you're reading this file from an archive, it is possible that the tech support guys may have fixed some of the problems noted, but unlikely.
1. Untar the file. A self-extracting gzip file will fall out. Don't try to run it. It will break things. Strip off the bash code till the END_OF_STUB marker, and then save it as a .gz file.
2. Untar that with gzip -cd lexmarkz35-1.0-1.gz | tar xvf -
3. Use alien to convert their redhat rpm to a .tgz file. Untar this file and place its contents in /usr/local, like they want.
4. Create the directory /var/spool/lexmark/Z35Driver/ WARNING! This directory is going to hold some rather large output files.. If you are low on space in var, create this directory in their /usr/local/lexmark tree and make a symlink to /var/spool/lexmark.
5. Run ./z35install in the directory you extracted the gz.sh to. Ignore the RPM failure. Any other failures are probably bad news, though. I had to run it twice, and then it magically worked.
6. Make the following symlinks in /var/spool/lexmark/Z35Driver/
lrwxrwxrwx 1 root root 44 Sep 15 22:03 auckUS.lut -> /usr/local/lexmark/z25-z35/layout/auckUS.lut lrwxrwxrwx 1 root root 39 Sep 15 22:03 colorsV.lut -> /var/spool/lexmark/Z35Driver/auckUS.lut
NOTE: It will probably create these, but have them linking to the wrong place. Double check.
7. Make sure it copied the Z35Driver.conf file into the spool dir. Also,
touch /var/spool/lexmark/Z35Driver/lpd.log
8. Check /etc/printcap, and either change the
:if=/usr/bin/LexmarkZ35:\
line to
:if=/usr/local/lexmark/z25-z35/scripts/LexmarkZ35:\
or make a symlink.
9. Apply the patch below to that script.
.--- /usr/local/lexmark/z25-z35/scripts/LexmarkZ35.old Sun Apr 28 22:14:39 2002
.+++ /usr/local/lexmark/z25-z35/scripts/LexmarkZ35 Mon Sep 16 00:47:41 2002
.@@ -1,4 +1,10 @@
.-#!/bin/sh
.+#!/bin/bash
.+
.+PIDOF=�hich pidof
+if [ -z "$PIDOF" ]
.+then
.+ PIDOF=/sbin/pidof
.+fi
.
. PDIR=/usr/local/lexmark/z25-z35
. CONFDIR=$PDIR/bin/lxgetconf VERIFY
@@ -76,18 +82,43 @@
. fi ;;
. esac
. }
.+
.+#HACK!!!!!
.+#Dumbasses don't know how to create lock files...
.+#They managed to create a 577 lock file and then tried open it O_RDONLY
.+#Can you believe it?
.+umask 002
.+touch /var/spool/lexmark/Z35Driver/Z35Driver.lck
.+chmod 660 /var/spool/lexmark/Z35Driver/Z35Driver.lck
.+
. if [ "$LXCOPIES" -gt "1" ]
. then
. COPY_COUNT=0
.+ #factored out of loop.. see below
.+ image_conversion $LXTMPFILE "$LXRESOLUTION" "$LXDIMENSION"
. while [ "$COPY_COUNT" -lt "$LXCOPIES" ];
. do
.- LEXPID=/sbin/pidof -s Z35Driver
+ #Wow is this stupid... It's completely irrelevant now.. but it's funny
.+ #so I left it in.
.+ LEXPID=$PIDOF -s Z35Driver
if [ "$LEXPID" != "" ]
. then
. sleep 12
. fi
.- $PDIR/Z35Driver $LXBIDIFLAG &
.- image_conversion $LXTMPFILE "$LXRESOLUTION" "$LXDIMENSION"
.+
.+ # This is a RACE CONDITION! HELLO! Good thing they didn't provide
.+ # source to the driver.. can't imagine what that code looks like...
.+ #Futhermore, this is horrendously inefficient.. Factored out of loop.
.+# $PDIR/Z35Driver $LXBIDIFLAG &
.+# image_conversion $LXTMPFILE "$LXRESOLUTION" "$LXDIMENSION"
.+
.+ #Originally, I was going to have the image conversion run in the
.+ #background, but it occurred to me that on slow machines,
.+ #the driver may starve on input from the converter and b0rk...
.+ #I wouldn't put anything past these guys.
.+
.+ $PDIR/Z35Driver $LXBIDIFLAG
.+
. if [ "$?" != "0" ]
. then
. let COPY_COUNT=100
.@@ -96,20 +127,21 @@
. done
. /bin/rm -f $LXTMPFILE
. else
.- LEXPID=/sbin/pidof -s Z35Driver
- if [ "$LEXPID" != "" ]
.- then
.- sleep 12
.- fi
.- $PDIR/Z35Driver $LXBIDIFLAG &
.+ #Duh.... I work for Lexmark... My code is 3xtr4 s3kr3t
. image_conversion $LXTMPFILE "$LXRESOLUTION" "$LXDIMENSION"
.- /bin/rm -f $LXTMPFILE
.+ $PDIR/Z35Driver $LXBIDIFLAG
.+ /bin/rm -f $LXTMPFILE
. fi
.-LEXPID=/sbin/pidof -s Z35Driver
-while [ "$LEXPID" != "" ]
.-do
.- usleep 1000
.- LEXPID=/sbin/pidof -s Z35Driver
-done
.+
.+#clean up after yourselves, for chrissake
.+/bin/rm -f ${INPUT_PIPE}
.+
.+#not needed
.+#LEXPID=$PIDOF -s Z35Driver
+#while [ "$LEXPID" != "" ]
.+#do
.+# usleep 1000
.+# LEXPID=$PIDOF -s Z35Driver
+#done
.
. exit 3
Some notes for people who have seen previous versions of their drivers: The script provides essentially the same functionality as the foomatic lexmarkwrapper did, but it only supports the Z35. Also, the binary only driver now reads from /var/spool/lexmark/Z35Driver/input_pipe instead of taking input from stdin. They also introduced a whole slew of locking issues and race conditions with this "functionality." See the patch for details.
It sounds like a sensor problem. If that is right you won't be able to print this test page and you'd better call your support. Maybe they have a trick to fix it. Or if it is in warranty it will be exchanged.
This printer has been reported working with the drv_z42 driver.
Generally, no.
It is possible to use the Z42 driver to print small images (no larger than about 50x50 pixels). There is one report of this printer working fine with the Z43 driver. Since the Z42 and Z43 driver are the same backend ghostscript driver. There may have been changes to the printer specifications at some point.
Please do not buy this printer expecting it to work.
Second Edition.
The z45SE has a higher resolution than the Z45: Z45: 2400/1200 Z45SE: 4800/1200
No.
You may have to remove the /usr/bin/foomatic-gswrapper script if it produces errors that prevent the gs-esp output from making it to the printer.
For example, you might see Error: /undefinedfilename in (/dev/fd/0) in /tmp/cupsomatic.log file.
It is included by default in ESP GhostScript.
The Z43 driver has been reported working.
1) Retrieve the drivers for the printer at http://www.lexmark.com
2) Unpack the .tar.gz file
3) Make sure that you have the following packages installed: alien,rpm,enscript,print spooler If you are going to interface with the printer through the usb port, make sure that the usblp and printer modules are either loaded (with modprobe) or compiled into the kernel. /sbin/lsmod
5) make a script called rpm-fake in /usr/local/bin with the following contents:
cp $3 /usr/local/src
6) Make the following changes
chmod ug+x /usr/local/bin/rpm-fake mv /usr/bin/rpm /usr/bin/rpm-real ln -s /usr/local/bin/rpm-fake /usr/bin/rpm mkdir /usr/etc ln -s /sbin/pidof /bin/pidof
RedHat and a few other distros prefer the /bin directory to store the pidof binary, and the driver software isn't smart enough to look in the $PATH.
11) Run the Lexmark installation script.
12) When the graphical installation program complains about unexpected output from rpm --force ... quit the program.
13) ln -sf /usr/bin/rpm-real /usr/bin/rpm
14) There will be an rpm file in /usr/local/src that is similar to the name of the downloaded driver file. Run the alien command on it
alien /usr/local/src/driver-name.rpm
15) Now there should be a .deb file in your current directory.
dpkg -i
16) ln -sf /usr/local/bin/rpm-fake /usr/bin/rpm
17) Run the installation script once more, this time forcing the installation even though it will inevitably give the same error message.
18) mv -f /usr/bin/rpm-real /usr/bin/rpm
19) You should not need to configure the printing system if you use GNUlpr or lprng, but with CUPS you may need to.
Reboot!
ln -s /usr/lib/libslang.so /usr/lib/libslang.so.1
The new version was made for Lexmark Z55se (second edition).
Use an earlier version 1.01.
A part of this instruction was taken from the Gentoo Forum for a Lexmark Z33 printer and some changes are made to make it work with the Lexmark Z55 and printers of the same generation (Z*5).
1. Make sure that usb is support for your kernel. you can type cat /proc/bus/usb/devices to check
2. Download the driver package from Lexmark site http://www.lexmark.com.
3. add lprng to your existing USE var list. USE="lprng other_var1 other_var2
4. download lprng
emerge lprng rc-update add lprng default mv /etc/lprng/printcap /etc/printcap ln -sf /etc/printcap /etc/lprng/printcap
5. download the ghostscript
emerge ghostscript
6. download the enscript
emerge enscript
7. download killproc
emerge killproc
8. download rpm
emerge rpm
9. Prepare sone dir.
mkdir /etc/rc.d ln -s /etc/init.d /etc/rc.d/init.d mkdir /etc/rc.d/rc3.d mkdir /etc/rc.d/rc5.d
10. install the driver package from lexmark: - unpack the package,you will have two file. one is REAME,the other is lexmarkz*.sh
sh lexmarkz*.sh
( If you get error messages in the installation of the Lexmark driver, ignore it. )
11. Make this link
ln -s /etc/enscript.conf /usr/etc/enscript.conf
If a error occurs, check if the directory exist.
12.Corrects some directory permissions.
checkpc -f
13. Now you can print. Start lprng
/etc/init.d/lprng start or reboot your
computer.
Use the smartswitch on the printer, set it to pcl/ps.