Friday, May 04, 2007

Buying content for Apple TV from your couch

With Apple TV 1.0, you can't buy content from iTunes through the Apple TV directly, you have to use a Mac or PC. To get your content to Apple TV, you can sync or stream. Syncing places a copy of the file on Apple TV, stream sends the bits as needed to the device, but once the machine your streaming from is gone, Apple TV can't play the bits. So how do you buy stuff without leaving the sofa? You can use a laptop and either stream it from there, or if that is the machine your Apple TV syncs with, even better. But I chose to make the synching machine for the Apple TV an original iMac G5, since it's wired to the Apple Airport Extreme N, I get better performance. But the iMac is a floor up and half the house away width wise from the Apple TV, no way I am running upstairs to buy something. Sure, I can use the laptop to buy something and then move it over to the iMac, which could then push it down to the Apple TV, but can I simplify this? Thankfully the answer is yes, but its really only for the geeky.

Some Configuration
First, you have to turn on Apple Remote Desktop in the Sharing System Preference like this:

This enables your Mac to use the Virtual Network Computing (VNC) protocol to send its' display to a VNC client running on another machine. Apple has its own VNC client/management solution called Remote Desktop. But that costs big dollars, so you can download Chicken of the VNC for Mac OS X which costs nothing. Of course if you are using a Windows machine as the Apple TV sync computer, you can use the built-in Remote Desktop and even access the computer from a Mac using Remote Desktop Connection for OS X though sadly it's still a PowerPC only application.

Don't bother me I am sleeping
Great, so now you can remotely view the screen of your Mac/PC, but what if the machine is asleep. My iMac is set to nap after idling for 1 hour. I am not running upstairs to wake it up! Thankfully, there is a technology introduced for managing networks of computers called Wake on LAN (WOL). Basically, you send a magic network packet to a machine, that if configured to listen for it, will wake it up. I think this setting on Mac OS X is on by default, and strangely it is not in the Network System Preference, but in Energy Preferences:
If the iTunes library you are synching Apple TV with is on a Windows machine, thinks might be more complicated. In a bit of serendipity, posted Wake-On-LAN Add-in for Windows Home Server, which in turn linked to a blog post with the caveat relevant to our situation:
Of course, the PC must support Wake-on-LAN and this feature must be enabled in the BIOS of the PC, as well.

So you mileage may vary with Windows, since this could be a potential BIOS configuration issue, your pretty much on your own.

Assuming your machine like all Macs supports Wake-on-LAN, how do you send the magic packet to wake it up? You need software. The Wikipedia article on WOL lists a bunch of software by platform that can do this. On Mac OS, again Apple's Remote Desktop can do the job, but clearly overkill. In Mac OS X software list, I choose to use WakeOnLan. It's pretty simple, it scans your local network for machines, tells you if they are awake or not, then allows you to wake them up or put them to sleep. I have been using it now for a couple weeks:

I am not sure it is 100% reliable though, or it could be the new Airport Extreme N. I think I have seen the Airport Extreme reset when trying to send the magic packet, and I think WakeOnLan causes the iMac to kernel panic the other day when it received the magic packet, so not sure if there is an Intel to PowerPC problem, a malformed packet coming out of WakeOnLan, or the Airport Extreme corrupting the packet under certain circumstances, but I'll chance it so I don't have to run upstairs.

Can we get some iTunes or OS X integration? While this is all doable, I actually think Apple TV or iTunes should intelligently use WOL, since it doesn't appear to right now. How so? Well, say Apple TV wakes up your sync machine every hour (if it's on the local network of course), which initiates a sync from iTunes, then tells your sync machine to go back to sleep? Or even without Apple TV, how about in iTunes under Sharing in the Source list I could see a list of machines I had previously connected to and wake them up from there? Geez, even in the Finder, let me see a list of machines I had previously mounted volumes from and give me the option to wake them up if they are asleep. I can even see a little half-moon icon next to these machines, or the Finder icon with Zzzs coming out of it. I guess I am the one dreaming now.