I recently decided to get rid of our old 2006 20-inch iMac that has been falling apart (random freeze due to heating issue and a faulty graphics card), and replace it with a Hackintosh built on top of an Intel NUC kit D54250WYK, which is a second generation NUC based on Haswell.
I built a Hackintosh before, but that was like 10 years ago. So I have to refresh my skill this time, and it turns out to be much harder than I expected.
I actually bought a cheaper D34010WYK kit initially, but I had a lot of difficulty in getting HD4400 graphics card to work, so I quickly sold it and bought a D54250WYK, which has HD5000 instead. However, D54250WYK and its HD5000 graphics card didn’t make my life any easier. Luckily it all worked out in the end. But in retrospect, D34010WYK might have worked too.
Note: This guide only applies to the second generation Haswell based Intel NUC kit. The first generation NUC had far less problems.
With a default BIOS setting, do the following:
Some other guide says you must set video memory to 128M, but it only seems to be applicable to the first generation NUC.
After preparing the installation image on a USB stick, before inserting it into NUC, you have patch the kernel following the instructions by racerrehabman; otherwise NUC will fail to boot.
First, patch the kernel on the USB stick. Proceed to boot NUC with it and finish the initial installation. Then, boot the USB stick again, open a Terminal, and use command line to copy the patched kernel from USB stick to the root directory of NUC’s local hard drive.
After successfully installing OS X 10.9 and patching the kernel, NUC should now be able to boot from its local hard drive, and finish the rest of installation.
If you have issues booting up, just do a reboot, and before the Apple logo shows up, at the Chameleon boot loader prompt, enter the booting option “-x” for a safe boot.
After booting into the OS, you should edit
/Extra/org.chameleon.Boot.plist to have the following settings, and then reboot again:
<key>GraphicsEnabler</key> <string>Yes</string> <key>Graphics Mode</key> <string>1920x1200x32</string> <key>IGPEnabler</key> <string>Yes</string> <key>IGPlatformID</key> <string>04260000</string> <key>IntelAzulFB</key> <string>10</string>
Feel free to change the
Graphics Mode setting to match your monitor. Note that the
IntelAzulFB settings are necessary to have accelerated graphics on HD5000 (maybe even HD4400, I no longer have a D34010WYK to test it). More information on choosing
IGPlatformID are given in this post on tonymacx86.com forum.
Now that graphics card works, and ethernet should work too, but the same is not true for a number of other things: wifi, bluetooth and sound. Now we are ready for some Kext fun to enable them. I use Kext Utility, but I presume other tools would also work just fine.
OS X kernel modules can be found under
/System/Library/Extensions/, but you must update the Kext cache for anything removed or installed. Kext Utility will help you to do just that.
The Haswell version of Intel NUC has an onboard audio controller in addition to HDMI audio. Since my monitor (HP Z24i) doesn’t do audio anyway, I’m only interested in getting the onboard audio to work, which is a Realtek chipset but with an unknown model (not even revealed by Intel’s audio driver under Windows, so was I told). After several failed attempts at tweaking AppleHDA, I decided to go with VoodooHDA.
The first one I tried was VoodooHDA 2.8.0 for ALC888, and it worked right away, so I didn’t bother to try others. Note that I’ve not tested the mic input or HDMI audio, since I don’t use them.
Do not buy Intel Wireless Link PCIe mini wifi card if you want to build a Hackintosh, since there is no driver support for them. I made this mistake, and had to give the card away to the ebay buyer of my D34010WYK.
Following the advice found in various Hackintosh forums, I bought a second-hand atheros AR5b195 (AR9285 wifi + AR3011 bluetooth) combo card off ebay.
For wifi, I use the 10.9 DP1 version from the Atheos Pack. For bluetooth, I use BTFirmwareUploader, and I can use Apple’s original IOBluetoothFamily with it. My AR3011 has
VID=0x0cf3. I’ve not had any success with other bluetooth solutions such as IOath3kfrmwr and patched IOBlueetoothFamily.
BTFirmwareUploader allows one to choose between several different firmwares by editing its
Info.plist file. It turns out that AR3011 doesnot have a very reliable performance. At one point in my tweaking, I event noticed that its
VID changed to
0x0930 (PID and VID can be found in About This Mac’s System Report, under Bluetooth, or if that fails, under Hardware -> USB -> USB 3.0 HiSpeed Bus -> Bluetooth USB Host Controller). I had to edit the
Info.plist file for BTFirmwareUploader to add an entry for it, otherwise it will not function. Very weird indeed.
At the surface, sleeping and waking up seem to work, albeit a bit slow in the process. But sometimes after it goes to sleep, it will immediately wake up, and then go back to sleep again after a few seconds. So the behavior is a bit unpredictable, and actually better to wait until it puts itself to sleep rather than manually forcing it.
What is more annoying, however, is that the fan seems to always spin at the top speed when awake. I can’t find a satisfying solution to this problem, but racerrehabman may have more info on OS X power management issues for Haswell CPUs.
I believe this is the first successful Hackintosh build for Intel NUC D54250WYK. Many hours were spent in researching various forums, patching, tweaking, rebooting, and pulling hair. Thanks to all the great contributors in the Hackintosh community and their prior work, I was able to get together the patches needed and finally call the build a success.
But was all this effort worthwhile? Let’s compare a full NUC system to a Mac Mini. Mine is about $500 (after discount), D54250WYK + 8G memory + 180GB Intel SSD 530. The low end Mac Mini starts at $599, with Core i5 (not Haswell) + 4GB memory + 500GB hard drive. It may be a little bit pricier, but then everything would work out-of-box.
Maybe I’ll think twice the next time around.