(Answer) (Category) Linux on PowerPC FAQ-O-Matic : (Category) System Configuration : (Category) Printing :
How do I set up my EPSON stylus color 740 ?
I report how to configure an EPSON stylus color 740 under linuxppc using the Apple serial line. This answer borrows numerous hints from the Faq-O-Matic and from the linuxppc-user list. The additional decisive trick is point 6 below.

In short, you will need both a robust kernel to handle 230400 Kbauds (the lowest baud rate to be understood by the printer), and appropriate tricks to ensure a correct synchronization of the data flow. My tricks involve BOTH a correct initialization of the printer AND a correct set up of the serial line.

Although the serial line is quite slow for complex high resolution graphics, it may happen to be faster than the flow the printer can absorb during its feeding cycle and even for some printout patterns. Thus in the absence of a correct synchro, the built-in 64Kb buffer in the printer may overflow, resulting in error messages flowing back to the computer at 230400 Kbauds. This ruins the printout and may freeze your linux !

My recipee is as follows:

1) Upgrade to the stock V5 kernel (2.2.6-15apmac) if you are still using the stock V4 kernel (2.1.24). For the moment, I only installed the new BootX v1.1 and the associated stock kernel, and I posponed further upgrade to the V5 distrib. The behaviour of the older kernel is not reproducible at 230400 Kbauds and complete freezing of the system may happen on my Mac 4400.

2) If you have not yet upgraded to V5, the stty command is unable to set your serial line above 56 Kbauds. A patched version named hstty is available for you (see the FAQ-O-Matic).

3) Use the device /dev/ttyS1 instead of /dev/cua1. I have got obscure problems using /dev/cua1.

4) You may need also to make your printer port writable:

    chmod a+w /dev/ttyS1
5) Setting the synchro on the mac side is tricky. For high baud rates, you are tempted to use harware synchro
        (h)stty < /dev/ttyS1
However many folks have reported consistenly that this option is bugged or inoperant, and I have been also unable to use it. Thus we are left using the outdated xon/xoff synchro. Setting cstopb also helps for obscure reasons. Thus my recommended setup is:
    (h)stty 230400 raw -echo cstopb < /dev/ttyS1
    (h)stty ixon ixoff < /dev/ttyS1
6) You need also to ensure that the printer will use the xon/xoff protocol to indicate buffer overflow. I have lost considerable time to investigate why the printer behaviour was not reproducible. Apparently the xon/xoff setup is not enabled at power-on, but becomes the default when printiong plain text. The cure is very simple. Just send few ascii characters BEFORE sending your general raw data (as produced by stcolor or uniprint ghostscript filters). A carriage return is a good candidate, as it is not printable and will not reposition the paper.
    /bin/echo -n "\r\r" > /dev/ttyS1
7) Now you have all the parts of the puzzle to be ready to print.

I have experimented the following setup:
a) install the uniprint definitions for the 740
b) install printtools
c) define your queues for /dev/ttyS1. It is useful to define a low res queue at 360 dpi for fast cheap printing and a high res queue for slower and darker final printouts.
d) patch the /var/spool/lpd/<queue>/filter files

As an example, my sample /etc/printcap contains

  ##PRINTTOOL3## LOCAL uniprint 360x360 a4 {} EpsonStylusColorUni Default {}
  lp|lp0|360|360dpi:\
        :sd=/var/spool/lpd/lp0:\
        :mx#0:\
        :sh:\
        :lp=/dev/ttyS1:\
        :if=/var/spool/lpd/lp0/filter:
  ##PRINTTOOL3## LOCAL uniprint 720x720 a4 {} EpsonStylusColorUni Default {}
  lp1|720|720dpi:\
        :sd=/var/spool/lpd/lp1:\
        :mx#0:\
        :sh:\
        :lp=/dev/ttyS1:\
        :if=/var/spool/lpd/lp1/filter:
and in the corresponding 'filter' files, I have included the correct setup before starting the actual printing on the lpd pipe. Just replace hssty by stty if you installed the R5 distribution. The usleep commands add some tick delay (50ms on my computer) in order to ensure everything is done before actual writing occurs. May be it's pure superstition...
    [filter blabla...]
    #
    # set up the printer port and the printer!
    #
    hstty 230400 raw -echo cstopb < /dev/ttyS1
    hstty ixon ixoff < /dev/ttyS1
    usleep
    /bin/echo -n "\r\r"
    usleep
    #
    # run the command!
    #
    eval $bestpath 2>/dev/null 
    exit 0

That's it ! Enjoy...
Pierre.Valiron@obs.ujf-grenoble.fr

Ernst de Moor <ernst@creagraphy.nl> experienced a problem with the command
\bin\echo -n "\r\r"
with his LinuxPPC 2000 installation, because the characters '\r' get printed literally. Adding the flag '-e' fixes the problem.
Pierre.Valiron@obs.ujf-grenoble.fr
[Append to This Answer]
Previous: (Answer) Setting up a printer using netatalk
Next: (Answer) Epson Color Stylus 700
This document is: http://www.jonh.net/cgi-bin/lppcfom/fom?file=743
[Search] [Appearance]
This is a Faq-O-Matic 2.717d.
Hosted by anduin.org and SourceForge Logo