Mac2Tivo – A lesson in Contextual Debugging
I’ve been getting offers from Roxio to upgrade Toast to version 10 for the last few weeks. I hadn’t seen anything really compelling about the upgrade, until I noticed a new application in the package called Mac2Tivo. This is a server that runs on your mac, and allows you to transfer video from mac to tivo. PC users have enjoyed this facility for some time, but it is only a recent cabability on the mac, released in January 2009.
I purchased the program for download, and proceeded to install it on my main file server, which runs our home wiki and provides a convenient dvd/cd burn station. I have used this system for years to perform various video experiments. It is an old power-pc g4 (Sawtooth generation), that I’ve had since 1999. I’ve upgraded it over the years, and it now sports a 1.8 GHZ CPU and about 2 TB of disk space. My first real digital video experiments on this machine were done with Elgato EyeTV, which was a fire-wire connected HDTV tuner that I used to record the 2004 Summer Olympics in hi-def. In the San Francisco Bay Area, we have had HDTV broadcasts from Sutro Tower, starting about that time or a bit earlier. In the early days, I could call up the guy at Sutro tower and say, “Hey, what happened to my hi-def signal?”. He would reply, “sorry, we had to power it down to install a whatzit, for channel 2. We’ll be back up in a couple of hours”.
Well things have progressed a bit. Back then I had assembled a 1 TB disk array for about $800 – more recently, I installed a Samsung Spinpoint 1 TB drive for about $90. This is the drive I’m currently using for automated backups, and for my video experiments. I’ve had good luck with the Samsung drives so far – they’re quiet and run cool.
More importantly, Tivo finally released an affordable HD version, which I bought in 2007. Since then, the EyeTv has been retired. While you could make a case for collecting HD recordings on the Mac for editing, burning, and other purposes, in practice it is too time-consuming and the scheduling is primitive and unrewarding. Contrast that with a Tivo season pass – select it and you’re done. For managing family programming, the Tivo is hard to beat.
After installing Toast 10, and burning a test DVD to confirm it, I launched Mac2Tivo and was rewarded with the following crash (you can view application crash logs from the Console app, which is hidden in Applications/Utilities on your mac):
Host Name: xxxx
Date/Time: 2009-06-26 17:25:34.632 -0700
OS Version: 10.4.11 (Build 8S165)
Report Version: 4
Path: /Applications/Toast 10 Titanium/Mac2TiVo.app/Contents/MacOS/Mac2Tivo
Parent: WindowServer 
Version: ??? (1.0)
Exception: EXC_BAD_ACCESS (0x0001)
Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000000
Thread 0 Crashed:
0 libSystem.B.dylib 0x9012cab0 _malloc_initialize + 1016
1 libSystem.B.dylib 0x90002fb8 malloc + 48
2 com.apple.Foundation 0x92bd1334 _NSAPDataCreate + 32
3 com.apple.Foundation 0x92bd14b0 NSPushAutoreleasePool + 40
4 com.apple.AppKit 0x938ae2d0 NSApplicationMain + 60
5 com.roxio.Mac2Tivo 0x00002168 start + 68
I noticed that when I had first launched Toast, it had asked me if I wanted to upgrade. I thought I’d better. So I upgraded the package I had just downloaded, which took another 30 minutes (it is about a half GB so it takes a while). The update was a full installer, so the first download was completely unnecessary. I guess they don’t quite have their ecommerce act together yet.
The new version of Mac2Tivo was 1.0.2, and after reinstalling, I was rewarded with a much smaller trace:
Host Name: xxxx
Date/Time: 2009-06-26 19:57:07.395 -0700
OS Version: 10.4.11 (Build 8S165)
Report Version: 4
Parent: tcsh 
Version: ??? (???)
Link (dyld) error:
Symbol not found: _NSInvalidArgumentException
Referenced from: /Applications/Toast 10 Titanium/Mac2TiVo.app/Contents/MacOS/mac2Tivo
Expected in: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
I guess that was some kind of progress, but not the kind I was looking for.
I had already started trolling the forums. There was absolutely no documentation on Mac2Tivo in the Toast kit. The Toast manual they include as a PDF was published in Dec 2008, and in the updated kit it was exactly the same. Maybe they only pay for a manual once a year, and the allotment was up for this year.
Not much luck on the forums. I went so far as to create an account and post my woos on the tivo-tools forum, which I rarely do. How about you?
I also sent an email to Roxio support.
I was getting pretty suspicious about the _NSInvalidArgumentException symbol not found. Why wasn’t it? It was almost like one of my dylib’s was damaged. I thought, maybe I’ll try it on Leopard (the server is still running 10.4.11). But my wife was using my macbook and I didn’t want to disturb her too much, because she is already developing a serious case of laptop envy (I have a new macbook; hers is a 4-year-old ibook g4). So far this exercise had only cost $69, and I didn’t want to add another $1200 in collateral damage.
I started targeting my searches directly at Roxio.com, and came up with only one really serious thread on Mac2Tivo. Lots of people were having trouble, and the response from Roxio support was nil. They had a general procedure, like reboot your tivo, reboot your router, say what?
I kept looking for System Requirements, but it was one of those things that you only find when you’re not looking for it. I did find it after some more trolling, and sure enough, it said that Toast 10 requires leopard. But it is a lie. Only Mac2Tivo seems to require it – all the other programs seem to run fine on Tiger. Oh well.
I eventually recovered my laptop, which is running leopard, and installed the package there. This time, I was rewarded with the following screen:
Now that looked more promising! I dropped a couple of movies I had recorded on our point & click Lumix camera, and voila, both tivos were happy (I have a series 2 and a tivo-hd). The only thing you have to do on the Tivo side is Enable Home Network Applications under the Music, Photos, & Showcases entry accessed fom the Tivo Central home screen.
Thus encouraged, I dropped a full-length movie in and it transfered without incident. It takes a bit of time to transfer the movies. I used a movie compressed as an mpeg4 using the apple-tv/ipod H.264 format. Elgato has a nifty little USB hardware encoder that makes this much faster, but it still takes about about 3 hours to compress a 2 hour dvd if you roll your own. Of course, you can always just buy the movie from the iTunes store if it is available there, but it will still take a while to download 2 or 3 GB’s, unless you are lucky enough to have a very hi-bandwidth internet connection.
What’s the lesson here? I think the lesson is that contextual debugging is the hardest. Here I was looking at stack dumps, when the problem was the platform. Had I purchased the software in a box, the system requirements would have been printed right on the side of the box. However, popping from an email into the order page was a different story – there was never any mention of the OS requirements, and so I fell into a completely preventable trap.
Roxio has always been a leader in burn tools. There is little competition on the mac. I’m thankful that they provide some Tivo capabilities that Tivo itself has been unable to provide for many years. So ultimately, one can’t complain too much – there is no where else to turn to at this point.
Ultimately, why go to all this trouble, you ask? Well, aside from the obvious wow factor of being able to easily select and show off your home videos on your mega-size home theater (mine is more modest), there are some other wonderful benefits. For example, you can download the lectures from iTunes University and save them on your Tivo, which will keep your place as you work through the material. You can download and save youtube videos and play them at a party without going through the horrible and confusing Tivo youtube search screens, which confusingly and silently omits videos you can see on you computer but not on tivo, and has no facility for bookmarking or saving your favorites for showing off later.
You could buy an AppleTv device, but if you already have a tivo, why bother?
One obvious limitation is the size of your tivo’s hard-drive. Newer tivo’s allow connection to external SATA drives, or you can replace the internal drive like I did. But that’s a story for another day.