Home Gallery FAQ Download SDK Sourceforge


HME is TiVoís powerful new open platform for applications that are displayed and controlled by broadband-connected TiVo Series2 DVRs. HME applications are written using the Java programming language and can run on home PCs or remote servers hosted by TiVo. At this time, HME applications cannot control any of the TiVo DVRís scheduling, recording, or video playback capabilities.

Developers use the HME software developer kit (SDK) to create these applications. The SDK is released under the Common Public License (CPL). The Bananas UI Toolkit allows quick development of applications with the familiar TiVo look and feel.

For Developers

Download the SDK to get started with HME.

Download the Bananas UI Toolkit to create TiVo-style menus.

The HME SDK Developer's Guide is available online in HTML format here.

The Bananas UI Toolkit documentation is available online in HTML format here.

You may also want to join our mailing list.

For TiVo Subscribers

TiVo has developed several new applications and services using HME, including TiVoCast and SwivelSearch. More are on the way! When they are released, they will automatically show up within Music, Photos, & More.

If you'd like a glimpse of the type of things that are possible, visit the Gallery page.

You can see a demo of HME on your TiVo DVR today using the HME Quick Start.

You'll also find a number of third-party HME applications available from www.apps.tv. Note that TiVo neither owns or operates www.apps.tv.

All News

10/2/2007 - Experimental HME SDK 1.4.1 Released

  • Multilpe resolution support: This release introduces the ability for an HME application to control the rendering resolution of the receiver. The resolutions supported by the receiver are constrained by the hardware capabilities and current output configuration. The primary purpose of this feature is to enable the rendering of true HD resolution HME applications on Series 3 and TiVo HD platforms.
  • Thread safe API wrappers (experimental): This release contains extensive use of locking and 'synchronized' blocks in the SDK implementation to work around poorly written applications that use multiple threads but are not thread safe. This bulletproofing of the SDK comes at a measurable cost to performance, and so other solutions are being evalutated. There is no significant visible API change associated with this change.
  • This SDK is EXPERIMENTAL, meaning that the direction of the SDK implementation in this release should not be taken to be indicitave of future releases. The resolution support is part of the protocol, but the way it is exposed in the SDK may change slightly. The thread safe bulletproofing is a test concept, and so applications that want to be forward compatible should do their own locking and not depend on it.

10/31/2005 - HME SDK 1.4 Released
  • Transitions: This release introduces the ability for an HME application to transition directly to another HME application, given the URL of the destination application.
  • Two new methods (transitionForward() and transitionBack()) are provided in the Application class to support transitioning.
  • In addition, a new event (InitInfo) is now sent from the receiver to the HME application during start up.

10/31/2005 - HTML Developers Documentation Added to Site
  • The HME SDKE Developer's Guide is now available for quick online reference here.
  • The Bananas UI Toolkit documentation is available online here.

10/18/2005 - HME Directory Service Available at www.apps.tv
  • Developers can now list their hosted applications at www.apps.tv, a third-party site providing a directory of HME applications.
  • Applications must be hosted by the developer; apps.tv only provides a directory service at this time.
  • Customers who enter the apps.tv ip address into their TiVo recorder will see the apps.tv subscription manager, allowing them to choose which third party applications will appear on their DVR.
  • Discussion forums for customers to provide feedback are also available. Very nice!

9/27/2005 - HME SDK 1.3.1 Released
  • Fixed a NullPointerException which occurred when running applications or applications within the Simulator for some configurations.
  • SDK now only broadcasts the new JmDNS name for HME applications. That name is _tivo-hme._tcp.
  • Added support for key repeat to the Simulator; previously the Simulator only supported key press and key release events.
  • Fixed a bug in the video background sample app which would cause it to display improperly on some boxes.
  • Fixed a bug preventing the Simulator from discovering apps already running on your system.

9/12/2005 - Bananas Toolkit 1.3 Released
  • New Bananas Developer's Guide - Please refer to this guide for detailed information on the Bananas UI Toolkit.
  • New BKeyboard object.
  • New BSkin subclasses to make working with custom skins easier.
  • The replaceKeyboard() method now correctly looks for the longest row.
  • Added null check to dispatchKeyEvent() to ensure a screen exists before dispatching key events. 
  • System now plays "bonk"' if no screen is available.
  • Fixed private/public bug in BSkin.Element.
  • Added getTop() and getNVisibleRows() to BList, as well as a setView() to BHighlight.
  • Keyboard generates a Keyboard event, which is a subclass of HmeEvent rather than an Action event. This is to eliminate clashes with current action events if user types a word that is a pre-defined action (e.g., "up" or "left")
  • Updated BKeyboard to use post event instead of IKeyboardClient; use Keyboard class instead of large 3-dimensional arrays; when keyboard changes, select item in same space rather than item with same name.
  • Updated Bananas sample to include keyboard sample.

9/12/2005 - HME SDK 1.3 Released
  • Sample Hosting Environment (changed): This release includes revisions to the SDK sample hosting environment.  The sample environment, which uses a local PC as its host, is now modular in nature and separate from the SDK/application objects.  This separation allows you to replace the sample hosting environment with a custom one--for example, with a server-based host.  We recommend that you use this out-of-the-box environment during development of your application.
  • Idle Event (new): The HME Receiver now sends an Idle event when the user has been inactive for 15 minutes. If the application does not acknowledge this event (CMD_RECEIVER_ACKNOWLEDGE_IDLE) within 15 seconds, the Receiver times out to live TV.  This feature was implemented to prevent screen burn-in.
  • Font Metrics (new): A new FontInfo event returns basic metrics for all glyphs in a given font, as well as specific metrics for each glyph in the standard ASCII character set for the specified font. The SDK includes a new sample program that shows how to use this data.
  • Key Events (some changes and some new): In this release, optional key events were added to the SDK (KEY_OPT_XXX). Optional key events represent key codes that may be generated by any receiver, but are not guaranteed to be generated. This is due to the presence or lack of some buttons on various TiVo remotes. Key events beginning with KEY_- are guaranteed to be generated by the Receiver and are available on all TiVo remotes. Some key events that were formerly KEY_XXX are now KEY_OPT_XXX to reflect this new distinction between standard and optional key events.

05/31/2005 - Bananas SDK 1.2.1 Early Access Release
  • Samples: New Skin Sample shows how to create custom skins.
    Execute run-skinsample.* to run the new skin sample.
    Edit skin-launcher.txt to change skin used by sample.
  • Bananas SDK: Fixed BSkin.Element to provide setXXX methods to allow developers to change the properties of an Element from a custom BSkin subclass.
  • Bananas SDK: includes 3 subclasses for custom skins:
    1. BZipSkin - load skin images from external zip file.
    2. BDirSkin - load skin images from external directory.
    3. BResSkin - load skin images from application jar file.
  • Get the Bananas SDK from Sourceforge download.

05/23/2005 - HME SDK 1.2.0 Early Access Release
  • Simulator : Added Show Resource Usage Window. See Dev Guide for info. This may not be 100% accurate, but it may help find resource/memory leaks. We intend on expanding the functionality you see here. Feedback/bug reports appreciated.
  • Simulator : fixed Application.setActive(false), applications can now be exited in the Simulator.
  • Simulator : fixed window placement bug on multi-screen workstation.
  • Simulator : Added about box with SDK version number.
  • Simulator : Fixed layout problem with text - no longer consumes whitespace, and should match rendering on actual receiver better.
  • Simulator : Disable sound when IllegalArgumentException is thrown (an indication of sound not working on the host system).
  • VideoBackgrounds : Updated TN001-VIDEO-BACKGROUNDS.html This includes new source code for creating 1 frame video backgrounds from images. Future DVR releases will require your video backgrounds to be created with this version of mkloop.c which creates them with the proper aspect ratio.
  • SDK : Removed FlushSentinal - it never really worked correctly, and simply is not needed. No more flush warnings.
  • SDK : Added version number to manifest with support for Java Package Version standard. Note: If you repackage the SDK into your own Jar files you should include the version information from the Manifest. The version is displayed when the SDK starts and is also included in the Simulator about box.
  • SDK : Made most public class variables private, and added getXXX methods. Note: You will need to edit your code and recompile.
  • SDK : Changed events and resource IDs to start at 2048 instead of 100.
  • SDK : Updated protocol version number to 0.38.
  • Samples : Updated samples to work with new access methods.
05/23/2005 - Bananas SDK 1.2.0 Early Access Release
  • Updated Bananas to be compatible with new SDK private API (uses getXXX methods).
  • Added Get Methods to bananas and made class variables private.
  • Added BKeyboardWidget - See new developer documentation in the docs folder.
  • Updated Sample Code for new API changes and to demonstrate BKeyboardWidget.
  • More sample video backgrounds provided in /extras folder (reusable by developers).
05/04/2005 - Interesting Community Sites
  • A nice tutorial on getting started with HME (including a flash video that demonstrates configuring eclipse).
    TiVo HME SDK Info
04/22/2005 - HME In the News 03/18/2005 - Interesting Community Sites 03/08/2005 - Interesting Community Sites 03/07/2005 - Early Access Release 1.1
  • SDK : Misc.getInterfaces() fixed to only return IPv4 addresses.
  • SDK : Fixed some flushing problems ("N bytes not flushed.." warning).
  • SDK : Fixed "Output Limit Exceeded" exceptions on HTTP requests.
  • SDK : Fixed problems with URL streams closing more than once.
02/25/2005 - Interesting Community Sites 02/17/2005 - Interesting Community Sites 02/01/2005 - Interesting Community Sites 02/07/2005 - Bananas Early Access Release

Bananas is an HME user interface toolkit with the familiar TiVo look and feel. HME developers can use Bananas to create applications that look like this.

Download Bananas today.

02/01/2005 - Interesting Community Sites 01/31/2005 - Early Access Release
  • Simulator : Fixed reversed sounds for page-up / page-down keys.
  • Simulator : Got rid of the bevel in screenshots.
  • SDK : Factory now handles classes with shallow package depths better.
  • SDK : Added protocol document.
  • Samples : Removed target="1.4" from ant build file.
11/18/2004 : SDK Release
  • Samples : SkullBones artwork changed to fix out of memory problem on some receivers.
11/17/2004 : SDK Release
  • Samples : TicTacToe sample added.
  • Samples : SkullBones supports 0 - 2 players.
  • Simulator : Fixed various problems with SimTree, and other Exceptions.
  • Dev Guide : Added section 4.4.2 Cleaning Up Resources.
  • TiVo Box : Fixed more crashing bugs.
  • TiVo Box : Fix errant Please Wait behavior after app is destroyed
  • TiVo Box : Fixed Videobackground performance issue.
  • SDK : renamed constants SAFE_XXX to SAFE_ACTION_XXX.
  • SDK : Improved logic that writes Images out as jpg/png.
  • SDK : changed View.setXXX(...,animation) methods to only block the change if the animation resource is null.
10/15/2004 : SDK Release
  • Samples : Skull and Bones now play against the computer!
  • Samples : look for null context in Ticker callbacks.
  • Simulator : Improved preferences handling.
  • Simulator : Fixed bug removing animations.
  • Dev Guide : Added application life cycle.
  • Dev Guide : Updated Limits Section.
  • Dev Guide : Minor edits based on developer feedback.
  • TiVo Box : Fixed several crashing bugs.
  • TiVo Box : 'Please Wait' message cleaned up in more cases.
  • TiVo Box : Video Backgrounds fixed. Reusing the same mpeg as a background works.
  • SDK : Print close and exit messages when a receiver disconnects instead of dumping stack.
  • SDK : Support added for Apple's native mDNS implementation. See Apple's developer site to get the native Windows MDNS responder. If this is installed it will be used instead of jMDNS.
10/01/2004 : SDK Release
  • Samples : Video Backgrounds sample added
  • Samples : Effects sample added
  • TiVo Box : Receiver will now handle HME out of memory errors more gracefullly.
  • SDK : HTTP client code changed to specify Connection: close
  • SDK : dynamic Images added with createImage(Image image) are now converted to a BufferedImage if they are not already
  • SDK : nchildren/children are set correctly in View
  • SDK : Video Background Tech Note
  • Simulator : Busy indicator displayed while applications load.

Questions? Feedback? Use our mailing list, tivohme-developer@lists.sourceforge.net
Please DO NOT contact TiVo Customer Support with questions about HME. They will be unable to help you in any way.
©2003-2005 TiVo Inc. TiVo and the TiVo logo are registered trademarks of TiVo Inc.