[OpenIndiana-discuss] rastertoz55 and the Lexmark X6170

jay at m5.chicago.il.us jay at m5.chicago.il.us
Tue Mar 17 03:28:22 UTC 2015

If I live long enough, one day I shall post a long article describing
the difficulty of using a Solaris-derived system, when the entire
open-source world assumes that you are using Linux.  But today I have
a more specific question.

Because my Schillix system did not come with CUPS, I obtained the
source code to it, and, after spending many hours of my life that God
intended I should spend on more useful accomplishments, I succeeded in
compiling it and getting it to work.  And it does work, reasonably
well.  To get it to compile I had to steal libusb from an old Solaris
10 system that I had, fortunately the two computers were
binary-compatible, I could not find source code to libusb for love nor
money.  But I digress.  I do have a functioning cupsd, and when I plug
in a new printer to my USB port, cupsd can usually identify it.

When you install cupsd from source, however, you do not get a large
number, or, in fact, any, PPD files, and after I die, and am called
before the Throne of Justice, I shall surely be required to give an
accounting to my Creator for all the vast number of hours of my life
that I have wasted in tracking down PPD files (which are astonishingly
hard for search engines to find) and downloading them, and installing
them on my computer.

Now, to move on to more specific matters, I have acquired a Lexmark
X6170 printer, and after only several hours, located a PPD file for
it.  The PPD file, however, refers to and depends on a program named
rastertoz55.  The tar archive from which I obtained this PPD also
contains a rastertoz55 program -- in binary format, not in source
format, and the binary format is useful only on Linux systems.
I know this because I installed the file on a Linux system, and then
invoked the following two commands:

 landru:/tmp # file /usr/lib/cups/filter/rastertoz55
 /usr/lib/cups/filter/rastertoz55: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
 landru:/tmp # ldd /usr/lib/cups/filter/rastertoz55
         linux-gate.so.1 (0xb771f000)
         liblexz55printjob.so.0 => /usr/lib/liblexz55printjob.so.0 (0xb76ec000)
         liblexz55core.so.0 => /usr/lib/liblexz55core.so.0 (0xb767a000)
         libcups.so.2 => /usr/lib/libcups.so.2 (0xb7625000)
         libcupsimage.so.2 => /usr/lib/libcupsimage.so.2 (0xb7609000)
         libstdc++.so.5 => not found
         libm.so.6 => /lib/libm.so.6 (0xb75c2000)
         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb75a5000)
         libc.so.6 => /lib/libc.so.6 (0xb73f4000)
         libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb73b0000)
         libssl.so.1.0.0 => /lib/libssl.so.1.0.0 (0xb7350000)
         libcrypto.so.1.0.0 => /lib/libcrypto.so.1.0.0 (0xb7197000)
         libpthread.so.0 => /lib/libpthread.so.0 (0xb717a000)
         libz.so.1 => /lib/libz.so.1 (0xb7163000)
         libtiff.so.5 => /usr/lib/libtiff.so.5 (0xb70ef000)
         libpng16.so.16 => /usr/lib/libpng16.so.16 (0xb70b2000)
         libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0xb705b000)
         /lib/ld-linux.so.2 (0xb7720000)
         libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb6f9b000)
         libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb6f66000)
         libcom_err.so.2 => /lib/libcom_err.so.2 (0xb6f61000)
         libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb6f53000)
         libdl.so.2 => /lib/libdl.so.2 (0xb6f4e000)
         liblzma.so.5 => /usr/lib/liblzma.so.5 (0xb6f24000)
         libjbig.so.2 => /usr/lib/libjbig.so.2 (0xb6f17000)
         libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb6f12000)
         libresolv.so.2 => /lib/libresolv.so.2 (0xb6ef9000)
         libselinux.so.1 => /lib/libselinux.so.1 (0xb6ed5000)
         libpcre.so.1 => /usr/lib/libpcre.so.1 (0xb6e6b000)
 landru:/tmp # 

The archive did not come with source code to the rastertoz55 program,
only binaries.  Of course, the source code, even if I could obtain it,
would surely not build correctly on a Solaris-derived system, costing
me several more hours of my life, but I would be able to get it to
build, eventually.  I note in passing that the binary program does not
work even on a Linux system, because, as is evident from the above, it
depends on an obsolete version of libstdc++, but that fact is of no
comfort to me.

I should also mention that I have used many printers in the past for
which I lacked a PPD file, but I was able to use gs to convert my
files to the appropriate printer language, which I then printed out
with "lp -o raw", which bypasses the PPD file.  I even wrote a clever
little program that would recognize its input and perform the
appropriate conversion (e.g., convert PostScript and PDF input to the
printer language using gs, convert ordinary text files first to
PostScript and then to the printer language, and convert troff input
first to troff output, then to Postscript, and then to the printer
language), and wrote a convenient alias for lpr:

# type lpr
lpr is a function
lpr () 
    /usr/lib/cups/filter/djcat-ijs ${1+"$@"} | lp -o raw

It worked well, until now, because now my printer is a Lexmark X6170,
which apparently requires input in "z55" format, and I have no idea
what the devil "z55" format is, and how to generate it.  The "gs -?"
command does not mention any device with "z55" in its name.

Thus I now turn to the collective wisdom of the membership of this
mailing list.  How do I generate z55 output, on my Solaris-derived
system, so that I can use my printer for something other than a
paperweight?  As always, I thank you in advance for any and all

                Jay F. Shachter
                6424 N Whipple St
                Chicago IL  60645-4111
                        (1-773)7613784   landline
                        (1-410)9964737   GoogleVoice
                        jay at m5.chicago.il.us

                "This was untrue.  I am not even faintly like a rose."

More information about the openindiana-discuss mailing list