Mtink is a status monitor for EPSON inkjet printer.
Ttink is the console based counterpart.

You need a bidirectional connection to the printer port.
If you system don't fullfill this requirement only a
few functions may be available.

This beta version is not completely tested. In order to
compile mtink you must make sure that the Motif, openMotif or
Lesstif runtime and development package are installed.

A gimp plug-ins is also provided (gimp-mtink).


Note for users with a lot of printers attached on different ports.
------------------------------------------------------------------
You can use the script mtink.sh in order to call mtink with
the right configuration file. See the textes in this file.

Note for Linux and USB:
-----------------------

Older kernel contain a bug while reading from the USB printer
port. In doubt actualize your kernel.

Note for FreeBSD:
-----------------

I have added /dev/lpt0 ... /dev/lpt3 for FreeBSD. The version I
have (4.5) don't support the bidirectional communication with
USB-printers. If newer versions support this you may add a device
list at the end of the known devices (file cfg1.c) and report the
changes.
 
Build mtink:
------------

The Configure script will check for the necessary components
and create the Makefile.

After you have called Configure simply type make, the binaries
will be produced.

This work on different Linux distributions and on Solaris.
You don't normally need to modify the makefile for these
systems.

If you have an other OS you may need to modify the Configure script,
sources includes and or the makefile. Please send me the modification
you have performed.

If you don't have gimp installed or any components are not available
the plugins will not be produced.

Installation:
-------------

Type "./Configure" this will produce the makefile.
"./Configure" will tell you which options are allowed.

After this first step, type "make".
As root type "make install" in order to install mtink and the documentation.
As normal user type "make install" in order to install the plugins.
 
The mtink program try to read and write from/to the parallel
or USB port. If this fail you must set proper rights to
the device file or make mtink running as root:

- Modify access right to the port:
   chmod 666 /dev/<DEVICE_FILE>

- Modify mtink rights:
  cd /<LOCATION_OF_MTINK>
  chown root mtink
  chmod 4755 mtink

- Tooltips:
  The textes are only for the german, french and the english language.
  If you copy the file Mtink.res to ~/EpsonUtil you can add
  textes into your language. In this case look for lines
  containing tooltip: and insert a new line with your language
  prefix.
  Example default (english) to german
  EpsonUtil*mainWindow.ok_PB.tooltip:    Abondon the\nStatus Monitor.
  EpsonUtil.De*mainWindow.ok_PB.tooltip: Status Monitor\nverlassen.
            -- < language = german (de)

  
If you want to install the plug ins, copy gimp-mtink to
$HOME/.gimp*/plug-ins/
If you have installed more version of gimp choose the proper
directory (e.g. gimp-1.2 for gimp 1.2).
You will find "Epson Status Monitor" under the Xtns menu.
Note that mtink must reside in a directory which is included
in the PATH variable.

Uninstall mtink with "make uninstall".

Getting information from printer while printing:
------------------------------------------------

Only one program can open the device file to the printer,
further programs which try to do this will not be able to
attach it to the device file. In order to allow getting of
the ink quantity while printing, I have programmed a little
server which must be started at boot time.
This server attach it to the printer and offer a named pipe
for the print proccess. The communication with mtink and
or ttink is then done via shared memory.
The server look priodically for new print jobs and if one
is found, the print data will be embedded into the EPSON D4
protocol and send to the printer. This allow to ask the printer
for it state, it identity and the remaining ink quantity, the
print-data and information/control channel are independant.

The server can be started via the script etc/mtink which
must be copied to /etc/init.d. Links must also be created
unter the apropriate rc?.d directories.

The daemon has to handle with a port, and the start script
must be modified accordingly.
 
The program location for the daemon mtinkd must possibly
be adapted.

If you want do use this feature with more as one printer,
you will habe to install the mtink script under different name
so that you are able to start the corresponding daemons.


Internationalisation:
---------------------

A few language are supported, english, french, german, italian.
turkish, bavarian (for the last language see later).

Mtink scan the environment for the variables LANG, LC_MESSAGES
and LC_ALL.

The top widget become a name according to the language found.
The first 2 characters are taken, and the first one is converted
to the upper case.

According to this the default resource for a widget may be:

EpsonUtil*ok_PB.labelString: Exit
EpsonUtil.De*ok_PB.labelString: Ende

The first line is the default (english), te second is the german
text. 

If make you translation, or correct the textes, please send me
them.
The enclosed file Mtink.res contain the actual resources for
mtink, you can use this file for the translation job and send
me this file back.
If you do so, please insert your name/email adress/URL in the about
textes for the language you have translated or corrected.

If you need other resources eg. font ypu can create a file
EpsonUtil in your home directory and put the modified resource into
this file. Don't forget that a resource description must begin with
EpsonUtil.

Ttink may also be internationalitez. If a file Ttink is found in
one of the directory:
- $HOME
- /usr/lib/ttink
- /usr/local/lib/ttink
- /opt/mtink/Ttink
- .
The file will be read and the english textes replaced with the textes
found in Ttink.

At this time only one the english (default) and german  (File Ttink.de
provided) are supported.

Bavarian language:
------------------

Please start mtink with "LANG=by mtink"
Bitte Mtink wie folgt starten:
   LANG=by mtink

Bugs:
-----

There may be a lot of bugs, tell me please what for problems you have.
I will try to solve them.

Todo:
-----

Documentation, help textes, more test, test for different printer
(I have only one).


Printers for which all work :
-----------------------------

Stylus Photo  890   my           own printer
Stylus Photo 1290                This is only a A3 version of the 890.
Stylus Color  400   SJK
Stylus Color  580   Glen S.      07-APR-2002
Stylus Color  280   ???????      ??-JUN-2002 
Stylus Color  600   S.B.         12-DEC-2001
Stylus Color  880   Marc R.      09-DEC-2001 (found on www.Pro-Linux.de)
Stylus Color  900   own test     19-DEC-2001
Stylus Color  980   own test     17-DEC-2001
Stylus Photo  700   Arni         10-DEC-2001 (found on www.Pro-Linux.de)
Stylus Photo  750   Karlheinz    29-DEC-2001
Stylus Scan  2500   Alberto      16-DEC-2001 (head alignment not tested)
Stylus C60          Andre        26-DEC-2001
Stylus Photo  895   SJK          12-MAR-2002
Stylus C80          Ronny        16-APR-2002 
Stylus C70          Ronny        05-MAI-2002 
Stylus Photo  820   Gene Heskett 25-JUL-2002                                
Stylus Photo  790   Steven J. M. 27-JUL-2002
Stylus Color  580   Glen Steward
Stylus Color  C42UX yq           DEC-2002
Stylus Color  C42US yq           DEC-2002
Stylus Color  777   Tosi         DEC-2002
Stylus Color  760   Sylvain L.         
...        

Configuration data for unknown printers :
-----------------------------------------

Refer to the file under the directory utils

mtinkd server:
--------------

Mtinkd is a little server which allow to display the remaining ink
quantity while printing.
Furthermore a problem with the use of usb printers is solved with
this server. If more printers are attached to the USB port, the port
used will not be every time the same. Mtinkd scan the usb ports and
detect which printer are attached. If a printer is found, mtinkd
offer a pipe for accessing the printer /var/mtink/<printer_name>.

A backend for cups is also provided. for installing an EPSON C60
printer you must issue the following command as root:
    mtink-installInitScript
    /etc/init.d/mtink start
    lpadmin -p C60 -E -v mtink:/C60

Warning:
--------

Some printer don't work correctly if there receive code immediatly after
powering on. In this case (The LED show that data are expected).


Note for Netscape 6.21:
-----------------------

The start script <netscape_path>/netscape/run-mozilla.sh is wrong, a
return value of 0 is always returned (at least for my version).

In order to get netscape 6.2 working correctly modify the script as
follows:

Look for ''$prog ${1+"$@"}'' and add the line ''stat=$?'' after the line you have
found.

Look for the next ''}'' at the begin of a line and add before this line
''   exit $stat''
   
Note for mtink within a browser:
--------------------------------
Mtink contain now a little server wich will allow to see the remaining
ink quantity within a browser. In order to install it change to the
pyink directory and call "make install" (as root). For more
information see the files in this directory.

======================================================================

Please report problems or success to:

jj.sarton@t-online.de

