Author: Joe Barr
The first All-in-one I looked at was a Lexmark, but when John and Chris — the salespeople helping me — learned I would be using it with Linux, they steered me towards the Epson CX5400.
The two replacement cartridges for the HP totalled 66.98. The CX5400 — including brand new cartridges — was 129.99 after a $20.00 mail-in rebate. Looking at it another way, if I bought the CX5400, I would be getting a new printer, a new scanner, and a new personal copy machine for only $63.00 more than I would pay for the cartridges alone. After doing the math, the only reservation I had left was “How well would it work with Linux?”
How do you drive this thing?
The Epson America website directs you to Epson Kowa for Linux drivers for their printers, including one for the CX5400. You can download their GPLd binaries and source code from here.
But I decided to see what LinuxPrinting.org had to say. Lo and behold, Epson and HP are the two brands they recommend most highly. Epson Laser printers are rated “Excellent” and their inkjets — including the CX5400 — are rated “Good.”
LinuxPrinting.org says “The driver [gimp-print] provides excellent quality and extensive tunability both of the quality/speed tradeoff and color rendition.” Since I like to print a lot of digital pictures, gimp-print — which works great with CUPS — sounded like the best fit for my needs. Besides, both CUPS and gimp-print are included in SUSE Professional 9.1.
The consensus of opinion for the CX5400 on LinuxPrinting.org was to use the Epson Stylus C84 driver for the CX5400. The Epson Stylus C80 driver is also mentioned as a possibility. Allow me to add one more driver to the list. Behind door number three is the CX5200 driver, and that’s the one I ended up going with.
The CX5400 is a newer, more powerful version of the CX5200, so when I had problems with the C84 not ejecting the final page, I decided to give it a try. It seemed to me to have the same speed and print quality as the C84 driver. Plus it knew when to quit processing and spit out the page without manual intervention.
On my SUSE 9.1 Professional desktop system, installing the driver was fairly easy, so long as you held your mouth right and used the Yast2 modules instead of the KDE print manager. During the Yast2 printer configuration, I included root and lp in addition to my own user name as authorized users for the printer.
When you print from the GIMP, you’ll need to specify and setup your new printer again. Just remember the name you give it during the Yast2 config, then select whatever driver (C80, C84, or CX5200) you chose. The GIMP allows you to save those settings, and unless you do, you’ll have to do the setup all over again each time you use it.
Data, what does your scanner show?
The tips on LinuxPrinting.org also got me most of the way home as far as being able to use the CX5400 scanner. I hacked /etc/sane.d/dll.conf
to uncomment (removing the # from) the line which read # epson
. I also added a “#” to the line for hp, which was no longer required.
Next came a change to /etc/sane.d/saned.conf
, where I added the following line at the end to identify the manufacturer (the first hex number) and the product code (the second) for the USB device:
usb 0x4b8 0x808
After finishing those tweaks, I could detect and use the scanner, but only as root. Obviously, I had a problem with permissions, but I just couldn’t find the cure. Not until I found Karl Heinz Kremer’s tutorial on how to get an Epson scanner, libusb, and SANE to play together nicely.
Kremer explains that libusb
will try to claim any USB device that hasn’t already been claimed by another driver. Since we tweaked the epson.conf
file to indicate a USB device, it claims the CX5400 for its own. Unlike the kernel drivers of old, libusb does not use /dev/usbscanner
or a similar /dev/name
in order to access the device. It creates its own new device. Unfortunately, newly created devices can only be used by root. That’s where the hotplug
script Kremer provides in his tutorial comes in.
The hotplug
fix involved three tweaks. The first was to add the following line (note that the second and third hex numbers are the manufacturer and product code for the scanner) to /etc/hotplug/usb.usermap
:
epson_scanner 0x0003 0x04b8 0x0808 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
Next, I saved the following bash script as /etc/hotplug/usb/epson_scanner
:
#!/bin/bash
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]
then
chown root "${DEVICE}"
chgrp scanner "${DEVICE}"
chmod 660 "${DEVICE}"
fi
The last tweak was to add a new group called “scanner” and include my user name as a member. Now when I run xsane
as a normal user, it finds the scanner and works just as it should.
Click to enlarge |
Do you copy?
The CX5400’s third and final function is to make copies, which it does with much aplomb and completely independently of the PC. It has text and photo modes, color and black-and-white modes, and it handles multiple copies, resizing, bordering (or not), and multiple copies per output page. A pretty nice personal copier for the $63.00 bucks it cost me.
Conclusion
It takes more effort for Linux users to get full use of this fine Epson Multifunction Printer than it does for Windows or Mac users, but it works great once the tweaks are done. It’s curious to me that Epson is willing to work with the free software world, but only through its one-off holding Epson Kowa. That may be a dodge to get around any monopolistic marketing “deals” with Microsoft which restrict it from working directly with the Linux folk. But for whatever the reason, the GPLd code available from Epson Kowa should be a boon to free software developers working on adding driver support to the SANE backend and the print engine. That in turn will cut down dramatically on the amount of tweaking required.
The required tweaks are not particularly difficult, if you know what has to be done. But when you don’t know, it can be very frustrating finding the answers through trial and error. One of these days, newer hardware will “just work” on Linux the way it should. Hurry the day.