of the AcuLaser
C900 CUPS Project
How to Install an Epson AcuLaser C900 for Linux ix86 and x86_64 with CUPS
Copyright (C) SEIKO EPSON CORPORATION 2002-2004.
This Program package will support the EPSON AcuLaser C900 to work together with the CUPS printer spooler
I start, I would like to thank Claude
precise, detailed and very professional How-To on
me to write the code for this package.
I would also like to thank him, for making the required binaries available on his server.
Thank you very much, Claude!
correcting compiler warnings on newer gcc versions
- fixing installation-check-routine
- treating dependencies more carefully in library package generation
- fixing dependency checks for non-rpm-installations
a lot of fun
See the older ChangeLog, if you are interested in what changed before.
Download and Installation
Selection of the Correct Printer Interface URI
AcuLaser C900N with Built-In Network Card
URI-Syntax for the ALC900-Backend
Changing Toner / Polling Printer Status / Changing Paper Tray Size
Setting the Paper Sizes for the Trays
System Check Up / Print Test Page
Do Your System a Favor
Developers! Create your own, Clean Packages
cups (or cupsys)
Installed on your machine.
the installation of pipsplus,
and the presence of the file libstdc++-libc6.2-2.so.3 in /usr/lib is mandatory.
will not need to do anything about the last 5 files, when you are
connected to the internet.
If not online, get the files from our sourceforge-page, copy the unpacked pipsplus-rpms and the libstdc++-libc6.2-2.so.3 into the unpacked installation directory alc900-cups-1.0, and start the installer as described next.
When you would install the pipsplus-rpms yourself it is essential, that you do this with the --noscripts option. Otherwise an error will be reported on most systems and the installation would probably fail. Same applies to uninstallation.
rpm -Uhv <rpm-file-name>
> rpm -e <rpm-name> --noscripts
But ... the best preparation is to re-build proper packages and to install the package of your distribution, which contains the libstdc++-libc6.2-2.so.3.
and Installation process:
Get our latest version from sourceforge
download it into some local directory
log on as (best as “root” in a local graphical konsole)
Unpack and install the tar.gz package.
Connect and switch on the printer, and check if your internet connection is up, before you start the installation.
The installer will try to retrieve all needed files from the internet, if some of them are missing locally.
tar -xzvf alc900-cups-1.0.i386.tar.gz
> cd alc900-cups-1.0.i386
> sudo ./install.sh
Once started, the installer tells you what to do. Just follow the instructions on the screen.
In the run of the installation, the installer will start your system’s printer configuration tools.
see the examples for:
Or you will get hints on how to set up the printer via the command-line tool lpdamin, if you are not working in a graphical environment.
Alternatively you can start a web-browser at localhost:631 after the installation.
connect a printer to an interface, you need a URI (Unique Resource
Identifier). CUPS and SAMBA have standardized URIs, which will do the
job well for most printers with standard handshake.
- usb:// (local USB port)
- parallel:// (local parallel port)
- ipp:// (CUPS IPP-protocol)
- lpd:// (LPR network printing)
- smb:// (SMB-share over network)
- socket:// (HP DeskJet over network)
But – as you might have guessed – none of these URIs is a good choice for your AcuLaser C900, because of its very special handshake.
Even the EPSON-URIs will not work correctly.
would recommend to set up your printers as usual, at one of the URIs
mentioned above. Then invoke:
and you will end with perfectly set up URIs for your C900-queues.
The installer automatically calls alc900.update-uris at the end of the installation process.
AcuLaser C900N with built in ethernet network card works best, when
connected through socket://<C900N-IP-address>:9100,
is the HP JetDirect network configuration.
But be sure, you call alc900.update-uris after the configuration for correct URI-configuration.
The AcuLaser C900 features a very special local handshake, which is different from anything I have seen. Additionally to this proprietary handshake, the alc900-cups backend offers some special options like bundling or memory size limiting (for 16MB printers), which make additional streaming patterns necessary.
you must connect the AcuLaser C900 to the proprietary alc900://
For the local ports these URIs look like:
- alc900://usblp0/EPSON/AL-C900 (local USB port #0)
- alc900://parport0/EPSON/AL-C900 (local parallel port #0)
Depending on your printer, the URIs and the port numbers might differ a bit.
network connections the URIs look like:
- alc900://ipp://<ipp-address-of-printer> (IPP over network)
- alc900://lpd://<lpd-network-id-of-printer> (LPD over network)
- alc900://smb://<samba/windows-share> (printing to a Samba-share)
The syntax is the same as for the regular URIs, but alc900:// is always used as a kind of prefix.
an AcuLaser C900N with built in network card, use:
- alc900://<ip-address-of-alc900n> (printing to a AcuLaser C900N, e.g. alc900://192.168.0.10)
I could not get the network card working with the IPP-protocol-option, it steady failed. The job always hung at its end. So I highly recommend to use the RAW protocol, and connect via a plain network socket URI (alc900://XXX.XXX.X.XX) , as described above. Changing the network settings is very easy, with the EPSON NetWare, which you can get from the EPSON Support-Page.
It could install and run the program without any problems under wine (Linux-Windows-Emulation), which usually is part of your Linux Distribution.
The alc900-cups package comes with executables, to service and poll the printer. You must work in a graphic desktop-environment, to use the GTK-1.2 service tools.
and the program will lead you through the process of connecting to a printer and setting up the printer for regular printing again. You can find more details about the pipsplus GTK-frontend in EPKOWA’s online instruction manual.
Select alc900(_with_some_extension), if you see the selection list below. Once done so, you can proceed.
you have polled status, changed toner or changed paper
tray size, you will get the possibility to select “regular
It is important to switch back to “regular printing”. Otherwise the pipsplus tools will block the local printer port.
Select “Configuration Printer” to reach the screen “Printer Properties” and the tab “Extension”.
you have a locally connected AcuLaser C900, this is the entry to the
“Printer Setting” screen.
The ovals show you where to set the paper sizes for the cartridges.
you must change the paper tray sizes, every time the formats of your
printed documents change, unless you use the PPD-option TraySize.
As an example, the xpp (XPrintingPanel) window shows the selection “Tray Size Setting”, which controls the option TraySize.
Make the setting of TraySize (as here in XPrintingPanel) the same as in the “Printer Setting” screen of pipsplus-config, so you need not adapt the pipsplus-config setting for the Tray Size, when the document sizes change.
to check if an installation went right.
must print a document to test your CUPS spooler setup:
> lp -d <my-printer-name> <name-of-the-document>
> lpr -P<my-printer-name> <name-of-the-document>
> xpp -d <my-printer-name> <name-of-the-document>
> kprinter -d <my-printer-name> <name-of-the-document>
or ... any other CUPS front-end, which is installed on your machine
A good candidate for <name-of-the-document> is /usr/share/cups/data/testprint.ps
uninstall the whole driver (tar.gz-version), call – in the
directory where you unpacked the package – (as root):
> ./install.sh -–remove-only
the rare case might occur that your printer hangs, you can call as
> killall alc900.cat pipsplusd
The killall-command will most probably halt the printer queue.
In this case, enable spooling again either by your graphical setup tool or via the command:
> lpadmin -p <name-of-the-printer-queue> -E
and check if all AcuLasers are configured for “regular printing”.
you are interested in what is actually going on in the backend, have
a look at the log-file of the program
Especially in the first phase after an installation call:
> tail -f /var/log/alc900.log
> tail -f /var/log/cups/error_log
> tail -f /tmp/alc900-<name-of-the-interface>.log
where <name-of-the-interface> denotes the actual hardware interfaces of the printer queues.
Please, look into the directory /tmp for log-files.
knowledge of the printer options (lpoptions-command)
is essential for those people who like to print from the command
CUPS supports command line printing by passing control options in the print command line.
This is usually achieved by
> lp -d <printer-name> -o Option1=Value1 -o Option2=Value2 ...
The alc900-driver knows the following options (apart from the standard CUPS options):
Underlined values show the driver-default.
the Bundling Option!
Setting e.g. -o Bundling=On and -o BundleSize=10 on the command line (or setting the according options via the graphical CUPS interface) will
- shorten the delay until the first page comes out of the printer
- save main memory consumption
Bundling will mostly be the only way to print big documents in one job (in combination with e.g. -o SizeLimit=10), if your printer is only equipped with a 16MB RAM.
Enable the Color-Autoselection!
Setting -o Toner=Autoselect or -o AutoselectRelaxed or -o Sorted on the command line (or setting the according option via the graphical CUPS interface) will:
- significantly speed up the printing process for documents with only some colored pages
- save main memory consumption
- reduce processed and transferred data
will only work correctly, when the CUPS queue uses an alc900:// URI.
Print Servers with RAW-queue connection, which run alc900-cups version 0.12 and above, connected through an alc900-URI, will be capable of handling these options, when a client uses it.
installation described above is the fastest and easiest variant, but
has some big disadvantages:
- It will not really care about package dependencies
- It would live partly outside your package manager
- The configuration-scripts in the rpms are just wrong and the installer tricks around them
- There are wrong or obsolete dependencies in the packages
, and the alc900-cups
installer come with the capability to create proper RPM packages and
packages, which are exactly tailored for your system.
To (re-)create the proper pipsplus-packages, you will find the scripts:
repack-rpms.sh in pipsplus-1.1-b-rpms.tar.gz.
pack-libstdc.sh in libstdc-6.2-2.tar.gz
To create the alc900-cups-packages, install.sh offers the option --pkg-build.
Call./repack-rpms.sh , ./pack-libstdc.sh and ./install.sh with the parameter --help to learn more about package building.
will always need to generate the libstdc-package, when your
Linux-distribution does not provide libstdc++-libc6.2-2.so.3 in some
In this case, you will need to generate the lib-package first by
> ./pack-libstdc.sh # in the libstdc's directory
install the new lib-package by the rpm or deb package manager.
Then create the rest of the needed packages.
example to create deb-packages on Ubuntu 7.10 (Gutsy Gibbon) might
> ./repack-rpms.sh --pkg-release=1gutsy1 # in the rpms’ directory
./install.sh --pkg-build --pkg-release=1gutsy1 #
in the installer's directory
An example to create correct rpm-packages on openSuSE 10.3 might be:
> ./repack-rpms.sh --pkg-release=1suse103 # in the rpms’ directory
./install.sh --pkg-build --pkg-release=1suse103 #
in the installer's directory
In both cases the --pkg-release is an arbitrary name which should start with a digit.
examples above may give you an idea, what is appropriate.
You could also omit this option, but then the script will take the release number of the original packages.
The output on the screen will tell you, where to find the new packages.
RPM-distributions like SuSE, MANDRIVA, FEDORA CORE, REDHAT deinstall
old (original) packages with:
> rpm -e alc900-cups
> rpm -e --noscripts pipsplus pipsplus-epson-laser pipsplus-epson-alc900 pipsplus-gtk
and install the new packages with:
> rpm -ihv <names-of-the-rpm-files>
Once you installed the re-packed rpms, you don't need to use the --noscripts option anymore.
DEBIAN, KNOPPIX and UBUNTU deinstall
old packages with:
> dpkg --purge pipsplus pipsplus-epson-laser pipsplus-epson-alc900 pipsplus-gtk alc900-cups alc900-cups-gtk
and install the new packages with:
> dpkg -i <names-of-the-deb-files>
I would like to thank everybody, who helped me in continuing this project. Many thanks to all the testers, who invested their valuable time to find out, whether my coding also works with real devices for various Linux flavors.
Special thanks to all the project donors, whom I would like to do some more favor.
I finally made it to a 2nd hand AcuLaser C900 in my office, which helped me a lot to find out the secrets of the protocol. The protocol is totally apart from everything, that EPSON states in their documentation. Without the hardware in place, I would have been lost (actually I was).
Many, many thanks to you all of you, who supported me. I hope I am able to pay the confidence in me back, by supplying this driver.
And last but not least: Many thanks to my family for their appreciation.
Copyright ©2005-2008 Ullrich Sigwanz. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU FreeDocumentation License, Version 1.2.or any later version published by the Free Software Foundation.
$Id: index.html,v 1.37 2009/01/11 09:26:53 ullsig Exp $