I recently bought a new printer, as the title of this document describes, it was a Epson Stylus Photo R285. Not a bad printer, but unfortunately not very Linux friendly. If you do use Linux, and plan to buy this printer, I would suggest that you move on and look at another model.
The main issue with this printer was the fact that it would just stop printing, and no matter what I tried, it would just not restart. I had to turn it off, and back on in order to reinitialise, and even that did not help every time (more not)
Added to this is the fact that neither cups nor guttenprint had dedicated drivers for this model, thus I had to use the generic drivers (which could be the reason for this issue)
All is not lost, as I did find a way to soft-initialise the printer using a tool called 'ttink' which is part of a package called 'mtink'
Basically you have to install/compile mtink, but make sure you build it to include the command line tools, which builds ttink.
wget http://www.dedmeet.com/files/mtink-1.0.16.tar.gz ./
tar xvf mtink-1.0.16.tar.gz
cd into the folder
./Configure --prefix / --no-x --no-gimp
Copy the compiled ttink file to /usr/bin (or any convenient execute location) and make it executable
Now you must setup the udev rules to run this file whenever the printer is connected/detected.
edit the base udev rules file.
look for the line with BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
and change it to
BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k" RUN+="/bin/restart_printer.sh"
and save the file.
now create the /bin/restart_printer.sh file.
paste this into the file - my printer detects as /dev/usb/lp0, so adjust the line accordingly
/usr/bin/ttink -r -d /dev/usb/lp0
save the file, make it executable
chmod +x /bin/restart_printer.sh
test by tailing your log file
tail -f /var/log/messages
switch the printer off and on and look for a message like
run_program: '/bin/restart_printer.sh' returned with status 0
exit status 0 is good, anything else is an error. Look in the file, it will tell you what the problem was if it is not 0. The most obvious thing that it worked is that the printer will do an extra initialise routine after the initial startup.
you can also run the command sudo /usr/bin/ttink -r -d /dev/usb/lp0 manually in a console if the printer stops responding.
Well, thats it.
I hope this guide was helpfull.