Using OpenSolaris As A TiVo Backup Device

OpenSolaris logo TiVo logo
I'm trying to get the open source Java application Galleon to work on the OpenSolaris operating system. I'm writing this to describe what I did to get it working. First, a brief explanation of what Galleon is.

Galleon is an open source application written in the Java programming language that knows how to talk to a TiVo digital video recorder (DVR). The main two things that Galleon can do, from my perspective are:
  1. let you transfer video content between the TiVo and a computer
  2. let you write new TiVo interactive applications, in Java
Here is a video demo showing what Galleon applications look like on your TiVo.

There are two parts to Galleon: the Galleon server connects to your TiVo, and the Galleon GUI lets you configure the apps that show up on the TiVo.

My interest in Galleon is to use my OpenSolaris home media server as a TiVo backup device. I don't know if you have this problem, but every once in a while, the TiVo will crash and sometimes it loses some of the shows I've recorded. Most of the shows, I'm okay if they're lost. But there are always a few shows that I really didn't want to lose; those shows, I'd like to back up on a more reliable storage platform than TiVo. Now that my OpenSolaris home media server with ZFS is running and stable, I'd like to use it to backup my most critical content (if you can call TV "critical", but that's a separate issue).

I spent some time getting the Java app to build and run; I decided to run as an unprivileged user (i.e., don't need root privileges to run the app), so I made some configuration changes to make it work. Here's what I did.

First, I got the source via the project's CVS repository.

Next, I configured the "" file in the top-level directory to change where it tries to install Galleon. By default, the app goes into /usr/share/galleon but I wanted to try it from my home directory first, so I changed those entries appropriately (i.e., change /usr/share to /export/home/me). Also, I changed the log entries from /var/log/galleon and /var/cache/galleon to /export/home/me/var/... while I was testing.

Next, I went into the "galleon" directory and typed "ant" to build the app from source code.

(didn't yet worry about how to install and package it in /usr/local, where I'd want it (override default settings for linux)

I got pretty excited at this point, a little too soon. I tried to launch Galleon from build/bin (you launch by running a shell script called "", which starts the Galleon server). This didn't quite work: Galleon uses something called the Java Service Wrapper, but the wrapper executable in my download was not for OpenSolaris. Luckily, the web site had a binary for Solaris 10 x86 (here's a link to the Community edition, version 3.3.5), which worked fine with my OpenSolaris 2008.11 release.

(There's also a SourceForge project here but I haven't yet tried to compile it from source. I'd love to hear from somebody who tries it to see if it works for them.)

I tried again to launch the Galleon server (./, but it failed on launch: Galloen couldn't write to /var/log/galleon/{gui.txt, log.txt}. Galleon uses Log4J for logging; to fix this, I modified build/conf/log4j.xml to point to my area to which I have write permissions.

I launched again but it failed to start after a couple of minutes. I looked at the log.txt file to see why; turns out, Galleon uses the Derby Java database, which wouldn't start. Why? Because the hostname of my machine wasn't found. I have issues with my home network's hostname lookup with OpenSolaris (my other machines don't have this problem, only the OpenSolaris box), so I fixed that by putting the hostname into /etc/hosts for now. I should check /etc/nsswitch.conf, but this worked for the time being.

I launched the Galleon server one more time; it spewed a bunch of INFO messages, then said "Galleon is ready." That looked like good news; time to try the GUI and see if it's for real.

To run the GUI and configure Galleon, I typed "./", which brings up a Java application that lets you configure the Galleon server. You tell it the Media Access Key (MAK) of your TiVo, which is a simple credential used to connect to the TiVo. You can also configure Galleon by telling it which add-on apps to push to the TiVo. There are a handful of these, including local weather, a music player (the TiVo can play music stored on my OpenSolaris box), photos, RSS reader, and a few other goodies. The app I was really interested in was the "ToGo" app, as in TiVo To Go. That's the feature that lets me specify which shows I want to transfer from the TiVo to my backup server in case the TiVo crashes.

I did the configuration for the ToGo app, then went to my TiVo and went into the "Music, Photos, Products and More" menu to see the list of apps. Galleon showed up on that list; I clicked on it and went into the ToGo app. From there, I could choose shows to send from my TiVo to the computer.

I did the same thing on my OpenSolaris box with the Galleon GUI: there is a panel you can use to tell it which shows to download (e.g., all episodes of "House"). It worked just fine.

I let it do its work overnight; the next day, I found a pool of TiVo shows nicely backed up on the OpenSolaris media server. Next time we lose power and the TiVo gets confused, I can upload those shows back onto the TiVo and I'm back in business.

Powered by ScribeFire.


Post new comment

The content of this field is kept private and will not be shown publicly.