Backup Tivo shows to your linux desktop

This is for a Linux desktop, I used Fedora Core 7 at the time. Also, working with Series 2 Tivo DVR. Anything else, who knows, maybe the same, maybe similar, maybe not at all, I have no idea. Everything in this write up uses freeware.

First, get and install tivodecode and pyTivo (which requires ffmpeg)

…. tivodecode creates mpeg2 files out of .TiVo files. This makes it more suitable for other applications. Really a .TiVo file is a .mpg, but with some special header or something on it. tivodecode just makes a new file without the header, just a pure mpeg2 file that most other applications can read.

“pyTivo”, works like the Tivo Desktop, but it’s for Linux. You can backup your TiVo recorded shows to your linux desktop, then share them back with your TiVo. This lets you move shows off your Tivo, making disk space for more shows. If you’re like me, your Tivo only has a little 40 Gig hard drive, but my desktop is loaded.

After much experimentation, I found a way to simplify the process. If you’re sitting at your Linux desktop, and you have X running, with Firefox, then this process will seem a little overkill. If you have Firefox at your fingertips, then you can just browse your Tivo and download files, then skip to the tivodecode step….. but, if you’re like me, you’re sitting at an XP laptop in front of your TiVo, controlling your Linux desktop, which is in the other room. Now, granted, I could use VNC and just use Firefox, but ug, where’s the fun in that? I have an SSH window open on my Linux Desktop, I want to do this command line…..

Set this up in your .bashrc

alias curl1=’curl -c /tmp/cookie1 -k -u tivo:1234567890 –digest -o /dev/null > /dev/null 2>&1; curl -c /tmp/cookie1 -k -u tivo:1234567890 –digest “$u” > “$f”; tivodecode -o “$f.mpg” “$f”; rm “$f”‘

Just change “1234567890” to your Media Key, and “” to the IP of your Tivo.

Here’s what happenning:
1) Establish your session and login, store the cookie in the cookie jar at /tmp/cookie1. Must use digest authentication, that’s what Tivo expects. If you don’t use the digest option, it won’t work.

curl -c /tmp/cookie1 -k -u tivo:1234567890 –digest -o /dev/null > /dev/null 2>&1;

For this next step, you need to have two vars setup, $u and $f.

2) Using your session from the cookie at /tmp/cookie1, retrieve the show at url $u and save it to a file named $f

curl -c /tmp/cookie1 -k -u tivo:1234567890 –digest “$u” > “$f”;

3) Create a new file, $f.mpg, out of the tivo encoded file $f
tivodecode -o “$f.mpg” “$f”

4) Since you now have two very large files of almost the exact same thing, let’s get rid f the tivo encoded file

rm “$f”

Example of this in action. Remember, all you have to do is install tivodecode and pyTivo, load the alias listed above (correct the Media Keys and ip to fit your setup), then use it like this:

Open a browser, and point to https://ipOfYourTivo/, login with tivo/yourMediaKey, then find the programs you want to back one at a time. Right click on the download link, select Copy Link Location to put the URL on your clipboard. Now, back in a shell window:


Here is complete example:

[dave@scorpio _TivoBackups]$ alias curl1=’curl -c /tmp/cookie1 -k -u tivo:1234567890 –digest -o /dev/null > /dev/null 2>&1; curl -c /tmp/cookie1 -k -u tivo:6877129799 –digest “$u” > “$f”; tivodecode -o “$f.mpg” “$f”; rm “$f”‘
[dave@scorpio _TivoBackups]$ u=”″
[dave@scorpio _TivoBackups]$ f=”Louie_CK_Comedy_Half_Hour”
[dave@scorpio _TivoBackups]$ curl1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 31 0 388M 0 0 260k 0 –:–:– 0:25:28 –:–:– 314k
Encryption by QUALCOMM ;)

End of File
[dave@scorpio _TivoBackups]$ ls -lah
total 389M
drwxr-xr-x 2 dave dave 4.0K 2007-09-08 23:58 .
drwxrw-r-x 132 dave root 36K 2007-09-08 23:32 ..
-rw-rw-r– 1 dave dave 389M 2007-09-08 23:58 Louie_CK_Comedy_Half_Hour.mpg

“Encryption by QUALCOMM ;)

End of File” — is just the normal output of the tivodecode program running.

So, now I have a file named “Louie_CK_Comedy_Half_Hour.mpg” in my _TivoBackups dir. I can now erase off my TiVo and make room for more shows. When I want to watch Louie_CK_Comedy_Half_Hour.mpg, I just select it, because pyTivo is serving it up. I kind of skipped over that part, figure it out on your own. Install pyTivo, it’s worth it!

pyTivo can transform most movie files into TiVo format, including Divx, VOB and anything ffmpeg can read, which is a huge list. So, you can rip your DVD’s, then play them from your Linux hard drive, through pyTivo, through your network, on your Tivo. Pretty cool, eh? I just started ripping my DVD library so I can have my entire movie collection at my Tivo fingertips.

Now, to really confuse you, I found another app that is super super cool. It’s called Galleon. It is a java program that can run on your XP desktop or on your Linux desktop. It can serves raw TiVo files back to Tivo, like pyTivo, but only TiVo files, it can’t translate anything else. So, why is it super cool, then? Because it has a bunch of other features, like RSS reader, photo slideshow, email, desktop, shoutcast and a whole bunch more. I still use pyTivo, because it does the best job at serving shows and movies. Galleon lets me browse and view my digital pics on my Tivo. I can also read RSS news feeds from my Tivo, check my email and a bunch more. By far, Galleon is the coolest Tivo home app freeware that I’ve seen.

Comments are closed.