Tivo Character logo

TiVo software, ports, and files


The files below are pieces of software that I have written, or ported, to the TiVo.

Each file has only been tested on a series 1 UK TiVo running software 2.5.5, and may or may not work on other series 1 TiVos. If you try one of them on a non-UK or non-2.5.5 TiVo then please let me know the outcome, and I will update this page accordingly.

  Dropbear-0.43 - SSH2 server daemon and SCP server

This is a port of Matt Johnston's superb Dropbear SSH2 server to the series 1 TiVo, and it can be used as a supplement or alternative to tnlited.

I didn't write this, and all credit and thanks should really go to Matt. I just made sufficient modifications to Matt's code such that it compiles and runs on the TiVo given the TiVo's limitations (no knowledge of user IDs, read-only root filing system, etc).
I've modified the code such that

  • It validates logins against a pseudo /etc/passwd entry with a user name of "tivo".
  • The password is read from /var/hack/etc/dropbear/passwd (this file needs to hold a Unix crypt'd password).
  • PATH is set to include /var/hack:/var/hack/bin
  • HOME is set to /var/hack
  • To generate the crypt'd password, there is a "makepasswd" binary included within the tarball which can be run on your TiVo.
  • Password login and ssh authorized_key logins both work.
  • scp works, by copying the included scp binary to /var/hack/bin

To install dropbear, download and unpack the tarball, and follow the instructions in the README file.

  Dummy Empty TiVo library

This is basically a rather pointless file! The tarball contains the binary, source, and Makefile for a blank library file in both static .a and dynamic .so formats. It exports a single dummy routine, void dummy(void), which does nothing. So why write it ? Well, because I've used it when attempting to run pre-compiled binaries made by other people which were linked such that they expect the presence of libraries which my UK TiVo doesn't have, eg, even if the routines in said libraries aren't actually needed. By dumping the dummy library file into /var/hack/lib and renaming or symlinking to it with appropriate names I can get the elf linkloader to not complain about the missing libraries. Probably no use to anyone, but I've put it here just in case...

  Datapipe - TCP port forwarder

This is a port of Jeff Lawson's Datapipe TCP port fowarder to the series 1 TiVo. Datapipe is a simple TCP session forwarder which allows you to redirect a local TCP port to a remote TCP port. Source for the program is available here and I've included within the tarball a Makefile that will cross-compile it for the TiVo. Note, I didn't write this - just ported it - and all credit and thanks should go to Jeff.

Why did I port this ? Because my TiVo sits on a Netgear WGE101 wireless bridge, which has a nice HTTP admin/statistics server. However Netgear made a design decision to have the HTTP server only accept TCP connections from machines which were plugged into its Ethernet port, not ones that are on the other side of the bridge (i.e. ones reaching it via the wireless side). My MRTG and OpenView machines live on the 'wrong' side of the bridge, and hence can't make TCP connections to port 80 on the WGE101. Via running datapipe like this... "datapipe 81 80" the admin machines can pull stats down via HTTP through as TCP connections to on port 81 get accepted by the TiVo and then piped through to (the WGE101's admin interface).

To install datapipe, download and unpack the tarball, and follow the instructions in the README file.

  /robots.txt and arbitrary textfile display module for TivoWeb 1.9.4 final

This is a simple extension module for TivoWeb 1.9.4 final (I haven't tested it on TivoWeb Plus, if you try it and it works then please let me know) that will trap requests for /<anything.txt> and serve a matching plain text file from the <tivowebroot>/textfiles/ subdirectory.

By this I mean that a request for e.g. /processes.txt will serve the contents of <tivowebroot>/textfiles/processes.txt as a text/plain mime-type'd file. If you have cron jobs running and want to send the output to somewhere that's easily externally readable, then just redirect it to a text file within the /textfiles/ subdirectory, and then you can retrieve it directly via TivoWeb.

The module does one other thing, if the file request is for the special file /robots.txt, and there is no file named robots.txt within the /textfiles/ subdirectory, then it serves a dummy /robots.txt file which blocks robot crawling. I did this to ensure that TivoWeb also has a /robots.txt file which will prevent its being crawled. If you did want a crawler agent to crawl your TivoWeb instance (for whatever reason) then just create a null (0-byte) /textfiles/robots.txt file or put your own robots.txt file within /textfiles/

To install the module, download and unpack the zipfile, ftp it to your TivoWeb /modules/ subdirectory, mkdir <tivowebroot>/textfiles, and do a restart of TivoWeb.

  Using Vixie cron on the TiVo

cron related issues seem to cause a lot of threads on TiVo Communities, and so I wrote up some notes on using cron and cron-enabled tools on the TiVo - they are available here.

  My TiVo upgrade plan/diary

I've kept a log/diary of my various TiVo upgrade stages, from start to finish. In case its useful to anyone else then I've made it available here.

Please feel free to send feedback on any of the above.

Valid HTML 4.01!