Elseed - A simple program to display caller-id information on your TiVo
=======================================================================

NOTE: This software comes with no warranty. I accept no responsibility 
for anything that might happen to your hardware/software/configuration 
as a result of using this software. For all I know, this software 
might make your TiVo explode. USE THIS SOFTWARE AT YOUR OWN RISK. 

WHAT IS ELSEED?
---------------

This is a simple little C program that will open your modem device 
on your TiVo, listen for caller-id information, and then display the 
caller's name and number on your TV screen. This software is 
supposed to (and does as far as I can tell) not interfere with the 
daily call that Tivo makes and the monthly(?) call to DirecTV that 
the DirecTivo makes.

WHAT DO I NEED?
---------------

1. A DirecTivo (DirectTV/Tivo Combo box). This software has been 
   tested mostly on a Phillips DirecTivo DSR6000 running TiVo software 
   version 2.5.1. See WHAT TIVOS DOES ELSEED RUN ON for more info.
   This may work on standalone Tivos or other DirectTivos running other 
   software versions, I have no idea. Let me know if you get it working 
   on different hardware/software.
2. Your phone line attached to your Tivo.
3. Caller-ID service from your telephone company.
4. Some way to get this program onto your Tivo. (Enable bash on the serial 
   port and upload using rz OR take out your drive and copy this software 
   onto the root partition OR TivoNet/TurboNet FTP, etc.)

WHAT TIVOS DOES ELSEED RUN ON?
------------------------------

elseed has been reported to work on:

o Phillips DirecTivo DSR6000
o Sony DirecTivo SAT-T60
o Hughes DirecTivo GXCEB0T

But it appears that same models have different modems so your mileage may
vary.

ELSEED DOESN'T WORK ON MY TIVO!
-------------------------------

I'm sorry to hear that. Here are some tips you can try to get it to 
work. There are no guarantees:

1. Try setting the init-string (using the -i command-line option) to
   'AT-STE=1;+VCID=1'. This reportedly will get elseed to run on 
   a Hughes DirecTivo and some Phillips DirecTivos. Example:

   # elseed -i 'AT-STE=1;+VCID=1' &

2. Try setting the init-string to 'AT+FCLASS=8;+VCID=1'.

3. Try setting the init-string to 'AT-STE=1;#CID=1'.

4. On your Tivo, turn 'Phone available detection on': 
   TiVo Central -> Messages & Setup -> Receiver & Phone Setup -> 
   Phone Connection -> Change Dialing Options -> 
   Set 'Phone Avail.' Detection: On.

   Then try any of the various init-strings listed here.

5. Use an external modem instead (see USING AN EXTERNAL MODEM WITH ELSEED)

USING AN EXTERNAL MODEM WITH ELSEED
-----------------------------------

If you have an extra modem lying about that can do caller-id and 
you desperately want to get this working, you can actually connect 
the modem up to your Tivo via the serial port. This requires 
hardware that is avaliable at http://www.9thtee.com/ and I'm not 
exactly sure what all you need, but if you are crafty, you can 
figure it out. Then you can set the modem device to the serial port 
(set to /dev/ttyS3 using the -d command-line option). You might also 
need to change the init string depending on your modem. And you might 
want to turn on the -M option since you aren't sharing the modem
with tivo anymore.

ELSEED ONLY WORKS SOMETIMES
---------------------------

There have been reports that some of the modems in the DirecTivo's are 
not very consistent in giving caller-id information. I don't know what to 
tell you since I don't have this problem with mine. So either live with 
it, hook up an external modem to your Tivo and use that (see "USING 
AN EXTERNAL MODEM WITH ELSEED"), or work to figure out what the problem is 
and become the hero to many.

Starting with 0.5.0 you can try to use the -e command-line option to 
have elseed exit after it displays caller-id information. There is a 
new shell script called elseed_forever.sh that is now packaged with 
elseed that can be used to launch elseed over after it exists so that 
elseed will run forever. See the INSTALL file for more details.

ELSEED DOESN'T DISPLAY THE CALLER-ID INFO UNTIL THE 3RD OR 4TH RING
-------------------------------------------------------------------

I think there are two factors here. The first is your phone company 
and you likely can't change how soon they send caller-id info down 
your phone line. I think most of them send it between the 1st and 
2nd ring. elseed cannot display caller-id info any faster than your 
other caller-id devices.

The second factor is how soon elseed reads the caller-id data. Before 
elseed version 0.5.0, elseed was waiting 50 centiseconds, or 5 seconds. 
This was how the elcid code was written that elseed is based on. 
As of 0.5.0, this is set to 20 centiseconds, or 2 seconds. So elseed 
should display caller-id info 3 seconds faster! In addition, there is a 
new command-line option -v where you can set how long elseed should wait
before reading caller-id info. You can make it faster or slower depending 
on what works for your setup. After I get enough feedback, I might 
turn down the wait time down even further.

USAGE
-----

Usage: elseed [options]
Options:
    -x N    set x coordinate to N [default 1]
    -y N    set y coordinate to N [default 11]
    -f N    set foreground color to N [default 4]
    -b N    set background color to N [default 1]
    -d S    set modem device to S [default '/dev/cua1']
    -i S    set modem init string to S [default 'AT+VCID=1']
    -l S    set log file to S [default '/var/log/elseed.log']
    -t S    set time CID info is on screen [default 10 seconds]
    -v S    set delay for reading from modem [default 50 centiseconds]
    -e      exit after displaying caller-id info [default is off]
    -M      turn off modem sharing [default is on]
    -D      put elseed in debug mode
    -h      show this help

INSPIRATION
-----------

I decided to write this software after seeing TivoCID by JLC which is 
available here: http://pvrhack.sonnik.com/tivo/jlc/. Unfortunately 
it actually runs caller id software on another computer with a 
different modem that has to have caller-id capability and sends 
information to your Tivo over an ethernet card (or PPP over the serial port).
I decided to see if the modem inside the Tivo was capable of doing 
caller-id. Once I found out that it was, it was pretty easy to get this 
software up and running on the Tivo, thus requiring a lot less 
hardware/software/setup.

BORROWING SOFTWARE
------------------

I shamelessly stole the source code from 2 different projects and 
hacked them together to create this software. The two pieces 
of software I "borrowed" were:

elcid - http://elcid.sourceforge.net/
    A simple C-based caller-id program

playitsam - http://minnie.tuhs.org/Programs/Playitsam/
    I only stole the OSD (On-screen display) code from playitsam
    to do the OSD stuff for elseed

    NOTE: Evidently playitsam borrowed  osd.c, osd.h
    from embeem's tivobvi 1.03. Check out:

    http://tivo.samba.org/download/mbm

    For more info on that project and other great tivo hacks. 
    Thanks embeem!

I also looked at the code in mgetty+sendfax to figure out a way to 
attach myself to a modem device while still allowing other programs 
to dial-out (I.E. The Tivo daily call).

LICENSE
-------

This software is free software (open source) released under the GNU 
Public License (GPL). See COPYING file in this distribution for more 
details.

THANKS
------

Thanks to the following people:

- nsysblh for massively re-writing the OSD routines, adding new features, 
  and doing a lot of grunt work to help us get elseed to run on many 
  different Tivos
- embeem for the original osd routines and nicepri and the cross-compiler 
  information and for being an all-around helpful person.
- jlc for writing tivocid which gave me my idea
- sporadic@linux.wku.edu for writing elcid, upon which this code is based
- Nathan Lewis (Saturn49) for a new updated font.h
- All the other tivo hackers who came before me and made my life easier

INSTALLING THE SOFTWARE
-----------------------

See INSTALL file in this distribution.

CONTACT
------

All code Copyright (C) Greg Gardner <greg@bah.org>
