Go to page

Go to page

Moderator

The purpose of this guide is to provide a step-by-step guide to install Mojave, High Sierra, Sierra, or El Capitan on the Kaby Lake Intel NUC7 series Intel NUC mini computers. My NUC7 is the NUC7i7BNH, although I expect the guide will work on other similar models. Preliminary support for the NUC8 "Bean Canyon" has also been added.

I installed with 8GB RAM (one stick), and an SM951/AHCI M.2 SSD. Recommend two sticks in dual-channel.

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

Some notes on the NUC7i7BNH

The NUC7i7BNH is similar to other NUCs. This particular NUC has a single M.2 slot for SSD and support for a 2.5" SATA SSD or HDD.

Like the previous Skylake NUC6 the NUC comes with MSR 0xE2 locked and there is no option in the BIOS to unlock it. And as with the previous generation, this NUC has soldered WiFi/BT, with no option to replace it. For networking, Ethernet is used.

The NUC7i7BNH has an HDMI port and a Thunderbolt3 (USB-C) port. I was able to use my DP screen using a USB-C->DP cable (my monitor does not offer full resolution over HDMI).

Some notes on the NUC7i7DNKE

Recently received a "Dawson Canyon" NUC7i7DNKE. This NUC also works by following this guide.

These "Dawson Canyon" NUCs are an excellent option due to their simplicity and replaceable WiFi hardware. I replaced the Intel WiFi hardware with Broadcom BCM94352Z and it works great. The required kexts and patches are already present in the guide files.

Note: The only big difference was the USB configuration, which uses HS02->HS05 + SS02->SS05 instead of 01->04. Some other files were simplified for the Dawson Canyon NUC due to lack of analog audio.

Some notes on the NUC8i7BEH

Preliminary support for the CoffeeLake NUC8 "Bean Canyon" has been added to the github project.

I may eventually create a separate thread for the NUC8, but for now here are the notable differences:
- add EmuVariableUefi-64.efi to drivers64UEFI
(you will experience lockups on restart, shutdown, sleep, and SysPrefs->Startup Disk without it)
- use the nuc8 variant plists (config_install_nuc8_bc.plist, config_nuc8_bc.plist)
- use the nuc8 make install script ('make install_nuc8bc')
- in BIOS settings you *must* enable legacy boot (continue to boot UEFI, but enable legacy for CSM)
(you will have KP/reboot without it)

Note: This guide has been updated to use native Kaby Lake support as of 10.12.6. As a result, changes would be required (Skylake spoofing) if you were to attempt versions prior to 10.12.6. Support here only for 10.12.6 and later.

BIOS settings

On my NUC7i7BNH, BIOS version 040 was installed (now updated to 045 yet).

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).

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

- 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.

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

- If you have HD615/HD620/HD630 on 10.12.5+, you may need to add Lilu.kext and IntelGraphicsFixup.kext

- 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_nuc7.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_nuc7.plist.

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.

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_nuc7

Or for the Dawson Canyon NUC7:

Code:

make
make install_nuc7dc

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

Finally, 'make install_nuc7', 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 an add-on SSDT (SSDT-NUC*.aml) which provides the necessary changes. This is because the NUC requires only minimal patching so a full patched DSDT is not needed.

Power Management

Everything required for CPU/IGPU power management is already installed with the steps above.
There is no longer any need to use the ssdtPRgen.sh script.

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

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:

./mount_efi.sh

Then copy the file:

Code:

cp config_nuc7.plist /Volumes/EFI/EFI/Clover/config.plist

Or for Dawson Canyon:

Code:

cp config_nuc7_dc.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 iMac14,2. It works. You could also use iMac17,1. The best match would be a Kaby Lake Macmini, but Apple has not yet produced one as I write this guide.

Note regarding HDMI ports: The provided config-nuc7.plist is optimized specifically for my NUC which happens to have HDMI and USB-C. Your NUC may have a different configuration, and therefore may require different framebuffer patches.

Skylake Spoofing

For versions of macOS or OS X prior to 10.12.6, there is no native KabyLake graphics support. For those systems, it is necessary to spoof the KabyLake graphics device as Skylake.

Note: Spoofing as Skylake is not currently 100% supported, due to missing support in WhateverGreen.kext.

You can enable that functionality by copying SSDT-SKLSPF.aml to ACPI/patched:

Code:

cp ./build/SSDT-SKLSPF.aml /Volumes/EFI/CLOVER/ACPI/patched

Or you can use 'make install_nuc7spoof':

Code:

make install_nuc7spoof

It will also work on systems with native KabyLake support, if you wish to use the Skylake drivers instead (there are reports that there is better support for 4k@60 with the Skylake drivers).

Keep in mind that after switching (either way), you must rebuild cache, then reboot at least once to enable the patches that are in config.plist.

And on systems prior to 10.12.6, you must use FakeCPUID=0x0506e3. It is in the provided plists, but disabled. Change #FakeCPUID to FakeCPUID in config.plist/KernelAndKextPatches.

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".

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
make clean

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

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.

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.

I do not have many Thunderbolt-3 devices. But I did test with a USB3 adapter to a USB3 hub. Although it worked if the device was plugged in prior to booting, hotplug was not working/not reliable. Maybe a BIOS update will help. The USB-C port did work for my DP monitor.

BT/WiFi is soldered Intel. They are not supported well on macOS/OS X.

Monitor hotplug and dual monitors remain unreliable just as with other Skylake computers. Maybe when there is a Macmini with Skylake or Kaby Lake, Apple will fix...

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.

Updating to High Sierra

As you probably already know, High Sierra and Mojave have a new file system called APFS. Boot drives on SSDs will automatically be converted to APFS if you start the High Sierra installer in the default way (eg. running /Applications/Install macOS High Sierra.app).

Problem reporting

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

Hi RehabMan, problems with 4K monitor reappeared. I will try to explain. My NUC is model NUC7i5DNKE. It has 2 HDMI ports. If I connect the one which is labelled as "Protected UHD", the image is pink, but HDMI works. If I change to the other port and reboot, video works well but I don't have sound. The only way that works well, is reboot with cable connected to the "Protected UHD" HDMI port (pink image), and after it boots, change cable to the other port.

Moderator

Hi RehabMan, problems with 4K monitor reappeared. I will try to explain. My NUC is model NUC7i5DNKE. It has 2 HDMI ports. If I connect the one which is labelled as "Protected UHD", the image is pink, but HDMI works. If I change to the other port and reboot, video works well but I don't have sound. The only way that works well, is reboot with cable connected to the "Protected UHD" HDMI port (pink image), and after it boots, change cable to the other port.

I have only one monitor. When I boot I have no sound, unplug hdmi and plug it again and sound starts working. It would be interesting that sound works without needing to replug cable (using only one monitor).