Homepage
of the AcuLaser
C900 CUPS Project
or
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
Before
I start, I would like to thank Claude
Gygax, whose
precise, detailed and very professional How-To on
http://www.mabase.ch/c900/
inspired
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!
WHAT'S NEW IN VERSION 1.0? |
Version 1.0
-
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
Have
a lot of fun
Ullrich
See the older ChangeLog, if you are interested in what changed before.
INDEX |
Basic
Preparation
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
Deinstallation
Troubleshoot
ALC900-CUPS
Insight
CUPS
Options
Do
Your System a Favor
Developers!
Create your own, Clean Packages
Acknowledgements
You
will need
foomatic-filters
cups
(or cupsys)
a2ps
psutils
ghostscript
Installed
on your machine.
Further,
the installation of pipsplus,
pipsplus-epson-laser,
pipsplus-epson-alc900,
pipsplus-gtk
and
the presence of the file libstdc++-libc6.2-2.so.3
in
/usr/lib
is
mandatory.
You
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>
--noscripts
>
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.
Download
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:
- printerdrake,
- kprinter
- gnome-cups-manager
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.
To
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.
I
would recommend to set up your printers as usual, at one of the URIs
mentioned above. Then invoke:
>
alc900.update-uris
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.
An
AcuLaser C900N with built in ethernet network card works best, when
connected through socket://<C900N-IP-address>:9100,
which
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.
Therefore
you must connect the AcuLaser C900 to the proprietary alc900://
URI
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.
For
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.
For
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)
NOTE:
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.
CHANGING TONER / POLLING PRINTER STATUS / CHANGING PAPER TRAY SIZE |
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.
Call
> alc900.connect
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.
After
you have polled status, changed toner or changed paper
tray size, you will get the possibility to select “regular
printing” again.
NOTE:
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”.
If
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.
Usually
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.
Call
>
alc900.post
to
check if an installation went right.
You
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
To
uninstall the whole driver (tar.gz-version), call – in the
directory where you unpacked the package – (as root):
>
./install.sh -–remove-only
If
the rare case might occur that your printer hangs, you can call as
root
>
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
Also
call
>
alc900.connect
and
check if all AcuLasers are configured for “regular printing”.
If
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.
The
knowledge of the printer options (lpoptions-command)
is essential for those people who like to print from the command
line.
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.
Option Name |
Values |
Arrange |
Alt,
Std |
Binding |
Left,
Right |
BundleSize |
1..10..100
|
Bundling |
Off,
On |
Driver |
c900,
c1100 |
Duplex |
None, DuplexTumble, DuplexNoTumble |
Hold |
No,
Yes |
InputSlot |
Autoselect,
Lower, MultiPurpose |
MediaType |
Normal,
Coated, Envelope, Thick, Transparency |
PageSize |
Letter, A4, A5, HalfLetter, Executive, EnvC5, EnvC6, Env10, EnvDL, Monarch |
PrintQuality |
Draft,
Fast, Fine |
SizeLimit |
1..150
|
Toner |
Color,
Black, Autoselect, AutoselectRelaxed, Sorted |
TraySize |
Document,
A4, Letter, Executive |
Zoom |
20..100..200 |
Enable
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
NOTE:
Bundling=On
Toner=Autoselect|AutoselectRelaxed|Sorted
SizeLimit=1..149
will
only work correctly, when the CUPS queue uses an alc900://
URI.
NOTE:
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.
The
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
Therefore
pipsplus-1.1-b-rpms.tar.gz
, libstdc-6.2-2.tar.gz
, and the alc900-cups
installer come with the capability to create proper RPM packages and
(lintian-conform) DEBIAN
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.
You
will always need to generate the libstdc-package, when your
Linux-distribution does not provide libstdc++-libc6.2-2.so.3 in some
package.
In this case, you will need to generate the lib-package
first by
> ./pack-libstdc.sh # in the libstdc's directory
and
install the new lib-package by the rpm or deb package manager.
Then
create the rest of the needed packages.
An
example to create deb-packages on Ubuntu 7.10 (Gutsy Gibbon) might
be:
>
./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.
The
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.
For
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.
For
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 $