Contribute
Register

[Guide] Intel Broadwell NUC5 using Clover UEFI (NUC5i5MHYE, NUC5i3MYHE, etc)

Status
Not open for further replies.
Overview

The purpose of this guide is to provide a step-by-step guide to install Sierra or El Capitan on the Intel NUC5 series NUC mini computers. My NUC5 is the NUC5i5MYHE, although I expect the guide will work on other similar models.

I have added an SSD, and installed WiFi/BT BCM94352Z.

This guide does not use Unibeast nor Multibeast, but uses automated scripts to handle most of the post-installation details.

There are number of NUC guides, including this one from ammulder:

http://www.tonymacx86.com/el-capitan-desktop-guides/171942-guide-el-capitan-intel-broadwell-nuc.html


Some notes on the NUC5i5MYHE

My previous experience with this form factor was with the Gigabyte BRIXs GB-BXi5H-4200. The BRIX can accomodate both an mSATA SSD and 2.5" HDD/SSD, and half-mini PCIe WiFi. The NUC5i5MYHE can accomodate an 80mm M.2 SSD, 2.5" HDD/SSD, and 30mm M.2 WiFi. Both come with antennas built in, although it took me a while to discover the antennas on the NUC. They were buried/hidden under the motherboard and took a bit of fiddling to extract them. Note that the antenna connectors for M.2 WiFi are almost impossibly small (much smaller than half-mini PCIe).

This NUC is only slightly larger than my BRIXs.

The BIOS on the NUC is much more extensive and easy to use thanks to GUI/mouse support (Intel VisualBIOS). This was actually my first computer to have a GUI BIOS. Very strange to use a mouse to configure BIOS, but welcome.

Unlike the BRIX, the NUC comes with MSR 0xE2 unlocked and there is no option in the BIOS to lock it. I'm not sure why one would ever want to lock MSR 0xE2 in BIOS, but the BRIX has an option for it and most laptops have it locked permanently. Having it unlocked, is, of course, welcome when you plan to install OS X on the computer.

The BRIX fan behavior is overly agressive, and has no controls for taming it. The fan control features available from the NUC BIOS are much appreciated.

The NUC5i5MYHE has dual DP ports. I would much rather have DP over HDMI, so this is a nice touch.

All in all, it is a nice little computer with good customization options (dual M.2, SATA, non-soldered WiFi, etc). It is unfortunate Intel doesn't make more NUCs like this one (with better/faster CPUs, Iris graphics, etc).

Note: I am using a SATA connected SSD (Samsung 850 EVO), as my Samsung SM951/AHCI has not yet arrived.


What you need

- Broadwell Intel NUC5 series mini computer
- OS X El Capitan downloaded from the Mac App Store
- 8GB USB stick (maybe 16GB, if your stick is one of those "small 8GB" units)
- SATA SSD/HDD or M.2 AHCI (x2) or SATA SSD (keyed for B or B+M)
- RAM (my unit has 16GB RAM installed)
- (optional) Broadcom BCM94352Z for native WiFi/BT

Note: You could use a different (supported) WiFi card, but the BCM94352 is the one recommended and supported by this guide.


BIOS settings

On my NUC5i5MYHE, I have the latest BIOS (0028) installed. While trying to debug a problem that turned out to be an issue with IntelMausiEthernet.kext, I also installed some older BIOS versions with no difference in the result. It is likely BIOS verison doesn't matter.

The boot menu and BIOS setup can be accessed by mashing the F2 key during BIOS startup. After the main screen comes up choose "Advanced". That gets you to the main BIOS setup screens.

To start, choose "Load Defaults" (choose from the menu or press F9 in the BIOS setup).

Then change:
- Devices->Onboard Devices->Legacy Device Configuration, disable "Serial Port" (panic in BT kexts if not disabled)
- Boot->Boot Configuration, disable "Network Boot"
- Power->Secondary Power Settings, "Wake on LAN from S4/S5", set to "Stay Off"

These settings are important but are already set as needed by "Load Defaults"
- Devices->USB, "xHCI Mode" set to "Smart Auto"
- Devices->Video, "IGD Minimum Memory" set to 64mb
- Devices->Video, "IGD Aperture Size" set to 256mb
- Boot->Secure Boot, "Secure Boot" is disabled
- Security->Security Features, "Execute Disable Bit" is enabled.

Suggested:
- Boot->Boot Priority->Legacy Boot Priority, disable "Legacy Boot" (it will reduce confusion)


Preparing USB and initial Installation

This guide assumes you're starting with nothing on your HDD/SSD (or nothing important). Make sure you backup your important files before starting.

You can also leave Windows intact, but it can get tricky. Read here for more information: http://www.tonymacx86.com/multi-booting/133940-mavericks-windows-8-same-drive-without-erasing.html

This guide for creating USB and installing using Clover UEFI works well: http://www.tonymacx86.com/el-capita...de-booting-os-x-installer-laptops-clover.html

Special notes:

- This guide requires Clover v3279 or later.

- Definitely copy IntelMausiEthernet.kext to Clover/kexts/Other as having network support during post-install is not only helpful, but the rest of this guide depends on it. An alternate is to copy FakePCIID.kext and FakePCIID_Broadcom_WiFi.kext to Clover/kexts/Other. This will enable WiFi, provided you have the BCM94352Z WiFi card already installed.

Note: FakePCIID.kext and FakePCIID_Broadcom_WiFi.kext are available here: https://github.com/RehabMan/OS-X-Fake-PCI-ID

- GenericUSBXHCI.kext is not necessary with the NUC since AppleUSBXCHI.kext appears to work well natively. GenericUSBXHCI.kext also does not work (for Intel XHCI) on 10.11, so definitely do not use it.

- You do not need VoodooPS2Controller.kext as it is laptop specific.

- Use the 'createinstallmedia' approach. It works well, and there is little chance for pilot error. This method also gives you an OS X recovery partition.

- Use the config_install_nuc5.plist linked by this post instead of the laptop specific config.plist files linked by the guide. Make sure you copy it to EFI/Clover/config.plist (after installing Clover). Clover will not read a file named config_install_nuc5.plist.

For installation, config_install_nuc5.plist: https://github.com/RehabMan/Intel-NUC-DSDT-Patch/raw/master/config_install_nuc5.plist


Post Installation

Install Clover UEFI as described in the guide linked by the previous section (post #2). After installing Clover, and configuring it correctly (config.plist, kexts, HFSPlus.efi, etc) you should be able to boot from the HDD/SSD.

Most everything works, but there are a few things to tidy up, drivers to install, etc. For that, we need to patch ACPI, provide a proper config.plist, and install the kexts that are required.

Since you have IntelMausiEthernet.kext already injected by Clover, you should have internet access simply by using an Ethernet cable to your router. Plug it in and make sure you have internet access before continuing. Or, if you're using FakePCIID_Broadcom_WiFi.kext, you can connect to your WiFi router before continuing.

Installation of the tools and patching is easy provided the scripts and tools at the repository: https://github.com/RehabMan/Intel-NUC-DSDT-Patch

To start, the developer tools must be installed. Run Terminal, and type:

Code:
git

You will be prompted to install the developer tools. Since you have internet working, you can choose to have it download and install them automatically. Do that before continuing.

After the developer tools are installed, we need to make a copy of the project on github.

In Terminal:
Code:
mkdir ~/Projects
cd ~/Projects
git clone https://github.com/RehabMan/Intel-NUC-DSDT-Patch nuc.git

Note: All commands for Terminal that follow will assume you have set the current working directory to ~/Projects/nuc.git (unless otherwise stated).

To change the current working directory in Terminal:
Code:
cd ~/Projects/nuc.git

Now it is time to install some more tools and all the kexts that are required...

In Terminal:
Code:
./download.sh
./install_downloads.sh

The download.sh script will automatically gather the latest version of all tools (patchmatic, iasl, MaciASL) and all the required kexts from bitbucket. The install_downloads.sh will automatically install them to the proper locations.

To finish the setup, we need a correctly patched ACPI.

In Terminal:
Code:
make
make install

The 'make' causes the patched files to be compiled (with iasl), the results placed in ./build.

Finally, 'make install', mounts the EFI partition, and copies the built files where they can be loaded by Clover (to EFI/Clover/ACPI/patched).

Note: No actual patching of DSDT/SSDT is happening here. We are simply building a few add-on SSDTs (SSDT-HACK.aml, SSDT-USB.aml, SSDT-IGPU.aml, etc) which provide the necessary changes. This is because the NUC requires only minimal patching so a full patched DSDT is not needed.


Power Management

Use the ssdtPRgen.sh script by Pike R. Alpha: https://github.com/Piker-Alpha/ssdtPRGen.sh. Since Broadwell CPUs are not in the 'master' branch, this requires use of the 'Beta' branch.

Instructions for using it are provided in the README.

The generated SSDT.aml should be placed on the EFI partition at /EFI/Clover/ACPI/patched/SSDT.aml.

Based on the current instructions at the README, what follows is a synopsis...

To prepare, you only need to do the first two commands:
Code:
curl -o ./ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh
chmod +x ./ssdtPRGen.sh

Then you can run the script:
Code:
./ssdtPRGen.sh

When it asks if you want to copy to /Extra just respond 'n'. Same for opening ssdt.dsl... respond 'n'.

The results are at ~/Library/ssdtPRgen/SSDT.aml.

Copy that file to EFI partition, /EFI/Clover/ACPI/patched/SSDT.aml

Code:
sudo ./mount_efi.sh /
cp ~/Library/ssdtPRgen/ssdt.aml /Volumes/EFI/EFI/Clover/ACPI/patched/SSDT.aml

Also, be aware that hibernation (suspend to disk or S4 sleep) is not well supported on hackintosh.

You should disable it:
Code:
sudo pmset -a hibernatemode 0
sudo rm /var/vm/sleepimage
sudo mkdir /var/vm/sleepimage

Always check your hibernatemode after updates and disable it. System updates tend to re-enable it, although the trick above (making sleepimage a directory) tends to help.


Final config.plist

Up to now, you've been using the same config.plist we were using for installation. After all the APCI files are in place (previous two steps), you're ready to use the final config.plist from the NUC repo.

First, mount the EFI partition:
Code:
sudo ./mount_efi.sh /

Then copy the file:
Code:
cp config_nuc5.plist /Volumes/EFI/EFI/Clover/config.plist

You could also copy the file using Finder.

After copying the config.plist from the repo to EFI/Clover/config.plist, you should customize the SMBIOS so you have a unique serial. You can use Clover Configurator to do this (use google to find/download it). DO NOT use Clover Configurator to edit your actual config.plist. Instead edit a "dummy" config.plist to create the SMBIOS data and then use copy/paste with a plist editor (I use Xcode) to copy the SMBIOS section into my active config.plist. Clover Configurator is too buggy and cannot be trusted with edits to your real config.plist.

Note: The config.plist in the repo is using iMac16,2. It works. In theory, it would be possible to use another Broadwell SMBIOS like MacBookAir7,1, but that is a laptop SMBIOS. The best match would be a Broadwell Macmini, but Apple has not yet produced one as I write this guide.

Note regarding HDMI ports: The provided config-nuc5.plist is optimized specifically for my NUC which happens to have dual-DP ports. It has no HDMI ports. If your NUC has HDMI instead of DP, you will need to enable one or both of the HDMI-audio patches such that the connector-type matches your physical connector. Check your ioreg to determine where your monitor is connected.... framebuffer@1 corresponds to the port 0105 patch, framebuffer@2 corresponds to the port 0204 patch. You can enable a patch simply by changing the "Disabled" setting for the patch to false. For example, the NUC5i7RYH needs the 0105 patch for its HDMI port. There will be issues with sleep and HDMI audio if you have an incorrect connector-type (eg. lack of necessary patch).


Do not stop reading

Although most of the post-install tasks are done, continue to read this guide. It it has important information you should know about.

Be sure to visit "Known Problems", especially the instructions in the "Audio:" section. Typically, even after completing all the above tasks, audio will not work on the first reboot. You must follow the specific instructions in that section in order to get the audio kexts in cache.

In the case of a problem, don't bother asking about with without all files requested in "Problem Reporting".


WiFi using BCM94352Z

The ./download.sh and ./install_downloads.sh script have both been updated to install the necessary kexts for BCM94352Z. The config.plist contains the patches required for WiFi 5Ghz and Bluetooth handoff features. The patch in config.plist for 5GHz is the US/FCC patch by the-darkvoid. If you're not in the US, you might consider a different patch.

As far as I know, BCM94352Z is the only M.2 WiFi card available that is supported by 10.11.

You can read about alternate 5ghz patches and WiFi hardware requirements here:

http://www.tonymacx86.com/network/104850-guide-airport-pcie-half-mini-v2.html


Updates to the patch repositories

From time to time, updates may become available to the NUC repository. In the event of such updates, you may want to update your copies, and re-patch ACPI with the updates.

Since you're using git, it is easy...

In Terminal:
Code:
git stash # to save any local changes you might have made
git pull

Then you can follow the instructions for updating config.plist or using 'make install' to copy the updated SSDTs.

Updates to kexts may happen at any time. You can download and install the latest versions manually (by going to their respective release sites), or by using ./download.sh, and ./install_downloads.sh.


What works

I have tested the following features:
- UEFI booting via Clover
- DP video/audio with hotplug
- AirPlay mirroring to AppleTV
- native WiFi via BCM94352Z
- Bluetooth (with handoff) using BCM94352Z
- native USB3/USB2 with AppleUSBXHCI/AppleUSBEHCI
- native audio with AppleHDA [see below, "Known Problems"]
- native power management
- accelerated graphics for HD5500 including OpenCL
- wired Ethernet
- Mac App Store working
- sleep (hibernation disabled, not tested)
- Messages/FaceTime (working on 10.10.3 even though I didn't run through the guide: http://www.tonymacx86.com/general-help/110471-how-fix-imessage.html)


Not tested/not working

The following features have issues, or have not been tested:
- internal USB headers

In theory, this unit has two internal USB headers. I did not test them, and as a result, the custom USB configuration in SSDT-USB.dsl does not have them enabled. If you enable them and discover the port numbers, please contribute and I will add the ports to the SSDT. You can boot with -uia_ignore_rmcf to cause USBInjectAll.kext to disregard the custom configuration data in the SSDT (which enables all ports).

I don't have a 4k monitor, so I didn't test 4k DP video. Reports are that it works with certain monitors. See the guide by ammulder for more information.


Known Problems

Find My Mac/Locking: Find My Mac does not work properly. Don't lock your mac because it's difficult (or impossible) to unlock again.

Slow WiFi after sleep/wake cycle: Disable "Wake for network access" in SysPrefs->Energy Saver.

Audio: After installing new/updated kexts or after the initial installation, you may lose audio.

To fix:
- reboot without caches (hit space at Clover, select without caches)
- rebuild cache
Code:
sudo touch /System/Library/Extensions && sudo kextcache -u /
- reboot normally (if needed, two times)

Alternative Fix:

Run pre-patch_hda.sh to patch your AppleHDA binary based on the patches in your current config.plist on your EFI partition. Do not use this script if you have the wrong config.plist on your EFI partition!

If you have the wrong config.plist, the script will patch AppleHDA with the wrong patches. No backup is made, so to restore, you would need to use the OS X/macOS installer.

Usage:
Code:
cd ~/Projects/nuc.git
./pre-patch_hda.sh


5Ghz WiFi: If you don't see 5Ghz networks on WiFi, force a cache rebuild. You can use Kext Wizard or DPCIManager or in Terminal:
Code:
sudo touch /System/Library/Extensions

Then restart.

No Ethernet after wake: If you disable "Wake on LAN" in BIOS, DO NOT enable "Wake for Ethernet Network access" in SysPrefs->Energy Saver.


Other post-install tasks

Bluetooth: If you get the Bluetooth Setup Assistant popup, go to SysPrefs->Bluetooth->Advanced, uncheck the boxes.

BIOS settings for fan control: I find with the default settings, the fan runs excessively fast. Change in Cooling->CPU Fan Header to your own preferences.


Major updates

For example... 10.10 to 10.11.

First step should be to update to the latest repository.

To do so:
Code:
git stash
git pull
make
make install
./download.sh
./install_downloads.sh

Also update Clover to the latest using the Clover installer. Be sure to fix EFI/Clover/kexts, so that only EFI/Clover/kexts/Other is existing. All version specific directories under EFI/Clover/kexts should be removed.

Also update config.plist at EFI/Clover/config.plist to the latest content from the repo. Be sure to retain your own SMBIOS data at config.plist/SMBIOS.

Now you can update via the App Store. Just boot the installer/updater upon restart.

After updating, run ./install_downloads.sh again:
Code:
./install_downloads.sh


Problem reporting

Problem reports should be accompanied by various files that allow your progress to be accounted for...

In terminal,
Code:
rm -Rf ~/Downloads/RehabMan
mkdir ~/Downloads/RehabMan
cd ~/Downloads/RehabMan
patchmatic -extract

Post contents of Downloads/RehabMan directory (as ZIP).

Also, post ioreg as ZIP: http://www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html. Please, use the IORegistryExplorer v2.1 attached to the post! DO NOT reply with an ioreg from any other version of IORegistryExplorer.app.

And output from:
Code:
kextstat|grep -y acpiplat
kextstat|grep -y appleintelcpu
kextstat|grep -y applelpc
kextstat|grep -y applehda
ls -l /System/Library/Extensions/AppleHDA.kext/Contents/Resources/*.zml.zlib
md5 /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA

Also, press F4 at the main Clover screen, then compress and post the EFI/CLOVER folder in use. And please, in order to reduce the size, omit EFI/Clover/themes... especially if you have an overabundance of themes installed.

Also post output of:
Code:
sudo touch /System/Library/Extensions && sudo kextcache -u /

Compress all files as ZIP. Do not use external links. Attach all files using site attachments only.

Hi Rehabman. Im looking at the NUC5i3RYK i3 model would it work with this guide? This model has Intel HD 5500.
 
Hi Rehabman. Im looking at the NUC5i3RYK i3 model would it work with this guide? This model has Intel HD 5500.

Yes. Keep in mind it is soldered and unsupported Intel WiFi.
 
I believe so (many are). You should check... I don't find WiFi that useful on a desktop, but your needs may differ.

I use Ethernet all through the house but i was thinking of putting a Genine Apple WIFI/Bluetooth card in the NUC only because of Bluetooth for the Apple Keyboard and Mouse.
 
I use Ethernet all through the house but i was thinking of putting a Genine Apple WIFI/Bluetooth card in the NUC only because of Bluetooth for the Apple Keyboard and Mouse.

The NUC5 I used has replaceable WiFi.
 
I have used both BCM94352Z (as per post #1) and BCM943602BAED (not mentioned in post #1).

I will have a play once it arrives. Cheers mate.
 
Everything is fine after installation except the audio. I have no headphone in output sources. I can see Intel High Definition audio in System Informations.
When executing "pre-patch_hda.sh" I have an error :
Code:
symlink("/System/Library/PrelinkedKernels/prelinkedkernel", "/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache") failed 17 (File exists) <createPrelinkedKernel 2795>
And the script stops.
When listing /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache it seems to be already linking to prelinkedkernel file.
Code:
lrwxr-xr-x  1 root  wheel  63  7 avr 09:54 /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache -> /Volumes/system/System/Library/PrelinkedKernels/prelinkedkernel

But after reboot still have no audio. Any clue ? Thank you very much in advance

Code:
iMac-de-ttm:nuc.git ttm$ kextstat|grep -y acpiplat
   13    1 0xffffff7f827c9000 0x60000    0x60000    com.apple.driver.AppleACPIPlatform (5.0) B8468080-CED9-30EA-B151-33368AF9555B <12 11 7 6 5 4 3 1>
iMac-de-ttm:nuc.git ttm$ kextstat|grep -y appleintelcpu
iMac-de-ttm:nuc.git ttm$ kextstat|grep -y applelpc
   91    0 0xffffff7f82016000 0x3000     0x3000     com.apple.driver.AppleLPC (3.1) F51595F0-F9B1-3B85-A1C3-F984DAD4107E <75 12 5 4 3>
iMac-de-ttm:nuc.git ttm$ kextstat|grep -y applehda
   88    1 0xffffff7f824b3000 0x1d000    0x1d000    com.apple.driver.AppleHDAController (278.56) CFB0D0AE-F09A-3660-8F95-7A02FD5FBF07 <87 86 64 12 7 6 5 4 3 1>
  102    0 0xffffff7f82635000 0xb4000    0xb4000    com.apple.driver.AppleHDA (278.56) A4EB06C9-A40A-39EF-9C4A-D7F23DB9A2F9 <101 88 87 86 68 64 6 5 4 3 1>
iMac-de-ttm:nuc.git ttm$ ls -l /System/Library/Extensions/AppleHDA.kext/Contents/Resources/*.zml.zlib
-rwxr-xr-x  1 root  wheel  4583  7 avr 10:01 /System/Library/Extensions/AppleHDA.kext/Contents/Resources/Platforms.zml.zlib
-rwxr-xr-x  1 root  wheel  1836  7 avr 10:01 /System/Library/Extensions/AppleHDA.kext/Contents/Resources/layout1.zml.zlib
-rwxr-xr-x  1 root  wheel  1828  7 avr 10:01 /System/Library/Extensions/AppleHDA.kext/Contents/Resources/layout2.zml.zlib
 

Attachments

  • report.zip
    37 KB · Views: 145
  • ioreport.zip
    442.8 KB · Views: 169
Last edited:
Status
Not open for further replies.
Back
Top