Network-enable a series 1 Tivo without opening the box
I have a series 1 Tivo (i.e. a Tivo with only a modem, no USB ports) and, since I moved a few weeks ago, no home phone line. Of course, without a phone line the Tivo has no way to get new TV schedules. As Tivo-addicted as I am, I still am not willing to pay $15 per month to Verizon to keep a phone line around just for the Tivo to use.
There's a kit available to add an ethernet adapter to a Tivo. It only costs $60 (or $120 for the wifi version), but the real cost is in the installation. You have to disassemble the Tivo, extract the hard drive, hook the hard drive up to your computer, download and burn a CD of a specially-hacked Linux distribution, boot that Linux distribution on your computer, mount the Tivo drive, change the config on the drive, and put the Tivo back together. Oh, and I forgot the part where you actually install the adapter, which involves cutting a hole in your case. In other words, it's a day's work, even for someone who has more than a passing acquaintance with Linux and PC internals, and there are a variety of places for things to go wrong.
What was I to do? Pay Verizon? Hack my Tivo? Luckily, there's another way. Series 1 Tivos also have a serial port, and with just a slight change to the dial-up settings (see step 4 here for details), you can tell Tivo to use PPP over serial to download data. So I headed down to Radio Shack (yeah, freakin' Radio Shack!) and bought a null modem adapter, a db9 male-male gender changer (kinky!), and a serial to USB converter, for about $60 ($40 of that was the serial to USB dongle, btw). Putting all of that together along with the serial adapter that came with the Tivo gave me a cable that plugged into the Tivo on one side and my computer's USB port on the other. Then I started PPP on my laptop, which runs Linux, and turned on NAT and IP forwarding. (My PPP setup was inspired by this howto.) And weirdly, it all worked. Tivo was back in action, and I didn't have to touch a screwdriver or torx bit.
For the details on how this was all set up, click to go to the article.
Cable setup
My Tivo comes with a cable that, on one side, has a stereo mini plug and on the other has a DB9 serial plug. The mini plug connects to the Tivo in the back on the port labeled "serial" oddly enough. The other side connects to the null modem adapter plug, which connects to the gender changer (the gender changer looks like 2 female DB9 ports back to back). The other side of the gender changer plugs into the serial to USB converter, and the USB plug on that goes right into the computer.
Tivo setup
Follow the menus: "Messages & Setup", "Recorder & Phone Setup", "Phone Connection", "Change dialing options", "Set dial prefix". Set the dial prefix to ,#219. That was simple, wasn't it?
Computer setup
This setup assumes that your computer runs Linux and whose IP address does not begin 192.168.2. If it does, use 192.168.3 in the instructions below.
As root, run the following commands:
/sbin/iptables -A INPUT -i ppp0 -j ACCEPT
/sbin/iptables -A FORWARD -i ppp0 -j ACCEPT
iptables -t nat -A POSTROUTING --source 192.168.2.5 -j MASQUERADE
Now, plug in the cable and tell your Tivo to make a daily call or a test call. When the Tivo tells you it's dialing, run the following command on your computer (still as root):
If you've got other USB devices attached to your computer or you're not using a serial to USB converter, you'll need to change /dev/ttyUSB0 to be the name of the serial port the Tivo's connected to.
If everything is working, Tivo should tell you it's connecting, and then downloading data. If it doesn't, it might be that your pppd timed out before the Tivo could connect, or perhaps something is messed up with your iptables setup. Sorry I can't be more specific about how to troubleshoot problems. When something goes wrong, I look at /var/log/messages, iptables -L -v -n (to give me packet counters on devices), and I run tcpdump -i ppp0 -l (to tell me what packets are sent to and from the Tivo).
For now, I'm happy starting pppd on my laptop by hand, but eventually I might use mgetty to invoke pppd automatically. I already have to manually plug the Tivo into the laptop (this laptop doesn't just sit next to the TV), so the gain from using mgetty isn't that large. But if anyone works out the right mgetty setup, please leave a comment here!