how to hack your tivo using mac os x

(This guide assumes you a) have your TiVo networked via ethernet or wifi and you’ve assigned the TiVo a fixed IP number, b) are running at least Mac OS X 10.4, and c) have Apple’s XCode development tools installed on your machine; if you do not have XCode installed, download it from here.)

  1. Find out your TiVo’s Media Access Key. This is found by going to “TiVo Central”, then “Messages & Settings”, then “Account & System Information”, then “Media Access Key”. It’ll be the ten-digit number at the bottom of the screen. It’s unique to your TiVo — write it down, you’ll need it in steps 2 and 5.
  2. Download and configure the Dashboard Widget “Now Playing“. This will be what you use to get the .TiVo files off your TiVo. You’ll have to put the fixed IP address of the TiVo and the Media Access Key of the TiVo into the widget. After that, you can use the widget to browse the contents of your TiVo, and by clicking on the name of a TV show, you’ll be able to download the TiVo file to your computer. Pick a file to download and download it. It’ll take a while, .TiVo files are encrypted MPEG-2 files and thus honkingly huge.
  3. Download the “tivodecode” program from SourceForge; specifically, download the .tar archive for UNIX. Double-click the .tar file to open it and expand a “tivodecode” folder to your desktop. (It’ll likely have some version numbers after it, too; at time of writing this how-to, the folder is specifically named “tivodecode-0.1.2”.)
  4. Use the terminal to navigate to inside the new “tivodecode” folder created on your desktop:

    cd Desktop/tivodecode-0.1.2

    Then type:


    …and the Mac OS X compiler called gcc (added to your system via the XCode install!) will compile the new “tivodecode” binary and put it inside a newly created “objects.dir” folder*. So then type:

    cd objects.dir

    …and while you’re there, type:

    sudo cp tivodecode /usr/bin

    …to copy the tivodecode binary to your /usr/bin directory.

  5. And now here’s where the magic happens: let’s say my TiVo’s Media Access Key was “1234567890” and I wanted to decrypt the file “Metalocalypse.TiVo” on my desktop. The command to do that would now be (all in one line):

    tivodecode -v -m 1234567890 -o ~/Desktop/output.mpeg ~/Desktop/Metalocalypse.TiVo

    …and after the tivodecode program runs through your .TiVo file, you should have an unencrypted MPEG-2 file sitting on your desktop called “output.mpeg”.

  6. Use VLC to view the MPEG-2 file; use iSquint to convert it to MPEG-4 for your iPod.

…hopefully some enterprising soul will devise a clever Mac OS X app that combines all these odd and disparate steps into an E-Z, one-click process; but until then, this is a fairly decent way to do it.

ALSO: let me point out that with a slight hack to the plist of your Mac TiVo Desktop file, you can play those mpeg files back via your network onto your TiVo, thus enabling you to create a vast archive of television that takes up all the space on your Mac and not your TiVo.


UPDATE: Nik Friedman TeBockhorst has come up with a great little dropscript that takes care of steps 3, 4, and 5. Many people point out that you can use Safari’s Bonjour function to download the .tivo files; I still think “Now Playing” (and a TiVo set to IP is easier, but it’s your call, brother.

29 thoughts on “how to hack your tivo using mac os x”

  1. You actually dont need a fixed IP of the Tivo to get the files off the Tivo, since Tivo actually supports Rendevoux/Bonjour networking. You can obtain the .local name of the tivo by opening Safari and looking under the Bonjour Bookmarks area in the bookmarks pane or bar. Once you have that name, just type https://tivo:MediaAccessKey@your_tivo/ where your_tivo is replaced by whatever MyTivo_SomeNumber.local that you obtained from Safari. I belive the IP can also be obtained fairly easily with Bonjour Browser or other utilities.

  2. Hmmm. It won’t build for me.

    mkdir -p objects.dir
    gcc -Wall -O3 -D_FILE_OFFSET_BITS=64 -c -o objects.dir/hexlib.o hexlib.c
    make: gcc: Command not found
    make: *** [objects.dir/hexlib.o] Error 127

    I’ve got the latest Xcode, and gcc is in /usr/bin/


  3. I’ve followed the instructions and everything works except for when I type tivodecode -v -m 1234567890 -o ~/Desktop/output.mpeg ~/Desktop/Metalocalypse.TiVo I get

    tivodecode: command not found

  4. I got it fixed.

    1) it should be ./tivodecode …

    2) I needed to fix some spaces in the name of my .TiVo file

  5. I’m not sure /usr/local/bin is in the standard $PATH. Perhaps the last command in step 4 should be “sudo cp tivodecode /usr/bin” and the command in step 5 should be “tivodecode” not “./tivodecode” (since /usr/bin is in the path).

    DaMacGuy: try ls -l /usr/bin/gcc… it’s probably a symbolic link as Rob said to gcc-3.3 or gcc-4.0, which doesn’t exist. This happens when you upgrade Xcode versions and choose not to install gcc 3.3 or 4.0 (whatever the discrepancy is) and the symlink doesn’t get updated. Try “ln -s /usr/bin/gcc-3.3 /usr/bin/gcc” or “ln -s /usr/bin/gcc-4.0 /usr/bin/gcc”

  6. This is all amazing. Glad someone figured it all out. I just hope that someone creates an application to drop the ‘.tivo’ file on ’cause my Unix skills suck. ;)

    I have a Humax DVD Burning model TiVo, but would love to be able to save the occasional show as a Divx file to play at a later time on my Divx dvd player or on my iMac.

    I love how the tivodecode download has already been updated since this post was written.

  7. Thanks Ben, I added your suggestions to the how-to.

    Rob, I enjoyed that article, but I’ve had trouble with Galleon in the past, so I avoid it.

  8. Yep. Looks like it’s a symlink to gcc 4.0, and it ain’t there. I’ll reinstall Xcode at the office. Thanks!

  9. So I covet, but do not have a TiVo.

    Does TiVo work with digital cable signals (Say, Comcast in the East Bay), or only analog cable?

    What’s the status of HD TiVo, and which models of TiVo do these directions apply to?


  10. Has anybody had any audio/video sync issues once the muxed mpeg2 file is converted?

    My TiVo files also playback as mono although I believe the other track is actually there.

    any help appreciated

  11. Has anyone encountered the issue of white “staticy” lines that display across the top of the video (not on the picture itself, but above in the black space right against the top edge) after converting from .tivo to mpg using the droplet? Any fixes?

  12. Seemed that the sync issue was only for 1 file. Could be that file was downloaded to the Mac while TiVo was recording a show?.?.

    Still have the mono track issue. Converted using VisualHub and selected mono as an option. Not great, but was a quick fix.

  13. The Staticy lines have been referenced in a few posts (one is mine) the current “theory” is that it has something to do with Closed Captioning.

    I have had the same issue on PC using Direct Show Dump.

  14. Some detailed information about closed captioning can be viewed at:

    I have to wonder if the mpeg-2 compression renders the captioning information unreadable by a caption-decoder. I think it would have been interesting if Tivo had implemented an on-screen caption display option. My display does not have closed caption functions :( Plus it’d have been fun to see the captions as a transcription.

  15. Pingback: Anonymous
  16. Pingback: New Movie Reviews

Comments are closed.