January 02, 2010

Mac Mini Media Center/HTPC

Mac Mini & RemoteChristmas came a little early for me this year and I bought myself a Mac Mini and accessories to be used as a media center for my living room television. I have been wanting to build a home media center/HTPC for some time now and have hemmed and hawed over it. My basic requirements were that it would run something like Boxee, be easily administered remotely via SSH (read: UNIX), support Netflix and Hulu, and be usable by my non-technical (read: doesn’t work with computers for a living) wife. I basically wanted a set-it and forget-it machine that could be run from the couch with a simple remote control. Windows was not invited to my party, but for others would be completely capable for this task.

Mac Mini in Media Cabinet

Mac Mini in Media Cabinet

Originally, my plan was to purchase one of the many inexpensive ($200-300) media center PCs available or something like the Dell Zino, which along with Linux, seemed like a perfect solution. However, after much research and with the advice of some helpful coworkers, I learned that Netflix doesn’t work under Linux. There may be some hacks out there to get it working, but honestly my day job is configuring and administering clusters of Linux machines and I really didn’t feel like giving myself headaches for my television. So, after much deliberation I mentally justified the Apple tax and ponied up for a Mac Mini (with Snow Leopard). Ok, it wasn’t that hard, given that I already own a 2006 15″ MacBook Pro, a 24″ iMac, and use a 15″ MacBook Pro at work. Somehow, I turned into an Apple Fanboy over the last couple years.

The configuration described below is the one I settled on based on my existing TV and sound system (both low-end, but adequate for me). I’ve provided a bunch of links down below that go into more elaborate setups, including using the Mini as an over-the-air HD tuner and DVR.


  • Mac Mini (MC238LL) [$599.00] The Mac Mini is a late-2009 model, with a 2.26 GHz Intel Core 2 Duo processor, 160GB Internal HD, and 2GB of RAM…the most basic model they offer. Because I have a corporateperks.com account, I was able to get this for $563.00. Amazon has them for a little cheaper [$574.95 and no sales tax] than the Apple Store.

  • Apple Remote (MC377LL) [$19.00] It’s all aluminum and very sexy. Because of the corporateperks account, I was able to get this for $17.00.

  • Western Digital Elements 1.5TB External HD (WDBAAU0015HBK) [$99.99 via Holiday sale, regularly $119.99]


I stupidly purchased a MiniDVI->DVI adapter so I could plug my monitor into the Mac Mini for setup, but the Mac Mini comes with this adapter already. I was only a few bucks, but still…


Remote Control:

Apple RemoteI chose to use the standard Apple Remote control since my primary usage of this machine will be to run Boxee and it doesn’t require a lot of functionality to use to the fullest. The Apple Remote has 7 buttons – up, down, left, right, center, Menu, and Play/Pause. If you want to completely live in the Boxee (or Plex) world, this is all you need, really. However, I wanted to be able to start a few applications, have a virtual mouse, and perform a few other system-related tasks without the assistance of SSH or VNC, so I installed Remote Buddy. It extends the functionality of the remote – you just hold the menu button for a second or so and a separate menu pops up that allows you to perform all sorts of tasks (called “Behaviours” in the Remote Buddy world…yes, they are British) such as opening applications, rebooting the system, adjusting the volume, and even operating the mouse cursor with the remote control. These functions are very helpful particularly when Boxee crashes (which it seems to do quite frequently). Remote Buddy has built in actions for many common media center applications, including Boxee, Plex, VLC, and even Firefox.

The Apple Remote supposedly doesn’t work very well with Snow Leopard, according to various reports and the Plex startup screen. Not wanting to learn the hard way, I just installed the recommended Candelair IR driver. This replaces the OSX IR Receiver driver and seems to work just great. I believe this was addressed in a Snow Leopard Service Pack (10.6.2), but I haven’t bothered testing since the Candelair driver works well, is free, and is made by the same people who make Remote Buddy.

Remote Access:

Screen Sharing Settings

Screen Sharing Settings

For remote access, I use a combination of SSH and VNC. Because I have a weak wireless 802.11g connection in the living room, the built-in Apple Screen Sharing.app wasn’t connecting properly to the Mac Mini. After a good deal of troubleshooting, I came to the conclusion that it was a client-based problem and not the fault of the built-in VNC server on the Mac Mini. Apple Screen Sharing is simply an extension on the VNC protocol, so I tried a number of VNC applications –

JollysFastVNC was the best and even supported BonJour. I had to dial down the Color Depth to 16 bit for things to work, but now it runs reasonably smooth. To get JollysFastVNC to pass along all special characters (such as Cmd-Tab), I had to go to System Preferences->Universal Access and check “Enable access for assistive devices” on the Mini. On the client, I had to set Keyboard input to Immersive in JollysFastVNC. Now, VNCing to the Mini is mostly seamless, though still kind of slow due to my poor wireless signal.

To enable Screen Sharing, SSH, and File Sharing, go into Apple Menu->System Preferences->Sharing and check off Screen Sharing, File Sharing, and Remote login. Make sure to apply the permissions most relevant to your setting. It’s conveniences like this that lead me down the Mac Mini path versus a Linux-based solution.


The 160GB local disk included with the Mac Mini was simply not enough for a media center storing 720p and 1080p HD content. I looked into several options including the super-slick miniStack which is the same form factor as the Mini, but ultimately I decided that the form factor and faster hard drive was just not important enough to justify the extra expense. A co-worker sent me a deal at Dell.com for a bare-bones Western Digital Elements 1.5TB USB drive for $99 and I jumped on it. It is quiet and fast enough for me. Additionally, it doesn’t have any lights on it, so it is stealthy in my media cabinet.


Really, there was very little configuration involved. The Mini correctly identified my video resolution and looked great on the TV. All I had to do to get things working was plug everything in and install the software. To make sure everything started on boot, I went into the System Preferences->Accounts->Login Items pane and added Remote Buddy and Boxee as Login items. Now, when I restart the computer, everything comes up ready to go. I also enabled Automatic login in the Accounts->Login Options preferences pane.

By default, the new Play/Pause button and the Select (middle) button on the new Apple Remote seem to have the exact same behavior. This was annoying in Boxee because I had to click twice to pause running media. After whining about it (and originally including it in the “Problems” section below), I discovered that Remote Buddy allows very granular control over the function of every button. I went into Remote Buddy->Preferences->Mapping and under “Behaviours”->Boxee, I set Play/Pause to the Pause action. This had the effect of working as both a Pause and an Un-pause button when watching media in Boxee. Problem solved!


  • Fast Forward/Rewind Media – It’s difficult to fast forward or rewind media. Local media skips ahead at least 1 minute (or 10 minutes if you use the second of the two fast forward options in Boxee), but to smoothly fast-forward or skip ahead only a few seconds doesn’t seem to work very well. In streaming environments, such as Hulu and Netflix, fast-forwarding and rewinding is unreliable at best and just plain doesn’t work sometimes.
  • Boxee crashes. A lot. Mostly when using Pandora. It can be kind of annoying, but on the other hand, Boxee is free and still in Alpha. The beta is supposed to be released to the public on January 7, 2010 and I am anxious to give it a try.