Tivo Discovery

Old Method (getting abandoned by TiVo)

HMO Discovery Spec

TiVo Detection Network Discovery Java Class

ZeroConf

HD UI Bug

In the HD (Flash) UI, Announced titles with spaces show up with "\032" in place of the space (ASCII 32, 0x20).
Wmcbrine discovered using the Non-breaking space character (ASCII 160, 0xA0) instead shows up right in both UIs.

Fix in Java SDK is to override Factory's setAppTitle and getAppTitle using title = title.replace((char)0x20,(char)0xA0);

Quick Java Bonjour instructions based on personal experience:

A version of JmDNS (Java mDNS classes) is part of the Sample Server jar - not the same as that from the Bonjour download site, so don't try to mix them if you're using the sample server to host your app. If you're not using the sample server, download and use the Apple JmDNS jar.

You'll use the DNSSD class to browse for one of the above services.
You'll need to implement a BrowseListener to get the results in a separate thread.
When you have a result, you only have a service name and the information to look up the details (enough to provide a listing to the user).
You'll use the DNSSD class and implement a ResolveListener to resolve one of your browse results in still another thread.
When you have a Resolve result, you'll have:

  • a DNSSD-style hostname (e.g. name.local. with a dot at the end) which will work for any local name resolution since you have JmDNS installed.
  • a DNSSD-style resolved service name - not really useful it seems like, and not pretty - worst thing is you aren't given any information in your resolution result to reference back to the original pretty service name. If you're doing multiple resolutions at once you'll have to handle that yourself, probably by forcing the multithreading to synchronize (only do one resolution at a time).
  • a Port to connect to at that hostname.
  • Other details in a map-like interface that includes a "path" entry you'll want to use to create a URL to connect to the service you were searching for (it's a TivoConnect URL path for an HMO entry, or a top-level path for the HME connections).

The DNSSD-style hostname is NOT supported by the TiVo itself for some reason, so if you have an HME application and are using this resolved service host to pass a URL to the TiVo to load, you must first un-DNSSD the hostname by creating an InetAddress and asking for its IP address. You can then pass the IP address as the host name in URLs given to the TiVo.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License