HOWTO: Epson EP-301 under Fedora Linux

In June 2009, I purchased a shiny new Epson EP-301 printer. This device is a six colour inkjet printer capable of producing high quality photographic prints.

Epson printers are well known for good support under Linux. While the EP-301 is new enough not to be supported out of the box by CUPS or Gutenprint, a quick web search showed that Avasys provide closed source drivers for many Epson printers including this one.

Those who don't want to know the background, may skip straight to the recipe at the end.

What Could Go Wrong?

With the printer unpacked and plugged in, I hastened to download and install the Avasys "PIPS" (Photo Image Print System). The english drivers page doesn't mention the EP-301, but the japanese drivers does. So I filled in the mini-survey and downloaded pips-ep301-Fedora9-3.4.0-CG.tgz.

As an aside, forcing people to fill in a survey before downloading a free driver is stupid. Optional surveys work because people want to give you useful information. Mandatory surveys get answered randomly because they are simply a barrier that pisses off your users.

I unpacked the file and ran the resulting install script as root:

tar zxf pips-ep301-Fedora9-3.4.0-CG.tgz
sudo ./pips-ep301-Fedora9-3.4.0-CG.install

This script just unpacks five embedded RPMs and installs them. This is a reasonable way of packaging up a driver and kudos to Avasys for getting it right. As we'll see later, raw RPMs would have been better still. Why add needless complexity?

The five RPMs installed were:

In addition the install starts a daemon "ekpd", and installs suitable /etc/init.d scripts so it survives reboots.

After making sure the printer was on (a trap for young players there!) I then used the normal CUPS web interface to create the printer, using the "Photo Image Print System" device and the EP-301 driver. The test page printed perfectly and I was all set.

Segmentation Fault

Or so I thought. The next test was to try and print a web page. Nothing happened. How about an image? Nope. In fact most applications failed to work with the printer. What on earth was going on?

The printer status in CUPS showed: "/usr/lib/cups/filter/pips-wrapper failed". A quick google turned up a offical message from Avasys showing that have known about the problem for at least a year. They stated that "The cause of the error when direct printing from an application has not been identified".

Dear Avasys. Let me tell you what the cause is. Your program, pips-filter, is failing with a segmentation fault when trying to dereference zero. I discovered this within two hours, with no source code. You should be very embarrassed indeed.

Avasys' recommended work-around, to use lpr from the command line, is rubbish. I needed to find a real solution.

Plan B

Gutenprint is a set of high quality print drivers for Linux that already supports many Epson printers. All I needed to do was write a printer description for the EP-301 and do a bit of tuning. To do that properly I needed the printer programming guide.

Epson have a developer portal that looks suspiciously like a link farm (hint: you might want to redesign that, guys). There's a page where you can request a programming guide. I duly filled in the form and waited for a reply.

And waited.

And waited.

Epson, your developer support sucks.

Frankendriver

I noticed that Avasys had a later version of their printer drivers on the English download pages. No support for the EP-301, but maybe the driver for the suspiciously similar Artisan 50 would work. Another pseudo survey later and I downloaded pips-spt50-Fedora9-3.7.0-CG.tgz.

I removed all the previous pips RPMs and installed from this file. So far, so good. Sadly, however, I could get a working CUPS printer defined. But what if I dropped in the EP-301 binary blob from the previous release? Nah, that's crazy. No way that would work...

First I had to liberate the rpm from pips-ep301-Fedora9-3.4.0-CG.install. I just opened it with vi and removed off all the text lines before the binary data started That left me with a tar file, from which I extracted and installed pips-ep301-3.4.0-1.i386.rpm. And, guess what? Everything now works perfectly.

Recipe

This recipe has been tested under Fedora 9 Linux.

  1. Download pips-spt50-Fedora9-3.7.0-CG.tgz from this page

  2. Download pips-ep301-Fedora9-3.4.0-CG.tgz from this page

  3. tar zxf pips-spt50-Fedora9-3.7.0-CG.tgz

  4. sudo ./pips-spt50-Fedora9-3.7.0-CG.install

  5. tar zxf pips-ep301-Fedora9-3.4.0-CG.tgz

  6. sed -n '/^\.\//,$p' pips-ep301-Fedora9-3.4.0-CG.install | tar xf - ./pips-ep301-3.4.0-1.i386.rpm

  7. sudo rpm -i ./pips-ep301-3.4.0-1.i386.rpm

  8. sudo service ekpd restart

  9. sudo service cups restart

PaddonWiki: mwp/Epson_EP-301 (last edited 2009-07-07 01:36:47 by mwp)