William McBrine / Projects for the TiVo®

These require Python 2.x, unless otherwise noted. (Mac OS X and Linux users should already be set.) All except Reversi are open source, with code repositories available on GitHub. Most of these projects originated in TiVo Community Forum threads, where they were first distributed as attachments, so I've linked to those threads as well.

Please note that I'm not an employee of TiVo Inc., and these aren't TiVo products.


An alternative to TiVo Desktop Plus, pyTivo is an HMO (Home Media Option) server, that can transfer video to and from the TiVo (Series 2 or later), as well as provide music and photos to the TiVo. With the help of FFmpeg, it can transcode videos from a wide variety of sources to a TiVo-compatible format, on the fly.

pyTivo was created by Jason Michalski, and over the years has incorporated the work of many collaborators. I only maintain one fork.

pyTivo Wiki, with install instructions, etc.
pyTivo Discussion Forum
TCF thread

Network Remote Control for TiVo

A GUI, network-based virtual TiVo remote control for your computer, for Series 3 and up. Unlike the full-featured iOS and Android apps provided by TiVo Inc., this program merely simulates the hand-held "peanut" remote. But it will run on your laptop, desktop PC, or even your old PDA; and it depends only on the local network, not an Internet connection.

Controllable TiVos on your network are detected automatically, when possible; or you can specify an address.

Shortcut keys are available for most operations. Direct text input is available for those parts of the TiVo interface that support it, and for those that don't, the Network Remote can navigate the "Ouija board" and enter text automatically. Closed captions can be toggled with a single button press. These features make the Network Remote faster in use than an infrared hand-held.

Tested on Windows, OS X, Linux, and other platforms. The GUI works with either Tkinter or GTK, at your option (and depending on what's available).

Although the "Crestron" interface used here is now officially (though incompletely) documented, I developed this program based on discoveries by TCF user Omikron (see the thread, below).

Download version 0.31 (29k)
Mac OS X app (226k)
Demo video
TCF thread
Get it from the Mac 
App Store

Remote Proxy for TiVo

An intermediary between the TiVo and remote control apps ("Crestron" interface only) that allows multiple clients to connect at once; it can also monitor the traffic on the console.

While the Network Remote and Remote Proxy include features to support each other, Remote Proxy will work with any (old-style) TiVo remote app.

Download version 0.6 (19k)
TCF thread

HME/VLC video streamer

The first third-party HME app to take advantage of the undocumented video streaming capability found in Series 3 and later TiVos, as seen for example in the YouTube viewer. Surpassed now in some respects by Streambaby, but where Streambaby only handles locally-hosted files, HME/VLC also supports live Internet streams, and video podcast RSS feeds.

In addition to Python, as the name suggests, HME/VLC depends on VLC Media Player to transcode files and streams that aren't already in a TiVo-compatible format. Starting this project after having worked on pyTivo, I wanted something that would be easier for end-users to set up than FFmpeg. VLC also offered a built-in streaming capability of its own. But the results have been mixed, with subsequent versions of VLC breaking required features, and then only partially restoring them.

Sadly, many of the live streams have been discontinued since the last release of HME/VLC, with no replacements available. Most of the RSS feeds still work, and of course you can add your own.

Download version 3.6 (69k)
TCF thread

HME for Python

import hme

TITLE = 'Hello World'

class Hello(hme.Application):
    def startup(self):
        hme.Font(self, size=36, style=hme.FONT_BOLD)
        self.root.set_text('Hello, world!')

An alternative to TiVo's Java-based HME (Home Media Extensions) SDK, this package helps you to develop HME applications in Python. LGPL 2.1+, except where noted. (Most of the example apps are ported from TiVo's SDK, and as such are under the Common Public License.) More of a framework than a library. Python 2.x only, where x >= 3 (or x >= 5 in the next release).

HME for Python includes some features not available in publicly released versions of the Java SDK, such as (with Series 3 or later TiVos) an easy method of changing resolutions between SD and HD, and support for direct text input.

Besides HME/VLC and Reversi, HME for Python is also used in Jeff Bernardis' "Jukebox" and "pyTivo Video Manager".

Download version 0.20 (88k)
TCF thread


The classic board game -- you can play against the computer, or against another human player, if one is online. Unlike the other apps on this page, Reversi is remotely hosted, so there's nothing for you to install; you just have to enter an IP address on your TiVo. Formerly available through apps.tv, Reversi is now provided through its own IP, (wmcbrine.com).

To add Reversi to your TiVo, on a Series 2 or 3, or a Premiere in SD menu mode, go to "Music, Photos, & Showcases", and select "Manually add a server..." at the bottom. There, you can enter the IP. Reversi will appear near the bottom of the list. On a Premiere in HD menu mode, the procedure is similar, but the menu is "Showcases & Apps", and you select "Add an App".

Hidden game modes: Press "0" while in the menu for two-player local mode, where the remote alternates between controlling black and white. Press "3" to watch the computer play against itself.

Written using HME for Python, this was technically the first HD-capable game for TiVo (although the graphics are plain).

The routine that determines the set of legal moves was adapted from Brent Burley's Reversi.py, and the computer's strategy from Mark Williams' "Positional" strategy for the same program. Some ideas were drawn from the now-extinct PlayTeeVee version of Reversi for the TiVo. (I chose the strategy for its low computational overhead rather than its strength; it is, however, a slightly stronger player than PlayTeeVee's was.)

Due to a bug in version 20.3.1 of the TiVo software (for Premieres only; see here for details), I've (temporarily?) removed the fade effects that Reversi had used since the beginning. Some people might even like it better this way. Let me know what you think. (It used to look like this.)

As of this writing (November 23, 2015), "Add an App" is broken on the TiVo Bolt, so Reversi is unavailable there. (Local HME apps work.)

TCF thread