There I go again tweeting, when I should have been blogging.
For a long time I was using a Mac Mini (an early model Core Duo 1.66Ghz) as my living room media center but alas it just didn’t have enough beef to playback HD content. Mac Mini’s have integrated graphics (mine has a Intel GMA 950) which basically means that when you playback video on them the poor little CPU ended up trying to shift about huge data streams that only dedicated GPUs can really handle.
So I ended up buying a Popcorn Hour A110 which is designed for just that. The Popcorn box is a great little device – the remote is great, the playback capabilities are great but the media management and 12-foot UI are a weaker than FrontRow. Still, my Mac Mini was stored away.
Until now. When XBMC.org recently announced support cross-platform hardware decoding of mpeg2, h.264 and VC1 video content up to 1080p, well it piqued my interest. It turned out that these builds of XBMC can use a Broadcom Crystal HD PCI Express card to offload all the heavy lifting from the CPU.
Now it just so happens that the Mac Mini has a PCI Express slot but it is occupied by an Airport card. Thing is, the wifi signal in my Mac Mini has always been next to useless and besides, my living room has an ethernet router in it so I could ditch the Airport card.
Getting the Crystal HD
I bought mine from an Ebay store for about €20 – just make sure you get a BCM970012 card. Some speciality websites sell them for €80-100 but meh, I was willing to take a punt on €20.
Installing the Crystal HD
This is a little tricky since the Mini wasn’t designed to be user serviceable but if you are patient (and gentle with a putty knife) it is do-able. Just follow this dis-assembly guide and you’ll have it done in less than an hour. The only confusing parts I found were
- the four screws he refers to are the ones holding the base of the black plastic frame onto the motherboard frame. They are not the ones screwed into the DVD drive! In my defense, 3 of them are hidden in long sleeves which made them hard to spot!
- the wifi antenna is un-clipped by squeezing in the two black tabs that enter it from underneath.
Once you get the black frame off it’s a no brainer, just be careful not to pinch any wires when fitting it all back together later.
Installing the OS X Crystal HD Kernel Extension
There is a OS X Crystal HD “kernel extension” project – download their binary release (I took 1.0.1). NOTE that at the moment, they only advertise compatability with OS X 10.4 and 10.5 and as my Mini was running 10.5.6 I still have no idea if the kext works on 10.6.
Unpack the binary distribution and open a terminal window in that folder. Once in the unpacked folder enter:
sudo mv BroadcomCrystalHD.kext /System/Library/Extensions
sudo chown -R root:wheel /System/Library/Extensions/BroadcomCrystalHD.kext
sudo chmod -R 755 /System/Library/Extensions/BroadcomCrystalHD.kext
Kernel extensions won’t run unless they have the above owner/permissions. Ignore any error that OS X pops up at this stage.
mv libcrystalhd.dylib /usr/lib/
mv bcmFilePlayFw.bin /usr/lib/
sudo chown root:wheel /usr/lib/libcrystalhd.dylib /usr/lib/bcmFilePlayFw.bin
sudo chmod 755 /usr/lib/libcrystalhd.dylib /usr/lib/bcmFilePlayFw.bin
These libraries are required by the kernel extension (and again need to be permissioned/owned properly.
Now your Broadcom driver is installed. Load it up as follows
sudo kextload /System/Library/Extensions/BroadcomCrystalHD.kext
You should get a message saying the kernel extension was successfully loaded. You’ll only have to do this once as after reboots it’ll automatically be loaded.
And that’s it. When you fire up XBMC, go to Video -> Playback and in the Renderers list, you should be able to select “Broadcom Crystal HD”. And more importantly, you should be able to enjoy full 1080p video playback without even getting close to maxing out the CPU. My little box could play back a full 1920×900/H.264 encoded stream at a full 24fps without using more than 50% of the two CPU cores.
Cheapest upgrade ever!