Mac Mini + XBMC + Broadcom Crystal HD = 1080p video!
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.
Then run
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.
Installing XBMC
The easy bit, just take the latest nightly build (I took r26715). Don’t take the Camelot build as it doesn’t have the Crystal HD support.
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!

Sounds great Aehso. Bookmarked.
Sounds great. But what about Bluetooth for keyboard and mouse. Isn’t BT located on the same card as Wifi?
I have some BT usb-dongles but not sure os-x supports them…
Sorry, I should clarify, I remote desktop to the mini from my macbook whenever I need to do anything that I can’t do from the apple remote. I don’t have a keyboard or mouse connected to it at all…
Ok. Thanks for the clarification.
@Palle
No. The bluetooth card is not on the Airport card. You only loose Wi-Fi.
Thanks Aehso for the superb tutorial!
The Broadcom chip is now working perfect in my Mac mini 1.83 (17% processorload instead of 85%!!!). The drivers are working also great in Snow Leopard!
B.t.w. is there a way to autorun the line “sudo kextload /System/Library/Extensions/BroadcomCrystalHD.kext” everytime OSX boots?
David,
Great to hear you got it working. The kernel extension should automatically reload after reboot.
If this isn’t working for you then double check the files you copied into /System/Library/Extensions and /usr/lib – they have to be owned by “root:wheel” and they have to be readable/executable.
I wish I had realized this ahead of time but the newer Mac Mini’s do not have a PCI Express slot. The Airport/Bluetooth combo card is connected to the board via a tiny ribbon cable. I know this because I just took mine apart and am staring right at it. I was really looking forward to this fixing my stuttering problems on some 1080p HD movies. Good tutorial nonetheless.
@Fabrice K
.
Thanks, it is already connected by cable. So wireless is not needed. Guess I don’t have anymore excuses for not going ahead and order one
I’ve just installed a BCM970012 in my Mac Mini running OS X 10.6.2 with kernel extension version 1.0.3. Works like a charm.
@Nelson
What model do you have? One with a Geforce 9400m? 2GHz/2.26GHz?
Just dropped a BC HD into a dual 1.83 mini running 10.6.3 with 1.0.3 and it drastically dropped the cpu usage (90% to 45%) with a much improved frame rate. I did notice that every once in a while, at video startup I get dropped frames, which others are seeing with 10.6.3.
Thank you for these instructions, they really helped keep the installation simple.
Installed this device in my Mac mini early 2006 (cpu upgrade to 2.16 GHz). Well the device seems to work as my cpu usage drops down from 125% to 10-30%. But the frame rate also drops from about 20 to only 4. There must be something wrong. I tried the 1.01 and the 1.03 driver version with the latest XBMC nightly build (r31938). What’s my fault?
I installed the card, and using dharma rc1 I can’t select crystalHD as the render method, but there is a Allow HArdware acceleration (Crystal HD) checkbox… Is it the same result?
hello everyone
But thank you for this tutorial I followed to the letter and I can not properly install my card.
Here are the steps I followed:
I downloaded the archive crystalhd-for-osx-1.0.3.zip
I unzipped on the desktop in a folder named Crystal
I launched the terminal and drag the folder and I run Crystal guests command. here is what I entered in the terminal …
Thank you in advance to anyone who can help me
Last login: Mon Jan 17 17:48:55 on ttys000
Mac-mini-de-revaax:~ revaax$ /Users/revaax/Desktop/crystal sudo mv BroadcomCrystalHD.kext /System/Library/Extensions
-bash: /Users/revaax/Desktop/crystal: is a directory
Mac-mini-de-revaax:~ revaax$ sudo mv BroadcomCrystalHD.kext /System/Library/Extensions
mv: BroadcomCrystalHD.kext: No such file or directory
Mac-mini-de-revaax:~ revaax$ sudo chown -R root:wheel /System/Library/Extensions/BroadcomCrystalHD.kext
Mac-mini-de-revaax:~ revaax$ sudo chmod -R 755 /System/Library/Extensions/BroadcomCrystalHD.kext
Mac-mini-de-revaax:~ revaax$ mv libcrystalhd.dylib /usr/lib/
mv: libcrystalhd.dylib: No such file or directory
Mac-mini-de-revaax:~ revaax$ mv bcmFilePlayFw.bin /usr/lib/
mv: bcmFilePlayFw.bin: No such file or directory
Mac-mini-de-revaax:~ revaax$ sudo chown root:wheel /usr/lib/libcrystalhd.dylib /usr/lib/bcmFilePlayFw.bin
Mac-mini-de-revaax:~ revaax$ sudo chmod 755 /usr/lib/libcrystalhd.dylib /usr/lib/bcmFilePlayFw.bin
Mac-mini-de-revaax:~ revaax$ sudo kextload /System/Library/Extensions/BroadcomCrystalHD.kext
Mac-mini-de-revaax:~ revaax$
Does anyone have any updates on Flash browser support for CrystalHD with OSX? It is working great in Windows 7..so awesome to play 1080p video on my 4 year old laptop. Best upgrade yet!
Thanks for the great article!
I am also using a 1.6GHz /512RAM Mini as MediaCenter and had stuttering on some 1080p videos (not all). When searching for a solution I came across your article, bought the CrystalHD for 30$ and it solved it. Perfect playback of 1080p with only 23% CPU load. Much cheaper than upgrading to 2GHz which costs over 100$
If you can live without Wifi its the best thing you can do. Actually you can simply use a small USB wifi dongle instead.
Only drawback for some might be that only XBMC currently supports the CrystalHD on Mac. Fine for me.
Which directions did you follow? I’ve tried and tried but I can’t get mine working in OSX but it works fine on my Windows 7 bootcamp partition.
@Phil