TiVoToGo On Your Mac

Want TiVoToGo on your Mac?
Nearly two years after being released, TiVo, Inc may have failed to deliver but the hacker community has heeded our call. As of 12/05/06 the solution requires a little elbow grease and some command line action, but the difficulty level is reasonable until a polished app arrives in the near future — perhaps integrated into Galleon.

So what makes this hack special?
TiVoToGo was originally released as a service accessed through the TiVo Desktop software — PC only. Files transfered from a Series2 TiVo unit are saved to the computer in a .tivo format. This .tivo file is actually an encrypted MPEG-2. While we quickly figured out how to remove TiVo’s gunk protection on Windows to free the MPEG, Mac and Linux users have been left out. Over the last year or so a dedicated group of hackers has been reverse engineering TiVo’s decryption mechanism which has now born fruit in the form of TiVo Decode. Utilizing your personal Media Access Key (MAK), TiVo Decode quickly removes TiVo’s protection as it converts the .tivo file to a .mpeg on multiple OSes without requiring any TiVo software.

What do I need to get started?
You’ll obviously need to download TiVo Decode. As of this writing, version 0.1.3 is out and now handles audio from DVD-burning TiVo units. Once you download the package, you can use StuffIt, or equivalent, to decompress the files. The software doesn’t come compiled, so you’ll need Xcode to assist. Xcode can be located on your OS X install discs and/or in an install directory on your Mac (search for it). Once you’ve located the install package, go ahead and get it on your system. Using a Terminal window, you’ll want to find the TiVo Decode directory and type: make. All done? Good!

(Update: A compiled PPC version is now available on SourceForge allowing you to forgo the Xcode steps. Additionally, a compiled Intel version with Automator workflow has been created.)

Lastly, you’ll want to find out your MAK (which you probably shouldn’t share). Go to tivo.com/manage, sign in, and verify Transfers ALLOWED is set for the relevant TiVo units (Series2 stand alone boxes onlt). If they’re not, click on the DVR Preferences text link on the left column and enable them. Back on the Overview screen, click the Media Access Key link on the upper right side to retrieve your MAK.

How do I download my TiVo shows?
On your home LAN, using the web browser of your choice surf on over to httpS://[tivo-IP-here]. (You can find your TiVo’s IP via the Settings menu or via your home router software.) Safari users shouldn’t need to look up their TiVo’s (possibly-changing) IP address: In preferences, enable Bonjour under bookmarks, then select the TiVo from Bonjour in bookmarks, and finally change the URL address from http to httpS. With either method, to sign on, use tivo for your username and the password is your personal MAK. Browse around and download the shows you’re interested in working with. Alternately, you can install and configure Galleon to choose and/or schedule various show downloads.

How do I remove TiVo’s gunk?
Fire up a terminal window, we’re going to build a command line string. First we have to call TiVo Decode if it’s not in your path. In my case:
tivodecode-0.1.2/objects.dir/tivodecode

Next we need to specify our MAK which is the decryption key:
-m ##########

Then we need to tell the app to output (-o) the file and give it a path and name:
-o distraction.mpg

Lastly, we must point to the path and source TiVo file:
distraction.tivo

So my final command looks like this:
tivodecode-0.1.2/objects.dir/tivodecode -m ########## -o distraction.mpg distraction.tivo

In just a minute or two, you’ll have a free and clear MPEG-2 to play with. Enjoy!

How do I watch shows on my Mac and iPod?
If you plan to watch your TiVo-ed shows on your Mac, you’ll need an appropriate player. Despite Quicktime offering an MPEG-2 plugin (for a fee), it does not handle this particular flavor of MPEG. Both VLC and MPlayer are excellent free video playing applications which will handle the converted TiVo files.

If you plan to use your TiVo content on a video-capable iPod or in QuickTime you will want to convert the resultant MPEG-2 files into MPEG-4. iSquint and ffmpegX are free and will do you just fine.

Check out a few convert-for-iPod automation scripts here.

How do I get shows onto DVD?
There are two ways to move your de-gunked shows onto DVD. The first method is something you’d use for simple archiving purposes, for later reuse on a computer. Just burn to CD or DVD the way you would handle any other sort of data using OS X built-in functionality. But what you really want to know is how to burn your content onto DVD for playback in a set-top box. As with QuickTime, iDVD and iMovie are not capable of handling this particular sort of MPEG-2, so you’ll need to use another tool to author your DVD or you’ll need to convert the video to something more Mac friendly. Roxio’s Titanium Toast is fully capable of creating set-top box supported DVDs from the extracted MPEG-2 files. In conjunction with Apple’s Disk Utility, the free ffmpegX can be used to convert and create your DVD.

Linux users: If you’re a Linux user, you can pretty much follow these guidelines (swapping out *nix-specific software) to enjoy your TiVo shows away from your TiVo.

Remember… Skateboarding is not a crime, but sharing video could be.

50 thoughts on “TiVoToGo On Your Mac”

  1. Dave,

    Thanks for writing up this step-by-step guide. It’s still more complicated than it should be, but it’s nice to have a recipe book everyone can work from.

    I notice the Tivodecode download site on Sourceforge now has what appears to be precompiled Mac OS X binaries, but only for PowerPC machines. Mac owners with Intel hardware still need to build their own binaries with XCode, it seems.

  2. He added the PPC binaries after I started writing. ;) I assume this is all temporary and will be fleshed out into something a little more streamlined and pretty.

  3. The Apple doc you linked to is old (last updated 2005). From Apple’s newer FAQ: http://www.apple.com/quicktime/mpeg2/faq.html “Can I use the MPEG-2 Playback Component to de-multiplex (i.e., de-mux) multiplexed streams?
    While multiplexed streams can be played back with the QuickTime MPEG-2 Playback Component, de-multiplexing of these streams is not supported.”

  4. I am not aware of anyone being able to play back .tivo -> .mpeg(2) files via Quicktime. Perhaps this bit from the FAQ you site explains it: The QuickTime MPEG-2 Playback Component will play program streams, which combine audio and video streams that share a common timeline and are suited for applications with software processing. Playback of transport streams, which combine audio and video with independent time bases, is not supported.

  5. Hello,
    Good post Dave but after the release of the OSX version it did get alot easier.
    Instead of havng to build up to tivodecode I use a code that just takes me straight to the new version.
    So all I have to do is fire up terminal and paste a form of this coded in:

    /Users/turnipsun/Desktop/tivodecode-0.1.3-OSX-PPC/tivodecode -v -m ########## -o ~/Desktop/output.mpeg ~/Desktop/MythBusters.TiVo

    Obviously you need to change the user to what is on your computer and then change media access key.

    With version 0.1.3 it has made it somewhat simpler. I usually edit the code on a sticky to what I will be encoding and then paste it in.

    Chris Mas

  6. I’m really excited about trying this out, but I’m not clear on how to get the Tivo connected to my Mac in the first place.

    I have my Tivo here, sitting right next to the computer. What do you I use to connect the two? I have to do this step before I can find it with my web browser, correct?

  7. Any chance that someone might be kind enough to do for PowerPC users what Samuel McConnell did for Intel users? I’m sure I wouldn’t be the only appreciative party.

  8. To stream using tivodecode… Tested on a PPC Powerbook:

    /usr/bin/curl -k –digest -u tivo:{MAK} -c cookies.txt “{tivo2go url}” | /usr/bin/tivodecode -m {MAK} — – | /usr/bin/mplayer -vf pp=lb -cache 32768 –

  9. FYI, my general procedure with converted .tivo files is to use ffmpegX to convert to .mp4, then I use the edit features in MPEG Streamclip to edit the commercials out.

  10. As far as doing the workflow thing, you can download the PPC binary from the tivodecode project download page, and replace the intel one in Samuel McConnell’s zip with the PPC one downloaded from the project page. Otherwise you should be able to just follow the instructions provided. Although, I am not a Mac user…

  11. Safari users can download their shows without looking up their TiVo’s possibly-changing IP address.

    In preferences, enable Bonjour under bookmarks. Then select the TiVo from Bonjour in bookmarks, and finally change its URL address from http to httpS.

  12. Or . . . You can use this http://inik.net/node/97 Applescript. Just drop the .tivo file on it and a couple minutes later . . . There you have it. An mpg ready to go. Quicktime doesn’t play it without converting with something like isquint or Visual Hub. But it will play straight up in VLC Player.

  13. I tried the workflow and the result was a very squished image–I tried it on Battlestar Galactica and it mashed the widescreen image.

    I tried the drag-n-drop Applescript one, and it crashed about 15 min into the file.

  14. All of this is so great!…it makes me happy!
    Here’s what I’d like to see inside of a nice GUI wrapper:
    -Connect to Tivo, list shows.
    -Click on shows to add to queue.
    -Click on button to start queue process…
    -Downloads show, decrypts it
    -Converts show to pre-selected format (ipod, psp, etc.)
    -Option to delete mpeg2 file after encode to save drive space
    -GMoves on to next show in queue
    -Bonus: Automatically remove commercials! :)

    Seriously, many thanks to the work put into the decode…

  15. Dave Benesch

    Will try this tonight when I get home but I love the looks of it already (not that I mind typing out the command line code, but anything that makes this easier).

  16. David! You rock!!! This little program looks sleek and so promising! You incorporated most of the features I asked for! :) Way to go on the first step towards a nice solution!! :) I can’t wait to see where you take it!
    Great job!!

  17. Now, if we could just get David B and John Hopper (NowPlaying Widget) to incorporate each others work, we’d have everything we needed!

  18. Hey David, thanks a lot for the guide, I’m trying to follow these directions step by step, but I have run into a problem, hopefully someone can help. I am trying to transfer over the .tivo files from my tivo s2, but when I download them they are only 400k sized files, not the 800mb ones I am expecting… I tried on both safair and firefox. Is it a problem with my network, computer, or the tivo…? Any help would be great; I’ve been waiting soo long to do this!

  19. Wow… I’m amazed! I can finally burn off (albiet data files) TiVo programs to the Mac here at home! I haven’t bumped up the HD space on my 40hr S2 just yet and have a bunch of last season’s finales and this season’s premieres taking up space; this tutorial is heaven-sent! Thankyou thankyou thankyou!

    Incidentally, I follow your feed from the tivolovers.com/LJ feeds. Your help there is also priceless!

  20. Chucksax: Protected content doesn’t get downloaded via TiVoToGo. Most protected content is stuff TiVo sends such as the CNET and NYTimes TiVoCast video clips. Occasionally there is Macrovision flagged content that is locked too.

  21. Once you’ve done your editing in StreamClip, and you do a “Save As..”, it seems to be re-compressing the movie. E.G. the bit rate on the “saved as” movie is lower than that of the source. Is there a way to edit an MP4 without having to re-compress?

    Thanks!

    Jeff A wrote:

    >>FYI, my general procedure with converted .tivo files is to use ffmpegX to convert to .mp4, then I use the edit features in MPEG Streamclip to edit the commercials out.

  22. E-mailed my question to Squared 5 (maker of StreamClip), and got this reply:

    >>No, it does not recompress anything. If the source file has variable frame rate, that rate may sometimes change in the edited file; but this doesn’t mean the file has been recompressed.

  23. Why is there no TiVo in my Bonjour? Is TiVo wireless? If so, can I utilize the USB port in the front in anyway?

  24. I tried Tivo Decode Manager, but it truncates some files and eventually does nothing until i restart it – if i only execute one file at a time it works most of the time but that is really crude. I tried using HTTPS from Firefox to download files, however, the resulting files when loaded into FFMPEX appear to be 480×480 instead of 640×480. And i verified the 640×480 using Tivo Decode Manager. And these files are MPEG4 part 2, so, they require conversion. No amount of “correcting” thru FFMPEX appears to fix the problem. So, i was going to try the curl approach, but cannot get it to work. Here is the verbose result:
    /usr/bin/curl –verbose -k -digest -u tivo:8972857483 -c cookies.txt “http://192.168.1.104/download/NOW.TiVo?Container=%2FNowPlaying&id=371865″ >”Now: Voting; federal deficit.mp4”
    * About to connect() to 192.168.1.104 port 80
    * Trying 192.168.1.104… * connected
    * Connected to 192.168.1.104 (192.168.1.104) port 80
    * Server auth using Basic with user ‘tivo’
    > POST /download/NOW.TiVo?Container=%2FNowPlaying&id=371865 HTTP/1.1
    Authorization: Basic dGl2bzp7ODYwNTI3MTE3N30=
    User-Agent: curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7l zlib/1.2.3
    Host: 192.168.1.104
    Pragma: no-cache
    Accept: */*
    Content-Length: 5
    Content-Type: application/x-www-form-urlencoded

    igest POST /download/NOW.TiVo?Container=%2FNowPlaying&id=371865 HTTP/1.1
    Authorization: Basic dGl2bzo4NjA1MjcxMTc3
    User-Agent: curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7l zlib/1.2.3
    Host: 192.168.1.104
    Pragma: no-cache
    Accept: */*
    Content-Length: 5
    Content-Type: application/x-www-form-urlencoded

    igest

  25. Apparently this tool stops sending when it see a greater than symbol. The gist of it is that i get no output and curl exits. Here again is the rest of the output.
    igest

  26. Thanks for the feedback. It is true that when i play the tivodecode version through mplayer and it looks correct, and playing the Tivo Decode Manager looks the same, however, when i play the .tivo | tivodecode | ffmpex version i cannot get that to look correct. And when i put the version from Tivo Decode Manager into FFMPEX, FFMPEX says that it is 640×480 (correct) while FFMPEX says the the “original” from tivodecode always says it is 480×480. And the output of the .TiVo | tivodecode | ffmpex always looks stretched vertically.

  27. Two more notes, i tried converting the .tivo | tivodecode file using vlc and got exactly the same wrong result. So, that means that only tivo decode manager produces a correct result. My second point is that all of these videos are the TV version of wide screen which means that there is a square area of screen of which only a wide screen part is in use. Perhaps that is the problem, but i don’t record standard, non-digital, shows so i don’t have a test. I think i will find one for a test.

  28. @Nathan: If you don’t have a wireless network, you can buy an ethernet cable and a nifty little USB-to-ethernet switch to connect the Tivo into your router.

  29. I use the command line technique to convert as I can’t get Automator to work. Plugging in my data directly via Terminal, tivodecode converted the file rapidly.

    However, problem: NO AUDIO. Video is perfect and smooth and gorgeous. But I get no audio, nada, nothing at all in either VLC or QuickTime. Audio is fine in the original .tivo file.

    IÂ’m running OS X 10.5.3 on a dual-dual core 3 GHz Mac Pro with 6 GB of RAM and over a terabyte of disk spaceÂ…so it canÂ’t be for lack of power. Any suggestions on how to produce a file with working audio? I no longer have Tiger installed.

    I also have VM Fusion with Windows XP Pro installed, but IÂ’d really prefer to not go that route and couldnÂ’t make any sense of the DDD app that everyone seems to use on PCs.

    IÂ’d be very grateful for any help, thanks!

  30. This is the first time I have ever converted from .tivo to .mpeg, so no. I just converted the other .tivo file I have on my hard drive and that too is audioless, so it does not appear to be file-specific. Again, the .tivo files play perfectly.

    Unfortunately, I have zero Perl knowledge and I’m somehow more competent in Linux than Windows (???). Plus that program does a lot of stuff I don’t need, like transfer the files from my TiVo, which I have no problem doing. ALL I want to do is convert the files to functional mpegs.

    :(

  31. I have been using tivodecode in a shell script to convert my TIVO to MPEG2.

    #!/bin/sh
    /usr/local/bin/tivodecode -m 123456789 -o “${1}.mpeg” “${1}.TiVo”

    The resulting file will run on my Mac. When I want to put the video onto my ipod or write it to dvd i use visualhub (shareware from http://www.techspansion.com/visualhub/) to convert it to mp4. Everything appears to be working correctly.

    Don’t forget that Toast provides the “real” tivo2go but you must pay them for it. The result is mp4.

  32. Jeff, thanks for the idea, but I’m a bit confused – the command I’m using right now (once I get into the right directory) is:

    tivodecode -v -m 7566898576 -o ~/Desktop/Moonlight_Fated_to_Pretend.mpeg ~/Desktop/HD_Files/Moonlight_Fated_to_Pretend.TiVo

    …which results in the aforementioned video-perfect, audio-absent mpegs.

    The command you provided has me a bit confused (I haven’t done command line stuff since red hat back in 2002) – what does the “#!” mean – ie what should I be subbing in there? Also, the “bin/sh
    /usr/local/bin/” seems to indicate commands to access the directory containing the program, but I’m already IN the directory so I don’t really need that…in any case, when I plug in your command leaving the #! but changing the file names and locations of the .tivo and .mpeg files, I get NO RESPONSE AT ALL. I hit return and it just gives me a new command line. Nothing happens.

    When I sub in ‘jnoble’ for ‘#!’ (that being my root directory), I get the error ‘No such file or directory’. But if I strip away all the commands to access the directory containing tivodecode, then the command remaining is the one I have been using anyway, which results in defective files. In short I am very very confused!

    Dave –

    Thanks for all your help in this matter and that link , I’m gonna check it out. While browsing the TiVo comm forums (which have all these disclaimers stating no decoding discussion is allowed due to DMRA, and yet such discussion is rampant, lol), it seemed that most mac users were using TivoDecode Manager, which is basically toast 9/TivoTransfer + tivodecode combined in a one step process (it even states it uses the same tivodecode algorithm!).

    I sort of didn’t want to go that way because it frustrates me that I can’t get this command line stuff to work, on principle, but I was getting desperate and also simply curious. So I dl’ed and installed it, and VOILA, it works perfectly! And it IS actually nicer and simpler having it be a streamlined process, with the file being decoded to mpeg AS it is being transferred from my tivo (and taking up less disk space too as a result). So a solution has been found, and I’m pretty happy, but still stumped about the unix stuff and my own incompetence/ignorance in that arena.

    I’m so glad the diet piqued your interest. I’m obv a huge fan and it’s been amazing for me. It’ll be one month in early July! I’ll get back to your comments there in a bit. :)

  33. I’m sorry, what i sent you was a shell script. If you place both of those lines into a single file then you can execute it. Assuming you name the script file ~/bin/tivo2mpeg, you “chmod +x ~/bin/tivo2mpeg, and you have a tivo file called ~/tivo_files/gilligans_island.tivo, then you could execute

    ~/bin/tivo2mpeg ~/tivo_files/gilligans_island

    and the script will produce ~/tivo_files/gilligans_island.mpeg. I use the shell script to ease my typing burden.

    That said it appears that the command you are running is already correct. Have you had any successful conversions or has more than one failed in the same way, ie., no sound? Have you run the .mpeg file in the latest version of VLC?

    … jeff

  34. My partner and I stumbled over here from a different web page and
    thought I may as well check things out. I like what I see
    so i am just following you. Look forward to finding out about
    your web page again.

  35. Admiring the time andd effort you put into your site andd in
    depth information you offer. It’s great to come across a blog every once
    in a while that isn’t the same old rehashed information.
    Fantastic read! I’ve saved your site and I’m adding your RSS feeds to my Google account.

  36. Having read this I thought it was really enlightening. I appreciate you spending some time andd
    energy to pput this content together. I once again find myself spending a significant amount
    of time both reading and leaving comments. But so what, it was still worthwhile!

Comments are closed.