Contribute
Register

Install Guide : Intel Haswell NUC Core i5 (D54250WYK) V1 (Mavericks)

Status
Not open for further replies.
Joined
Aug 31, 2010
Messages
3,888
Motherboard
Asrock Z87E-ITX
CPU
i7-4770S
Graphics
GTX 760
Mac
  1. iMac
  2. Mac mini
Mobile Phone
  1. iOS

************************************************
* Notice
*
* This guide is now deprecated and is no longer maintained
*
* No further support requests will be answered
*
* A new version of the guide can be found here
*
************************************************


Installation

Introduction

Here I will detail the installation process to get the Intel D54250WYK NUC up and running using Mac OS X Mavericks 10.9.2.

You can see my build description here :

http://www.tonymacx86.com/user-builds/119220-wonkeydonkeys-intel-haswell-nuc-build.html

We will use a combination of tools including MultiBeast, UniBeast, Chameleon and also a modified kernel.

Multibeast and UniBeast are the standard tools available to download right here on the tonymacx86 website.

Chameleon is a boot loader which is used to make our system boot up, much like Chimera. In fact, Chimera is built upon Chameleon and the two are very similar. The reason we are using Chameleon is because it has some changes that have not yet been incorporated into Chimera, and we need those changes to make our system work.

Its very easy to modify the kernel and getting the system to boot correctly is only slightly different from the standard UniBeast/MultiBeast method.

If that all sounds a bit technical, don't panic :cool:

Its easier than you might think, so long as you follow these instructions carefully. So go grab yourself a coffee, sit down and relax!

Before we get to the install, here is what works and what doesn't, based on the hardware I listed in my build description :

Working : ALC283 Audio
Working : DSDT
Working : Ethernet
Working : Graphics with full QE/CI
Working : HDMI Audio (Apple 27" Cinema Display, DisplayPort version)
Working : HDMI Audio (HDMI Display)
Working : Power Management (P-states upto 2.3 Ghz maximum at this time)
Working : Sleep & Shutdown
Working : USB Audio (Apple 27" Cinema Display, DisplayPort version)
Working : USB3
Working : Wireless Networking (Using AzureWave AW-CE123H)
Working : Wireless Networking (Using Dell DW1510 rebranded as Airport card)

Unknown : CIR (Consumer Infra-Red)

Not Working : Bluetooth (Using AzureWave AW-CE123H)

If you prefer to install your system using the Clover bootloader, please head across to this thread. Clover is a newer system for booting that provides a full UEFI environment and can provide a more polished finish. One really cool feature is that it patches kext files on the fly, which means it will survive upgrades quite happily and your system remains more vanilla than with this guide. If you are not sure which guide to use, please do some research into both Chimera/Unibeast and also Clover.

I also urge you to read through this thread before proceeding with the install; consider this your 'homework and research' :p Why ? Well there are users who have experienced issues after installing, particularly with 10.9.2 and the latest bios versions. Some of those I have been able to reproduce, some I have not. You must remember as with any hackintosh system though; the methods we use are not endorsed or supported by apple in any way. And neither is the hardware. It just happens that a bunch of us have managed to make it work and have documented everything, which gives you, the reader, options!

Ok then, on with the install !

We will carry out the installation through a series of steps, each dealing with a particular aspect of the install. You are recommended to complete them all :

Pre-Install - UEFI Bios Recommendations
Step 1 - Download the required tools
Step 2 - Unibeast creation
Step 3 - Kernel modification
Step 4 - Chameleon installer
Step 5 - Mac OS X Installation
Step 6 - Post-install configuration
Step 7 - Setup AHCI Controller name (No longer needed)
Step 8 - Setup ALC283 & HDMI Audio
Step 9 - Customization

Pre-Install - UEFI Bios Recommendations

*** Important *** *** Important *** *** Important ***​

Before you commence the install, please make sure you update your bios. At the time of writing, the bios version I am using is shown as WYLPT10H.86A.0024.2014.0210.1909

If you do not update your bios, the install may not work properly or you may have unexpected results.

You can check your version by pressing F2 when you boot your NUC; it is shown at the top left side of the home screen. There is also a link you can click to update your bios, as seen below :

84947-preinstall1-bios-version.jpg

Inside the Install Pack, I have included a set of screen images showing my complete bios settings. You can use these settings comfortably, but you should also be able to use the default bios settings. There is one setting that MUST be de-selected regardless, and that is Intel VT for Directed I/O (VT-d). You can see it in the image below; be sure the box does not have a tick in it :

79022-preinstall2.jpg

Step 1 - Download the required tools

Grab the following downloads before you begin. These are the tested versions :

Mac OS X Mavericks Installer : Should be in your 'Applications' folder ready for the UniBeast creation.
MultiBeast - Mavericks 6.1.0 : The latest edition for Mavericks.
UniBeast 3.0.1 : The latest Unibeast tool to create your new installer.

Chameleon Version 2.2 svn r2377 : Chameleon installer used to get the system bootable.
Text Wrangler 4.5.6 : A very nice (and free!) text editing program used to change some stuff later.
View attachment Haswell NUC Install Pack V3.8.zip : Contains the following files :

  • AppleHDA for ALC283 & HDMI Audio
  • Backup copy of kernel patching code
  • Backup copy of 10.9.2 modified kernel
  • org.chameleon.boot.plist
  • smbios.plist
  • SSDT.aml
  • DSDT.aml
  • com.apple.macbookair-13-unibody.icns
  • MultiBeast config file
  • Uefi bios screenshots
Step 2 - UniBeast creation

Follow the recommended method for creating your UniBeast installer as detailed in Steps 1, 2 & 3 here :

UniBeast: Install OS X Mavericks on Any Supported Intel-based PC


Dont try to install yet, it wont work.

Step 3 - Kernel modification

Before we install, we need to do two small modifications to the kernel on the UniBeast USB Installer you just created. Without these modifications, you will not be able to install - do not omit this step!

The modifications are done using 2 small perl scripts; that means you have to fire up 'Terminal', found in 'Applications/Utilities'.

The first script is for xpcm and the second is for lapic; dont worry too much about what these mean. What they do is to stop the system from rebooting when we don't want it to.

You can learn more about it here.

Go ahead and start the Terminal program, and make sure your UniBeast USB install key is plugged in.

We will do this using SuperUser mode in Terminal. To get into SuperUser mode type in :

Code:
[B]sudo -s[/B]
and press Enter. When you do this it will ask you for your password. Type your password in and press Enter again.

You will see that the on-screen prompt has now changed to :

Code:
[B]bash-3.2#[/B]

Next up we need to confirm the UniBeast location.

To do this type in the following :

Code:
[B]ls -al /Volumes[/B]
and press Enter.

Now you will see a list of mounted disk volumes, one of which will be the UniBeast USB install key you created earlier. The exact output will vary depending what disks and drives you have connected to your computer, but one of them should be the UniBeast drive.

Here you can see in red what I typed in and the output on my system, yours should be similar, and you can clearly see my Unibeast drive as one of the volumes in the list :

Code:
MacbookAir:~ System$ [COLOR="#FF0000"][B]sudo -s[/B][/COLOR]
Password:
bash-3.2# [COLOR="#FF0000"][B]ls -al /Volumes[/B][/COLOR]
total 8
drwxrwxrwt@  4 root  admin   136 16 Dec 05:08 .
drwxr-xr-x  32 root  wheel  1156 15 Dec 23:47 ..
lrwxr-xr-x   1 root  admin     1 16 Dec 01:20 Mavericks -> /
drwxrwxr-t  27 root  admin   986 15 Dec 23:39 Unibeast
bash-3.2#

If you followed the Unibeast creation guide exactly, then yours should be called 'USB'. I call mine 'Unibeast' since I use several USB thumb drives.

Now on to the first perl script (xpcm). At the bash prompt, copy and paste this very long line of perl code into your Terminal screen. Be sure to select the entire line of code :
Code:
perl -pi -e 's|\x74\x6c(\x48\x83\xc7\x28\x90\x8b\x05..\x5e\x00\x85\x47\xdc)\x74\x54(\x8b\x4f\xd8\x45\x85\xc0\x74\x08\x44\x39\xc1\x44\x89\xc1)\x75\x44(\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x57\xf8\x48\x8b\x47\xe8\x48\x85\xc0\x74\x06\x48\xf7\xd0\x48\x21\xc2\x48\x0b\x57\xf0\x49\x89\xd1\x49\xc1\xe9\x20\x89\xd0\x8b\x4f\xd8\x4c\x89\xca)(\x0f\x30\x8b\x4f\xd8\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x17\x48\x83\xc7\x30\xff\xce)\x75\x99(\x5d\xc3)\x90{7}|\x74\x73${1}\x74\x5b${2}\x75\x4b${3}\x66\x81\xf9\xe2\x00\x74\x02${4}\x75\x92${5}|g' /Volumes/Unibeast/mach_kernel

The very last part of the code above is :

Code:
/Volumes/[B]Unibeast[/B]/mach_kernel

If you used a different name for the Unibeast installer, such as 'USB', then replace 'Unibeast' with whatever name you used.

Go ahead and press Enter to apply the changes.

If all is well, your screen would now look like this, and you will be returned to the bash prompt at the end :
Code:
MacBookAir:~ System$ [COLOR="#FF0000"][B]sudo -s[/B][/COLOR]
Password:
bash-3.2# [COLOR="#FF0000"][B]ls -al /Volumes[/B][/COLOR]
total 8
drwxrwxrwt@  4 root  admin   136 16 Dec 05:08 .
drwxr-xr-x  32 root  wheel  1156 15 Dec 23:47 ..
lrwxr-xr-x   1 root  admin     1 16 Dec 01:20 Mavericks -> /
drwxrwxr-t  27 root  admin   986 15 Dec 23:39 Unibeast
bash-3.2# [COLOR="#FF0000"][B]perl -pi -e 's|\x74\x6c(\x48\x83\xc7\x28\x90\x8b\x05..\x5e\x00\x85\x47\xdc)\x74\x54(\x8b\x4f\xd8\x45\x85\xc0\x74\x08\x44\x39\xc1\x44\x89\xc1)\x75\x44(\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x57\xf8\x48\x8b\x47\xe8\x48\x85\xc0\x74\x06\x48\xf7\xd0\x48\x21\xc2\x48\x0b\x57\xf0\x49\x89\xd1\x49\xc1\xe9\x20\x89\xd0\x8b\x4f\xd8\x4c\x89\xca)(\x0f\x30\x8b\x4f\xd8\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x17\x48\x83\xc7\x30\xff\xce)\x75\x99(\x5d\xc3)\x90{7}|\x74\x73${1}\x74\x5b${2}\x75\x4b${3}\x66\x81\xf9\xe2\x00\x74\x02${4}\x75\x92${5}|g' /Volumes/Unibeast/mach_kernel[/B][/COLOR]
bash-3.2#

Next up, the second perl script (lapic). At the bash prompt, copy and paste this line of perl code into your Terminal screen. Be sure to select the entire line of code :

Code:
perl -pi -e 's|(\x25\x1c\x00\x00\x00\x48\x8d\x0d..\x5e\x00\x3b\x01)\x74(\x11\x48\x8d\x3d...\x00\x44)|${1}\xeb${2}|g' /Volumes/Unibeast/mach_kernel

As before, if you used a different name for the Unibeast installer, such as 'USB', then replace 'Unibeast' with whatever name you used.

Go ahead and press Enter to apply the changes.

You are now finished applying the two perl scripts and your screen should now look like this :

Code:
MacBookAir:~ System$ [COLOR="#FF0000"][B]sudo -s[/B][/COLOR]
Password:
bash-3.2# [COLOR="#FF0000"][B]ls -al /Volumes[/B][/COLOR]
total 8
drwxrwxrwt@  4 root  admin   136 16 Dec 05:08 .
drwxr-xr-x  32 root  wheel  1156 15 Dec 23:47 ..
lrwxr-xr-x   1 root  admin     1 16 Dec 01:20 Mavericks -> /
drwxrwxr-t  27 root  admin   986 15 Dec 23:39 Unibeast
bash-3.2# [COLOR="#FF0000"][B]perl -pi -e 's|\x74\x6c(\x48\x83\xc7\x28\x90\x8b\x05..\x5e\x00\x85\x47\xdc)\x74\x54(\x8b\x4f\xd8\x45\x85\xc0\x74\x08\x44\x39\xc1\x44\x89\xc1)\x75\x44(\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x57\xf8\x48\x8b\x47\xe8\x48\x85\xc0\x74\x06\x48\xf7\xd0\x48\x21\xc2\x48\x0b\x57\xf0\x49\x89\xd1\x49\xc1\xe9\x20\x89\xd0\x8b\x4f\xd8\x4c\x89\xca)(\x0f\x30\x8b\x4f\xd8\x0f\x32\x89\xc0\x48\xc1\xe2\x20\x48\x09\xc2\x48\x89\x17\x48\x83\xc7\x30\xff\xce)\x75\x99(\x5d\xc3)\x90{7}|\x74\x73${1}\x74\x5b${2}\x75\x4b${3}\x66\x81\xf9\xe2\x00\x74\x02${4}\x75\x92${5}|g' /Volumes/Unibeast/mach_kernel[/B][/COLOR]
bash-3.2# [COLOR="#FF0000"][B]perl -pi -e 's|(\x25\x1c\x00\x00\x00\x48\x8d\x0d..\x5e\x00\x3b\x01)\x74(\x11\x48\x8d\x3d...\x00\x44)|${1}\xeb${2}|g' /Volumes/Unibeast/mach_kernel[/B][/COLOR]
bash-3.2#

Just before we quit the Terminal app, type in the following in preparation for later :

Code:
chflags nohidden /Volumes/Unibeast/Extra
chflags nohidden /Volumes/Unibeast/Extra/*

Now the kernel modifications are finished, type in exit and then exit again to close your Terminal window.

Congratulations ! You have now modified your kenel. That wasn't so hard now was it :thumbup:

Full credit and a big hi-five to ReHabMan and PikeRAlpha for their work on the kernel patches and the technical stuff relating to it! Without it we wouldn't be able to complete this install.

Now we have the modified kernel on the UniBeast USB installer that will allow us to boot up and install on our system.

Step 4 - Chameleon installer

The next task towards completing our shiny new UniBeast Installer is to run Chameleon and let it install the updated boot files.

Go ahead and run the Chameleon installer and you will see the following screen :

84954-chameleon1.jpg

Click through the screens until you see this one :

84955-chameleon2.jpg

Here you need to click on 'Change Install Location' and click on your UniBeast drive; it will then show a green arrow on it like so :

84956-chameleon3.jpg

Now click on 'Continue' and then 'Customize'. On this screen you want to select only the one option, which is the 'Standard Chameleon Bootloader', as shown below :

84957-chameleon4.jpg

Now click on 'Install' and let Chameleon do its thing. If successful, you will see this final screen :

84958-chameleon5.jpg

You can now exit the Chameleon installer.

Finally, we are going to complete the installer by doing a small tweak.

Unzip the 'Haswell NUC Install Pack' you downloaded earlier. Inside you will find several files; the 2 you are interested in are org.chameleon.boot.plist and smbios.plist.

In OSX Finder, simply copy those 2 files to the '/Extra' folder you can now see on your UniBeast drive. These are the same 2 files you will install to the /Extra folder on your hard drive when you complete the main installation. They should be identical at both stages wherever possible ;)

Thats Step 4 now complete. What you now have is your new UniBeast Installer, complete with modified kernel, new boot files from Chameleon and a couple of files which correctly define our system hardware; this will allow us to boot up and install to our NUC.

Step 5 - Mac OS X Mavericks installation

Plug your UniBeast Installer into a free USB port on your NUC and switch it on, while pressing the F10 key on your keyboard. This will bring up the boot selection screen. Select your USB UniBeast drive and press Enter. You may see 2 options for the UniBeast Installer; one that begins with 'AHCI' and another that begins with 'UEFI'. Be sure to select the 'AHCI' one.

At this point we have now rejoined the main UniBeast procedure for installing our new system.

At the Unibeast screen, press the space bar to get the boot prompt and type in the following boot flags :

Code:
-v UseKernelCache=no
and press Enter to begin the install. Be patient; it will take a few minutes to load all the files and get to the installer screen.

When that happens, first partition your SSD drive by running Disk Utility from the menu at the top.

When I created the disk partition, I chose to name it 'Mavericks'; you are free to use any name you like but by using the same one I have makes it easier, further down the guide.

You can now complete a standard install to your selected partition.

There are no options to select; just let the installer do its thing. On my system it only took around 10 minutes because I used an external USB 3 drive instead of a USB memory stick; both work just as well on the NUC.

At the end of the install, leave your Unibeast Installer in its USB port and reboot your system.

As before, press F10 to get to the boot screen and select the Unibeast Installer (Remember the one that begins with 'AHCI'). You didn't forget now did you ? :lol:

At the Unibeast screen, we are now going to reboot the installer a second time. We do NOT select our newly installed partition just yet; it still won't work believe it or not, but we are getting there.

So, with the Unibeast icon selected hit the space bar, and once again type in the following :

Code:
-v UseKernelCache=no
and press Enter.

Now, here is the key for this stage; when the installer loads again, do not run the installer and do not run the Disk Utility. We have already done that bit. The reason we have rebooted the installer is because we need to copy that modified kernel to our new installation.

Although the Unibeast key has the new kernel on it, the kernel that is installed to your system is a fresh copy that is not yet patched, so we are going to copy the patched kernel from the Unibeast installer to your new system.

From the 'Utility' menu click on 'Terminal' to load the terminal window again. This time you will see the bash prompt straight away.

Now, type in the following :
Code:
cp -v /Volumes/Unibeast/mach_kernel '/Volumes/My Partition/'
Where 'My Partition' represents the name you gave to your OSX partition when you did the installation. So, if you called your main partition 'Mavericks' (Like I do!) then the above code would become :
Code:
cp -v /Volumes/Unibeast/mach_kernel '/Volumes/Mavericks/'
If you called your main partition 'Mackintosh HD' like the Apple default, then it would become :
Code:
cp -v /Volumes/Unibeast/mach_kernel '/Volumes/Mackintosh HD/'
Go ahead and press Enter; this will copy the patched kernel to your new installation.

Finally, we are ready to reboot into our new system on the SSD, so you can now exit Terminal, quit the installer and reboot.

Step 6 - Post install configuration

Boot up your system using the UniBeast Key like before by pressing F10 and selecting it.

This time, when you see the boot screen, highlight the partition that contains your main installation. Your boot flags remain the same for a third and final time; they are :

Code:
-v UseKernelCache=no
Now, after the long list of files that are loaded yet again, you now are now booted up into your main install on your SSD drive.

You will be presented with the setup screens that are common to every new install; here you define your Username, set your network and confirm a few other details. Go through those stages and complete them as you normally would.

Phew! Finally, you are now booted into a fresh install of Mavericks running from your SSD, with full graphics acceleration already enabled and looking good :p

Go ahead and check through your System Profiler; have a quick check of Dashboard to make double sure graphics are working as they should. It should all be smooth and fluid.

To finalise the build we now need to install a few things as you would for any new install, as per MultiBeast, but once again we do it with a twist. Remember how we had to use Chameleon to get the UniBeast Key working ?

Well we have to do exactly the same here but on our main system partition. So we will use a combination of Chameleon and MultiBeast.

First of all, load Chameleon and run through the install exactly the same as you did earlier and pick just the one single option for the 'Standard Chameleon Bootloader'. This time of course, make sure you select your main partition to install it to, and not the UniBeast Key like before, as you see here :

84959-chameleon6.jpg

Once that is finished, exit the Chameleon Installer and fire up MultiBeast. Now you're in familiar territory right ?

In MultiBeast, we are only using minimal options at this point. They are :

FakeSMC
FakeSMC Plugins (Optional)
HWMonitor Application (Optional)
Intel - hnak's AppleIntelE1000e v2.4.14
Theme of your own choosing
Trim Enabler

Going through each of the sections for MultiBeast then, it goes like this :

Drivers -> Disk -> Trim Enabler -> 10.9.x TRIM Patch
Drivers -> Misc -> FakeSMC 5.3.820
Drivers -> Misc -> FakeSMC 5.3.820 Plugins (Optional)
Drivers -> Misc -> FakeSMC 5.3.820 HWMonitor Application
Customise -> Themes -> Your preferred theme

Alternatively, you can load the MultiBeast config file which is in the Install Pack.

Now the above list may seem a little sparse because you have no System Definition selected at this point, neither do you have anything relating to DSDT/DSDT Free etc and nothing relating to the Chimera bootloader. Well that's fine, this is the way we need it right now.

Your MultiBeast install screen will look like this when you are ready to run it :

79031-multibeast-settings.jpg

Go ahead and let MultiBeast run, making sure you have selected your system partition as the install location and not the UniBeast key. This may take a couple of minutes, but that's fine :)

Almost there!

Once MultiBeast has finished, quit the MultiBeast Installer. Now go back to the 'Haswell NUC Install Pack' you downloaded earlier. We are interested in 4 files this time; they are org.chameleon.boot.plist, smbios.plist, SSDT.aml and DSDT.aml.

Copy all 4 of these files to the 'Extra' folder on your installed system.

dsdt.aml helps to optimise your system for OSX and also includes some patches for HDMI audio.

org.chameleon.boot.plist contains configuration options and boot-time flags, including the correct flag to enable our HD5000 Graphics. Screen resolution is also defined in this file, and is set by default to 1080p (1920x1080x32); if you have a different size screen the you can change this to match your screen resolution.

smbios.plist contains the necessary System Definition for your NUC, that definition is MacBook Air 6,2. This is the closest matching definition to the hardware inside the NUC.

ssdt.aml will help your system to use different P-states (At the time of writing it will only go up to 2.3 GHz and not 2.6 GHz; I don't know why this is happening).

Once these files are copied, you can remove your Unibeast key and reboot your system.

You have passed a bit of a milestone here, since your NUC is now setup to boot into Mavericks all by itself, without the need for the Unibeast installer.

Step 7 - Setup AHCI Controller name

DSDT code to enable the correct AHCI Controller name in System Profiler has now been added to the DSDT patch used in Section 8 below. No additional action is needed for this, and we now have one less modified kext on our NUC.

Credit and thanks to minihack for the code!

Step 8 - Audio (ALC283 & HDMI) (Optional)

The built-in Realtek ALC283, audio over HDMI and audio over DisplayPort are all now confirmed as working.

Thanks again to Toleda and Minihack.

The method we will use to enable this involves creating and then patching our system DSDT file and also patching one of the kext files on the new installation. There is another method available but I personally favour this one since I have always been a fan of using a properly setup DSDT file ;)

The steps we will be taking are :

8.1 - Confirm settings in the bios
8.2 - Download the necessary software
8.3 - Setup the DSDT file
8.4 - Install the modified AppleHDA.kext
8.5 - Kext File Patch
8.6 - Rebuild the system cache and reboot

Step 8.1 - Audio (ALC283 & HDMI) (Confirm settings in the bios)

If you have an HDMI display you will have probably done this already, but for anyone planning that move, we have to check the correct bios settings are enabled. To do this we go into the uefi bios setup and into the video bios configuration. Set your 'IGD Primary Video Port' to HDMI, as shown below :

77392-hdmiaudio00.jpg

Note that audio works through both the HDMI and DisplayPort connectors.

You will also notice the setting for 'IGD Minimum Memory'. This is the minimum amount of system memory which is allocated to the built-in HD5000 graphics. I have set this to various sizes but it doesn't seem to make a difference to our installed system. In the 'About This Mac' screen, it always shows 1 Gb, regardless of what I have selected. Currently, I leave this set as 1 Gb on my system, to match what is shown in 'About This Mac'.

Step 8.2 - Audio (ALC283 & HDMI) (Download the necessary software)

We need to download some additional software to setup the HDMI audio. The tools you need are :

MacIASL - Download link
DPCIManager - Download link

Note : The download links above state the software is for Mountain Lion, but they both work equally well on Mavericks.

Step 8.3 - Audio (ALC283 & HDMI) (Setup the DSDT file)

Here I will detail a simple tutorial for creating and then patching our DSDT file.

I have included a new pre-compiled DSDT in the Install Pack (V3.4 and above) and you are free to use this and skip straight on to Step 8.4; however, I encourage you to 'roll your own' by following this part of the guide carefully. New bios versions will require the DSDT to be recompiled, and you will have the satisfaction of knowing you have done it yourself instead of relying on someone else. You can also do a binary compare with the included one to check that yours has worked correctly.

If you want to learn more about DSDT creation and patching, please have a read of this thread.

First of all, irrespective of whether you have installed the supplied DSDT or not, please reboot your system using the following flag at the boot screen :

Code:
DSDT=null

This will make sure our system is booted up correctly without including any existing DSDT settings; it will enable us to work on an un-tainted DSDT which MacIASL requires to work its magic.

Now, install and start the MacIASL program you downloaded above.

The MacIASL program will automatically load our system DSDT into the main screen. What you will see is a tree column at the left side of the screen, containing a list of short and weird looking values, and the main editor screen showing even more weird code, like this :

79037-maciasl0.jpg

Don't be concerned at what all that code means; its really not so frightening.

Now go to the 'Preferences' screen, which can be found under the main MacIASL menu; change the settings as below :

79046-maciasl1.jpg

Now, still within the Preferences screen, click on the 'Sources' icon. This will show a list of the source repositories we have available. These repositories contain the DSDT patch files that help us optimize our DSDT and also the necessary edits to help allow HDMI audio to work. There are other patches available as well of course, but only use the patches I detail in this guide please. The screen should look like this :

79048-maciasl2.jpg

To get access to our needed patches, we have to add a new repository to the default list you can see. To do this, click on the '+' icon at the top right side of the 'Sources' panel. A new row will be added and you will be able to add a Name and URL for the repository.

For the Name part of it, you can actually type in anything you like - I use 'Toleda 8 Series Audio'. Go ahead and type that in the box and then press Tab to get into the URL box. In here type in the following location :

Code:
https://raw.github.com/toleda/audio_hdmi_8series/master

You should use Copy/Paste for the above line to make sure it is accurate. When finished it should look something like this :

79049-maciasl3.jpg

Now close the Preferences window. So far, we have our default untouched DSDT loaded and the repository has been added which contains the patches we require; we can now apply those patches. We are interested in two of them; the first contains compiler fixes which allows MacIASL to do its job compiling; the second adds the HDMI audio stuff.

Click on the purple coloured 'Patch' icon at the top center of the screen; you will see a popup split pane window which contains a list of repositories and patches on the left, a code preview pane at the right, and a before/after preview pane below that.

In the list of patches in the left, the one we are intersted in first is the one labelled 'NUC-HD5K-Compiler Fixes'; it should be the last one in the list. Click on that patch and the code will be loaded, like so :

79038-maciasl4.jpg

You can resize the patch window and use the sliders if you want to see the full code contained in the patch.

Now click on the 'Apply' button. This will update the DSDT code with the code contained in the patch.

Now click on 'Close' at the bottom of the patch window and then click on the 'Compile' icon at the top center of the screen. You will see a Compiler Summary window you can safely close.

Now we need to repeat the patching process a second time. Hit the purple 'Patch' icon again at the top center of the screen; the patch you want to select this time is called 'NUC-HD5K-A1'; this should be second from the bottom of the list.

It should look like below :

79051-maciasl5.jpg

Go ahead and click on 'Apply' to add the code to our DSDT and then 'Close'. Once again, hit the 'Compile' icon at the top center and have a look at the Compiler Summary output window. If all has gone well, you should see 0 Errors, 0 Warnings, 0 Remarks but a number of Optimizations. Now close the Compiler Summary window.

Now we are finished patching our new DSDT, click on 'File' -> 'Save As' and save the file to your /Extra folder; name the file 'DSDT.aml' and make sure you change the file format to 'ACPI Machine Language Binary' in the file save dialog. If you already have a DSDT file in your /Extra folder, you should overwite the existing one.

Well that took a little time didn't it ! The hardest part is now over and the remaining parts of this task are much easier :)

You may wonder why we have created our own DSDT when there is one already in the Install Pack; here are the reasons why :

  • Every time a new version bios is released, a new DSDT has to be created.
  • In the future there may be updates to the patch files in the respository, which have not yet been incorporated into the supplied DSDT file.
By patching and compiling your own DSDT, you will always have the latest updates and it will be matched to your current bios version. If you use an older DSDT file with a newer bios version it will probably not work properly, if at all. So get practising; once you have done it a couple of times, it doesn't take that long.

If you get really stuck with your DSDT, then use the supplied one for now, and post a message to this thread with as much detail as possible. I will try to help but please bear in mind my time is limited and it may be some time before I can reply to you.

Step 8.4 - Audio (ALC283 & HDMI) (Install modified AppleHDA.kext)

There is a modified AppleHDA.kext included in the Install Pack, which has been tweaked perfectly to work with our audio.

To install it, first navigate to '/System/Library/Extensions' and copy your original AppleHDA.kext to some other folder on your system or a USB thumb drive for safe keeping. This is purely a backup measure and you will have the option to restore this original if something goes wrong or you change your mind.

If you haven't already done so, unzip and install DPCIManager that you downloaded earlier. Open DPCIManager; at the top center of the screen, you will see a blue folder icon labelled 'Install Kext'. Click on this and navigate to the location of the modified AppleHDA.kext and then select it.

DPCIManager will ask if you want to overwrite the existing one in '/System/Library/Extensions'. If you have already taken a backup copy, you can safely answer Yes to this. If not, you are advised to take a copy of the original one first for safe keeping.

DPCIManager will then install the new modified version of the kext and it will also rebuild the system cache; this ensures the newly installed kext is used on next boot instead of using an older cached version.

Once DPCIManager is finished, close the program and continue below.

Step 8.5 - Audio (ALC283 & HDMI) (Kext File Patch)

This stage involves us patching a kext file on our system. First of all you need to download the patch. You can find the thread that provides information about the process here :


The file we are interested in, which is located in Toleda's repository (Direct Link) :

graphics_intel_hd5k-azul-e-90_patch.command.zip

Click on the link above to download the file to your download folder and unzip it. You can also view the repository and find further information regarding patching for HDMI and some other goodies.

To apply the patch we are simply going to double-click on it.

When you double-click on the patch, you may see a 'Terminal' window asking for your password.

Go ahead and bash your password in; you may also see a message about rebooting your system, you can safely ignore that for now.

Woohoo ! Thats all the patching completed.

Now we have to complete one final task before rebooting.

Step 8.6 - Audio (ALC283 & HDMI) (Rebuild the system cache and reboot)

Since we have altered a kext file (By running the patch command above), we now need to rebuild the system cache. This will ensure we are using the new version file when we reboot the system.

To do this rebuild correctly, start up the DPCIManager program; at the top of the screen, you will see a purple folder icon thats labelled 'Rebuild Cache'. Click on this icon to have the program do the job for you. You will see a small log window pop up on your screen, which logs the output of the rebuild process, like so :

79052-dpcirebuild.jpg

The exact output may vary depending on what you have installed on your system.

Allow the rebuild process to complete and also have a look at the other neat stuff that this program also does !

Once the rebuild process is completed, close DPCIManager.

Thats it ! You have now completed the process for enabling HDMI audio on your NUC. You should now reboot your system and start up as normal without any boot flags.

Check in to 'System Profiler' to verify you can now see the HDMI audio device details; below you can see my pics before :

79055-hdmiaudio1.jpg

And after :

79056-hdmiaudio2.jpg

The only thing left to do now is fire up iTunes or your favourite media player to verify the sound is all working as expected.

Step 9 - Customization

This step is entirely optional. I decided to do this as I think it gives the finished installation a much more professional touch to it.

This is split into 4 quite small changes :

9.1 - About This Mac > More Info > Overview > Image
9.2 - About This Mac > More Info > Overview > Title & Year
9.3 - About This Mac > More Info > Overview > Processor/Memory/Serial Number/Software
9.4 - About This Mac > More Info > Storage > SSD Make/Model & Free Space Remaining

Of course there are other values you can change if you wish.

*** Before changing any of the files detailed here, please make sure you take a backup copy first ***

You will find many posts about this if you search in the forums; the bits we are doing here are what relates to our particular hardware.

9.1 - About This Mac (Image)

From your 'Haswell NUC Install Pack', copy the file called com.apple.macbookair-13-unibody.icns.

Navigate to 'System/Library/CoreServices'. Right click on the file 'CoreTypes.bundle' and click on 'Show Package Contents'.

Then click on 'Contents' and then 'Resources'. Here you will see lots of colorful icons and folders.

In this resources folder, right-click and then 'Paste'. This should paste the file you just selected. It will ask if you wish to overwrite the existing file; go ahead and allow it to overwrite.

9.2 - About This Mac (Title & Year)

Install and then run Text Wrangler, and open the following file, where 'YourUserName' represents your account name :

Code:
/Users/[B]YourUserName[/B]/Library/Preferences/com.apple.SystemProfiler.plist

In here you will see several text lines, the one we are interested in is at or around line number 8, and is enclosed in <string> and </string> tags. It contains the Macbook Air model & year (Based on the serial number contained in the smbios.plist file).

Copy and paste this text : Intel® Haswell NUC (D54250WYK) in its place, so it looks like this (I've highlighted the changed part in blue) :

79064-textwrangler1.jpg

and now save the file.

The other values in that file may differ slightly to the picture above, thats fine.

9.3 - About This Mac (Processor/Memory/Serial Number/Software)

And :

9.4 - About This Mac (Storage)

Fire up Text Wrangler, then navigate to and open the following file :

Code:
'/Applications/Utilities/System Information.app/Contents/Resources/English.lproj/SPInfo.strings'

(If you use a different language then open the file in the appropriate .lproj folder for your language)

You will see 2 columns in the file; the first is a set of labels, the second is a set of strings, a bit like this :

// localizable strings used in the system information window

// overview panel


MAC_MODEL = "%@ model";
MAC_CPU_LABEL = "Processor";
MAC_MEMORY_LABEL = "Memory";
The lines I have changed are listed below with the replacement values :

Code:
[COLOR="#0000FF"]MAC_CPU_TEXT[/COLOR]       = [COLOR="#EE82EE"]"%1$@  1.3 Ghz Intel\U00ae Core\U2122 i5 4250U"[/COLOR];
Code:
[COLOR="#0000FF"]MAC_MEMORY_TEXT[/COLOR]    = [COLOR="#EE82EE"]"%1$@  %2$@ Crucial %3$@"[/COLOR];
Code:
[COLOR="#0000FF"]MAC_SERIAL_TEXT[/COLOR]    = [COLOR="#EE82EE"]"%1$@  G6YK3450013T"[/COLOR];
Code:
[COLOR="#0000FF"]OS_VERSION_TEXT[/COLOR]    = [COLOR="#EE82EE"]"%1$@  %2$@ Mavericks %3$@ (%4$@)"[/COLOR];
Code:
[COLOR="#0000FF"]DISK_SIZE_TYPE_SSD[/COLOR] = [COLOR="#EE82EE"]"%@\nIntel 525 Series SSD (SSDMCEAC240B3)"[/COLOR];
Code:
[COLOR="#0000FF"]DISK_FREE_CAPACITY[/COLOR] = [COLOR="#EE82EE"]"Free space remaining : %1$@"[/COLOR];
You can copy & paste from the replacement lines above. In the examples I give, pay particular attention to the 2 spaces immediately after the '%1$@' in the case of the first four lines. Those 2 spaces must remain, irrespective of what values you use. If you don't leave the spaces, it will not work correctly.

The reason I made the changes are like so :

MAC_CPU_TEXT : Make this look more like our CPU model complete with Intel copyright bits.

MAC_MEMORY_TEXT : Added my memory manufacturer into the middle of the string.

MAC_SERIAL_TEXT : I changed this to match the serial number of the NUC itself, taken from the box label.

OS_VERSION_TEXT : Added 'Mavericks' into the middle of the string so it reads better.

DISK_SIZE_TYPE_SSD : Changed to match my make & model of SSD I'm using.

DISK_FREE_CAPACITY : I prefer just the actual space remaining here.

You can change the values to whatever you like, but heed the warning above about leaving those 2 spaces, it is important to ensure success.

Once you have finished your changes, save the file.

Thats it, you are now finished !

Close all open programs and windows and reboot your NUC. When it reboots, go to 'About This Mac', 'More Info'. If all is well it should look something like this, depending on what values you have used :

79075-aboutthismac1.jpg

I think this looks way nicer than the stock view.

Now go to the 'Storage' tab at the top; mine now looks like this with the SSD details added and 'Free Space Remaining' changed like so :

79076-aboutthismac2.jpg

Thats the end of this install guide, you can now carry on with your own post-install configuration and setup.

I hope this has been of interest to you; if you have any questions, then please ask.

Thank you all.

:thumbup:

Notes

(1) 10.9.1 Update

Mavericks 10.9.1 has been released today and works fine. The usual drill for updating :

  • Fix disk permissions
  • Install standalone update
  • Reboot
  • Fix disk permissions again
This update has stopped the ethernet warning messages in the system log, awesome! The kernel version has not changed with 10.9.1, so no additional patching is required. Install 10.9.1 as detailed above, then reboot and you're good to go.

(2) P-States

After letting DPCIManager run a little while I am seeing the following P-States:

8, 13, 19, 20, 21, 22, 23

The more of these we see the better, so this is good news!

Without the SSDT.aml file, the same states are showing as above. While not perfect, we have a reasonable level of stepping by default.

(3) Moved Customization from old Step 7 to new Step 9

I've taken the decision to move a little bit of stuff around in the guide to make it easier and more logical to follow, and also give some extra space for more customization tweaks.

What this means is :

The old 'Step 7 (Customization)' is now at 'Step 9 (Customization)'.
Step 7 now details how to set the AHCI Controller name correctly.

Apologies for any inconvenience this may cause.

(4) AHCI Controller code added to DSDT

The DSDT patch has been updated today which includes code for the correct AHCI Controller details showing up in System Profiler. Step 7 therefore requires no action.

(5) About Maximum P-states

Regarding P-states only going to 2.3 Ghz; this is absolutely correct. As is the case with some Intel CPU's, the maximum (2.6 Ghz) can only be reached when just a single core is active. With both cores active, it will only go to 2.3 Ghz. This means the SSDT is pretty much working as expected.

(6) Framebuffer Patch File Updated

The framebuffer patch file has been updated. Please remove any saved copies of the old one you might have. This new one provides future compatibility.

(7) OSX 10.9.2 Update

OSX 10.9.2 has been released and works on the NUC. Some important bits have changed in the guide, including the kernel patching guide (Step 3), and the patch for enabling HDMI audio (Step 8.5). Please make sure you read these sections again and download the correct files; the previous ones will not work properly on this version of OSX.

Since updating I have noticed a small slowdown on the graphics; this only happens when the desktop initially loads at boot time. After it is loaded, all is well. I have checked different values for the IntelAzulFB, which is defined in org.chameleon.boot.plist, and is currently set with a value of 10. The other framebuffer values don't work any better if at all, so the recommendation is to stick with a value of 10.

(8) Note regarding boot flags

As you will know by now, we can control certain aspects of the system by setting various boot flags when the system boots up. These are normally stored in the file org.chameleon.boot.plist. The version of the file supplied in the Install Pack contains the correct flags for our NUC. Currently they are :

DropSSDT=Yes
EthernetBuiltIn=Yes
"Graphics Mode"="1920x1080x32"
GraphicsEnabler=Yes
IntelAzulFB=10
Kernel=mach_kernel
Timeout=3
UseKernelCache=Yes

If for any reason your org.chameleon.boot.plist file goes corrupt like it did with me, then either download a fresh copy of the Install Pack and extract the supplied one, or create a new one with the above values in it. You should not change these flags unless you know exactly what you are doing; doing so may render your system unable to boot up.

End of notes

Credits :

ReHabMan for his kernel patching code
PikeRAlpha for his kernel patching code
The many contributors and early adopters of this thread that helped make it all possible.
Toleda for his continued hard work on HDMI audio and assistance with the DSDT patches
Minihack for his work on the DSDT and audio kext file
TonyMac team for the website and install tools
Chameleon Bootloader package developers
Resident mod Stork for his guidance and assistance
You, the reader, for staying awake this long :lol:

Change Log :

16/12/2013 - Initial version
16/12/2013 - Added 10.9.1 Info (Note 1)
16/12/2013 - Added P-State info (Note 2)
17/12/2013 - Confirmed info regarding kernel version in 10.9.1
17/12/2013 - Added recommendation about updating to correct bios version
18/12/2013 - Added requirement for disabling Vt-d
18/12/2013 - Corrected /Extra folder name
18/12/2013 - Amended path reference in Step 7 so it's easier to understand
19/12/2013 - Updated Install Pack to V2 (Includes DSDT with HDMI Audio patch)
19/12/2013 - Tidied up some parts of the guide
22/12/2013 - Added HDMI audio install guide
22/12/2013 - Updated Install Pack to V3 (Newer DSDT with HDMI audio patch)
22/12/2013 - Updated Install Pack to V3.1 (Corrected oops in DSDT file)
22/12/2013 - Simplified the HDMI audio patching per recommendation from Toleda
22/12/2013 - Updated Install Pack to V3.2 (Corrects CPU speed & possible 'About This Mac' issue)
02/01/2014 - Updated software versions
03/01/2014 - Updated Install Pack to V3.3 (Correct CPU Speed, new DSDT, AppleHDA for ALC283)
03/01/2014 - Full re-write of DSDT setup
03/01/2014 - Combined ALC283 audio and HDMI audio in Section 8
03/01/2014 - Updated list of known hardware functionality
04/01/2014 - Updated ALC283 and HDMI now 100% working
04/01/2014 - Updated DSDT guidance for simple patching and clean compilation
04/01/2014 - Updated Install Pack to V3.4 (Clean DSDT and newer AppleHDA)
05/01/2014 - Moved 'Customization' to new Step 9 to allow for future tweaks (Note 3)
05/01/2014 - Added 'AHCI Controller' name change into Step 7
06/01/2014 - Updated Step 7 - AHCI Controller now incorporated into DSDT patch (Note 4)
06/01/2014 - Multibeast version update to 6.1
06/01/2014 - Tidied up and resized some images
06/01/2014 - Post install customization completed
07/01/2014 - Updated Install Pack to V3.5 (Latest AppleHDA and DSDT); code cleaned up
23/01/2014 - Software version bump
02/02/2014 - Added note regarding P-states (Note 5)
25/02/2014 - Added updated version of framebuffer patch file at Step 8.5 (Note 6)
25/02/2014 - Reorganized notes into chronological order; fixed typo
27/02/2014 - Bios update to version 0024; Chameleon to version 2377
27/02/2014 - Updated images and screenshots
27/02/2014 - Kernel patching updated
27/02/2014 - Added note for OSX Version 10.9.2 (Note 7)
27/02/2014 - Added note regarding boot flags (Note 8)
27/02/2014 - Updated Install Pack to V3.6 (Updated DSDT for bios version 0024) and other bits ;)
28/02/2014 - Updated Install Pack to V3.7 (Backup copy of 10.9.2 modified kernel)
28/02/2014 - Updated Install Pack to V3.8 (Corrected kernel oops)
28/02/2014 - Updated kernel patching code
07/04/2014 - Added note regarding the Clover bootloader.
23/05/2014 - Guide deprecated - End Of Support
 
Last edited by a moderator:
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

I'm impressed! Very detailed.

WonkeyDonkey: I could not reply to your Inbox Message since i dont have 75 comments in the forum. You have my approval to take ownership of this comment.
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

I'm impressed! Very detailed

Thanks! I'm just doing a little post editing to tidy up the graphics to make them clearer, I think I have the hang of it now lol
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

Great job on the guide!

Hopefully soon someone smart will get the Audio working also :)
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

Great job on the guide!

Hopefully soon someone smart will get the Audio working also :)

Cheers! It feels like a work of art now.

Audio and fully patched DSDT are really all we need now.
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

Great guide. :thumbup:

Worth putting in the steps for HDMI audio when you have yours up and running. Hopefully this link will help some: http://www.tonymacx86.com/hdmi-audio/119045-haswell-nuc-hdmi-audio.html.

Other thing maybe to mention would be to update to the latest bios before installing.

Yup, I plan to add the HDMI stuff. Only thing is I cant validate it myself as I have no HDMI display here. I understood from Toledas post that AzulFB needed a little more editing ?

Good point about the bios version, I will add that in too.

Also, I just updated to 10.9.1 and it fixes a small issue in the current build. The E1000 driver no longer causes warning messages in the system log. Theyre gone. So consider ethernet now fully working :thumbup:
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

Also, I just updated to 10.9.1 and it fixes a small issue in the current build. The E1000 driver no longer causes warning messages in the system log. Theyre gone. So consider ethernet now fully working :thumbup:
Did you have to patch the mach_kernel again after the 10.9.1 upgrade, or was the kernel not part of the update?
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

Did you have to patch the mach_kernel again after the 10.9.1 upgrade, or was the kernel not part of the update?

No need to patch again after updating - there is no kernel update in 10.9.1. I've updated the guide to reflect this. Thanks for bringing this up!

:thumbup:
 
Installation Guide : Intel Haswell NUC Core i5 (D54250WYK)

Thanks for the great guide, will save me a lot of pain, when hardware finally arrives.

One suggestion for improvement is around your statements about copying smbios.plist to the Extras folder. I think you need to point out that serial number in the file will need to be updated, and how you you update it (something I am not sure of myself)
 
Status
Not open for further replies.
Back
Top