Broadcom Crystal HD (BCM970012) in Mac Mini (with Intel CPU/GMA chipset only)

Introduction
The Mac Mini is a pretty popular HTPC, myself have been using one for a couple of years, and together with the XBMC application things have been pretty great so far. Recently I upgraded my display to FullHD and to my dissapointment my Mac Mini wasn't up for the task to decode all 1080p H.264 content I had. Most of it worked, but not all.
 
Looking for a faster Mac Mini or an equal machine in terms of size and noise level turned out to be pretty hopeless. Either it's expensive or you end up with a bulky box, and still no guarentee they will have the horsepower needed to do the playback. The machines with Nvidia ION chipset together with XBMC-Live seemed like the best solution. But I'd lose the other things I like with the Mac Mini then, such as using it as an all around computer as well (just with a giant screen!).
 
Then the XBMC guys announced that they are working on support for the Broadcom Crystal HD BCM970012 hardware decoder (H.264, VC-1 and MPEG-2). The screenshot on the XBMC site showed a puny Apple TV playing full HD material. Cool! If an Apple TV can do, so can my Mini.
 
Obtaining the hardware
There were some american shops selling the BCM970012 for about 60-70 USD. However on Ebay there are many resellers from Hong Kong selling them much cheaper. So I took the cheapest I could find there with "Buy now" available. The price was only 22.40 USD including the shipping. It's unbelivable what these Hong Kong guys can sell stuff for.
This is the exact reseller I bought from, the item was received in about ten days, no custom fee or anything:
http://tinyurl.com/yg9fu7o
 
Installing the hardware
The Mac Mini isn't exactly friendly to open and hack around with, but it's not so bad as the rumour says. iFixit have a complete guide how to dismantle the Mini and remove the WiFi card (the Broadcom Crystal HD will replace the WiFi card in the Mini).
http://www.ifixit.com/Guide/Repair/Installing-Mac-mini-Model-A1176-AirPort-Extreme/1112/1
 
Getting and installing the drivers
The drivers are separated in two parts; the libraries and the kernel extension.
Download the latest drivers here (1.0.3 as of today):
http://crystalhd-for-osx.googlecode.com/
 
Now it's time to install these, and things get a little trickier, but not very much. There are some pitfalls. This is what I did, and it worked out OK.
  1. Depack the ZIP file on the Desktop
  2. Open a terminal and change it's diretory to the unpacked files
    cd Desktop/crystalhd-for-osx-1.0.3
  3. Install the libraries
    sudo mv libcrystalhd.dylib bcmFilePlayFw.bin /usr/lib/
  4. Give correct permissions and owner to the kernel extension
    sudo chmod -R 755 BroadcomCrystalHD.kext
    sudo chown -R 0:0 BroadcomCrystalHD.kext
  5. Put the kernel extension in some more suitable place. The Google code page suggests /tmp/ but this place is cleared during reboot, so it doesn't seem like an ideal place. So for now we'll go for your home folder instead.
    sudo mv BroadcomCrystalHD.kext ~/
  6. Now it's time to load the kernel extension into the kernel, this is a manual step that you need to do after each restart of the machine. The guys writing the kernel extension have not yet documented how to make the installation permanent. Normally OS X kernel extensions are located at /System/Library/Extensions but I have not tested to move the extension there yet.
    sudo kextload ~/BroadcomCrystalHD.kext
And that's that for the drivers, if everything worked out fine, the kextload command should have silently loaded the kernel extension for you.
 
Note: Jako Verstraate kindfully gave a tip about using Kext Helper as an easier way to load the kernel extension (replacing the last three steps). Thanks for the tip mate!
 
Getting a nightly build of XBMC
The stable versions of XBMC does not yet have the Broadcom Crystal HD BCM970012 support included, you need to get a development version which might be unstable. That's life when you can't wait :-)
 
You find the nightly builds of the very latest XBMC here:
http://mirrors.xbmc.org/nightlies/osx/
 
And there you should have everything in place to play silky smooth 1080p on your humble Mini !
 
Initial experiences
  1. Some movies which previously exhausted the Mac Mini are now happily playing at about 35% CPU (press 'o' while playing a movie for statistics).
  2. The infamous killa.sampla.x264.mkv doesn't play fine, there is a lot of graphics corruption.
  3. After a while, movies seems to start losing frames, more and more increasingly. Skipping forward/backward once stabilzies the frame rate again. This is a known bug and is being investigated.
  4. When starting a movie or skipping forward or backwards, it takes a second or two for the framerate to stabilize.
  5. Skipping forward or backward jumps a lot further than before, perhaps it's only the XBMC development version that differs here.
  6. Going away from fullscreen to windowed mode really, really make the video slow down. We're speaking 1 FPS or so.
Further tests with Nightly Build January 27, 2010
  1. Movies that previously started losing frames after a few minutes now play a lot longer before this happens, and when it happen, it sorts it out by itself after a while. It's not yet perfect, but definitly better.
  2. Slow framerate in window mode and when jumping to XBMC menu is still there.
  3. Skipping forward or backward still causes framedrops for a second or two.
  4. Testing with a 720p60 movie of a demoscene prod shows the Crystal HD be a lot worse than the CPU to decode it.
    Movie tested: ftp://ftp.untergrund.net/users/ae/hidef/TBL+Fairlight-Only_One_Wish.720p60.x264.mp4
Further tests with Nightly Build March 1, 2010 and driver 1.0.3
  1. Movies are still framedropping a lot, Some examples:
  2. I'll patiently wait for further updates :-)


 

Last updated: March 3, 2010
Anders Eriksson
ae@dhs.nu