Configuration

Preparation

Xcode

N/A

IORegistryExplorer

Sign in to the Apple Developer site using your Apple ID credentials. Once logged in, look for the most relatable version of the Additional Tools for Xcode and download it.

The download will mount itself in Finder as any .dmg file would, look for the IORegistryExplorer and move it to your /Applications directory.

MaciASL

Download the latest version of the MaciASL compiler. Make sure to set the compiler to version 6.x of ACPI.

MaciASL
Compiles .dsl files into .aml files, required for ACPI patches.
MaciASL
iASL
Compiler Options
ACPI 4.0
ACPI 6.x

AppleIntelInfo

N/A

Clover Configurator

Download the Clover Configurator application and place it in your /Applications directory.

Clover Configurator
The software that allows us to easily configure our EFI partition

Kext Management

Launch Terminal and execute the following command to create a .bashrc file within the home directory.

vim ~/.bashrc

Enter edit mode by pressing the key, and then paste the following snippet;

function addkext {
    source=$1
    kextName=$(basename $source)
    targetDir="/Library/Extensions"
    target="$targetDir/$kextName"

    # Ask for the administrator password upfront
    sudo -v

    # Move the kext into the target directory
    sudo mv $source $target
    # Change the permission & owner of the kext
    sudo chmod -R 755 $target
    sudo chown -R root:wheel $target
    # Load the kext
    sudo kextload $target

    # Rebuild the kext cache
    # sudo touch $targetDir && sudo kextcache -u /

    clear
    echo -e "\r\n\x1B[0m Installed Kext: \x1B[47m\x1B[30m $targetDir/ \x1B[42m\x1B[30m $kextName \x1B[0m"
    echo -e "\r\n\x1B[0m Remember to rebuild the kext cache, and restart your system \x1B[0m\r\n"
}

function removekext () {
    source=$1
    kextName=$(basename $source)
    targetDir="/Library/Extensions"
    backupDir="/Users/$(whoami)/.kextbackup/$(date '+%s')"
    backup="$backupDir/$kextName"

    # Ask for the administrator password upfront
    sudo -v

    # Create the backup directory
    sudo mkdir -p $backupDir

    # Move the source file to our new backup directory
    sudo mv $source $backup

    clear
    echo -e "\r\n\x1B[0m Uninstalled Kext: \x1B[47m\x1B[30m $targetDir/$kextName \x1B[0m"
    echo -e "\x1B[0m           Backup: \x1B[42m\x1B[30m $backup \x1B[0m"
    echo -e "\r\n\x1B[0m Remember to rebuild the kext cache, and restart your system \x1B[0m\r\n"
}

function rebuildkext () {
    # Rebuild the kext cache
    sudo kextcache -i /

    clear
    echo -e "\r\n\x1B[0m Kext Cache: \x1B[47m\x1B[30m /Library/Extensions/ \x1B[42m\x1B[30m Rebuilt \x1B[0m\r\n"
}

Save and exit by first exiting out of edit mode by pressing . Once out of edit mode, type :wq. As soon as you've exited the vim editor, run the following command to initialise our new bash functions.

source ~/.bashrc

Generic Patches

Clover Configuration

Apply the following settings to your /EFI/Clover/config.plist file;

Clover Configurator
Boot
Gui
Rt Variables
SMBIOS
System Parameters
Arguments
Verbose (-v)
npci=0x2000
kext-dev-mode=1
dart=0
Miscellaneous
Default Boot Volume:
lpartition
XMPDetection: Yes
Debug
Scan
Auto: Yes
ROM: UseMacAddr0
BooterConfig: 0x28
CsrActiveConfig: 0x3E7
System Definition: MacPro6,1
SmUUID: Run uuidgen in Terminal
Custom UUID:
Inject Kexts: Yes
[Hard Drive] /EFI/Clover/config.plist

Driver Installation

Download the following items and place them within the /EFI/Clover/drivers64UEFI directory.

HFSPlus-64.efi
Support for the HFS+ filesystem.
NTFS-64.efi
Support for the NTFS filesystem.
OsxAptioFix2Drv-free2000.efi
Fixes memory issues, and releases the first 2 GB for Rampage V Extreme motherboards.

Kext Installation

Download the following items and place them within the ~/Downloads directory.

FakePCIID.kext
Enables Fake PCI ID spoofing, requires additional kexts for various reasons.
VoodooTSCSync.kext
Synchronizes the TSC for the LGA2011 CPU socket, and the 6 core version is specifically for X99 motherboards.
FakeSMC.kext & C/O
Emulates SMC in order to monitor hardware through HWMonitor.

Launch the Terminal and execute the following command to install the kexts, remember to change the path relative to your kexts.

addkext ~/Downloads/FakePCIID.kext
addkext ~/Downloads/VoodooTSCSync.kext
addkext ~/Downloads/FakeSMC.kext
addkext ~/Downloads/FakeSMC_ACPISensors.kext
addkext ~/Downloads/FakeSMC_CPUSensors.kext
addkext ~/Downloads/FakeSMC_GPUSensors.kext
addkext ~/Downloads/FakeSMC_LPCSensors.kext

Finally, and optionally, move the HWMonitor.app into your /Applications directory.

Injecting USB

Clover Configuration

Apply the following settings to your /EFI/Clover/config.plist file in order to properly inject USB into your system;

Clover Configurator
Acpi
Devices
Kernel and Kext Patches
DSDT Patches
Rename XHCI to XHC 58484349 5848435F
Rename EHC1 to EH01 45484331 45483031
Rename EHC2 to EH02 45484332 45483032
USB
Inject
Add ClockID
FixOwnership
HighCurrent
KextsToPatch
com.apple.driver.usb.AppleUSBXHCI 837D880F0F83A7040000 837D880F909090909090
[Hard Drive] /EFI/Clover/config.plist

Kext Installation

Download the following item and place it within the ~/Downloads directory.

USBInjectAll.kext
USB Port injector for macOS Sierra and higher.

Launch the Terminal and execute the following command to install the kext, remember to change the path relative to your kext.

addkext ~/Downloads/USBInjectAll.kext

Additional kexts for x99 motherboards

Download the following item and place it within the ~/Downloads directory.

XHCI-x99-injector.kext
x99 USB Port injector for macOS Sierra and higher. Requires USBInjectAll.kext.

Launch the Terminal and execute the following command to install the kext, remember to change the path relative to your kext.

addkext ~/Downloads/XHCI-x99-injector.kext

Rampage V Extreme and Phanteks P400S Port Guides

These values have been picked from IORegistryExplorer by plugging & unplugging all available USB ports on the respective hardware. A reference guide may be found here.

Rampage V Extreme
1
2
3
4
5
6
7
8
9
10
11
12
  • 1
    HS14@14e00000
  • 2
    HS05@14500000
  • 3
    SSP5@15340000
    HS09@14940000
  • 4
    SSP5@15330000
    HS09@14930000
  • 5
    SSP5@15320000
    HS09@14920000
  • 6
    SSP5@15310000
    HS09@14910000
  • 7
    SSP6@15440000
    HS10@14a40000
  • 8
    SSP6@15430000
    HS10@14a30000
  • 9
    SSP6@15420000
    HS10@14a20000
  • 10
    SSP6@15410000
    HS10@14a10000
  • 11
    HS02@00200000
    HS04@00400000
    Disabled when a PCIe x4 bandwidth device or m.2 device is connected.
  • 12
    HS01@00100000
    HS03@00300000
    Disabled when a PCIe x4 bandwidth device or m.2 device is connected.
Phanteks P400S
1
2
  • 1
    SSP3@15100000
    HS03@14300000
  • 2
    SSP4@15200000
    HS04@14400000

Injecting Audio

Clover Configuration

Apply the following settings to your /EFI/Clover/config.plist file in order to properly inject audio into your system;

Clover Configurator
Acpi
Devices
DSDT Patches
Rename AZLA to HDEF 414C5A41 48444546
Audio
Inject: 1
[Hard Drive] /EFI/Clover/config.plist

Kext Installation

Download the following item and place it within the ~/Downloads directory.

VoodooHDA.kext
Open source audio driver for devices compliant with Intel High Definition Audio.

Launch the Terminal and execute the following command to install the kext, remember to change the path relative to your kext.

addkext ~/Downloads/VoodooHDA.kext

Injecting Internet

Kext Installation

Download the following items and place them within the ~/Downloads directory.

AppleIntelE1000e.kext
Ethernet driver.
FakePCIID_Broadcom_WiFi.kext
Broadcom WiFi driver.

Launch the Terminal and execute the following command to install the kexts, remember to change the path relative to your kexts.

addkext ~/Downloads/AppleIntelE1000e.kext
addkext ~/Downloads/FakePCIID_Broadcom_WiFi.kext

Injecting Bluetooth

Kext Installation

Download the following items and place them within the ~/Downloads directory.

BrcmFirmwareRepo.kext
Bluetooth driver.
BrcmPatchRAM2.kext
Driver which applies PatchRAM updates for Broadcom RAMUSB based devices.

Launch the Terminal and execute the following command to install the kexts, remember to change the path relative to your kexts.

addkext ~/Downloads/BrcmFirmwareRepo.kext
addkext ~/Downloads/BrcmPatchRAM2.kext

Injecting Graphics

Clover Configuration

Apply the following settings to your /EFI/Clover/config.plist file in order to properly inject the NVIDIA drivers into your system;

Clover Configurator
System Parameters
NvidiaWeb
[Hard Drive] /EFI/Clover/config.plist

NVIDIA Web Drivers

Our safest bet is to rely on the nVidia Update repository.

Launch the Terminal and execute the following command;

bash <(curl -s https://raw.githubusercontent.com/Benjamin-Dobell/nvidia-update/master/nvidia-update.sh)

NVIDIA Cuda Drivers

Download the latest

NVIDIA Cuda Drivers
and run the installer.

Bootloader

In order to prevent resolution flickering between the bootloader and the login window, as well as possible "no signal" issues with multiple monitors, we must make a few adjustments to our setup.

For any "no signal" issues with DisplayPort connections, try moving the connections around if there are free DisplayPort slots on your graphics card.

Clover Configurator
Kernel and Kext Patches
Graphics
KextsToPatch
AppleGraphicsDevicePolicy 626F6172642D6964 626f6172642d6978
Load VBios
[Hard Drive] /EFI/Clover/config.plist

When these settings are applied, you'll want to make sure that the CsmVideoDxe-64.efi driver isn't installed, as well as disabling CSM in the UEFI.

NVMe Drives

As of High Sierra, macOS now supports NVMe natively out of the box. It may however interpret it as an external drive regardless of whether it is internal or external.

In order to mitigate this, launch

Clover Configurator
, load the /EFI/Clover/config.plist file and apply the following patch;

Clover Configurator
Kernel and Kext Patches
KextsToPatch
com.apple.driver.usb.AppleUSBXHCIPCI 837D880F0F83A7040000 837D880F909090909090
[Hard Drive] /EFI/Clover/config.plist

If the above kext patch doesn't work, we may instead create a custom ACPI patch. Launch IORegistryExplorer and search for nvme. In the dropdown field just below the search bar, you should see the full path to the NVMe controller.

IORegistryExplorer
Search: nvme
IOService:/AppleACPIPlatformExpert/
lPCI0
@0/AppleACPIPCI/
lBR1B
@0/IOPP/
lH000
@0/IONVMeController
The numbers behind the @-symbols do not make a difference.

Launch

MaciASL
and press to create a blank canvas. Paste the code snippet below, and Save As using the ACPI Machine Language Binary format (.aml).

Place the newly created .aml file within the /EFI/Clover/ACPI/patches directory, so as you have /EFI/Clover/ACPI/patches/SSDT-NVMe-extern-icon-patch.aml.

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20180427 (64-bit version)(RM)
 * Copyright (c) 2000 - 2018 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of iASLC8MKNF.aml, Tue Aug 21 22:33:17 2018
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000000C4 (196)
 *     Revision         0x02
 *     Checksum         0x15
 *     OEM ID           "hack"
 *     OEM Table ID     "nvme"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20160422 (538313762)
 */
DefinitionBlock ("", "SSDT", 2, "hack", "nvme", 0x00000000)
{
    External (_SB_.
lPCI0
.
lBR1B
, DeviceObj) // (from opcode) External (_SB_.
lPCI0
.
lBR1B
.
lH000
._ADR, UnknownObj) // (from opcode) Scope (\_SB.
lPCI0
.
lBR1B
) { Device (NVME) { Name (_ADR, Zero) // _ADR: Address Name (_SUN, One) // _SUN: Slot User Number Method (_INI, 0, NotSerialized) // _INI: Initialize { Store (0x0F, \_SB.
lPCI0
.
lBR1B
.
lH000
._ADR) } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03 }) } Return (Package (0x02) { "built-in", Buffer (0x0A) { "NVMe SSD" } }) } } } }

CPU Power Management

Intel P & C States

Launch

Clover Configurator
, mount your hard drive's EFI partition and load the /EFI/Clover/config.plist file. Apply the following adjustments, save, and reboot the computer.

Clover Configurator
Acpi
Cpu
Kernel and Kext Patches
Smart UPS
SSDT / Generate Options
PluginType
Frequency MHz:
l4200
Type: 0x0a01
KernelXCPM
FakeCPUID: 0x0306F2
KernelToPatch
xcpm_cpuid_set_info 723CD077500FB6C0 6F3CD077500FB6C0
xcpm_bootstrap 89D804C43C227722 89D804C13C227722
[Hard Drive] /EFI/Clover/config.plist

Once your computer is back up and running, launch the Terminal and run the folliwng command;

sysctl machdep.xcpm.mode

If everything works as expected, you should see a 1 being returned.

If you're using the MacPro6,1 system definition, download

freqVectorsEdit.sh
and run the following command in the Terminal;

./freqVectorsEdit.sh

Follow the on-screen instructions and select the number representing iMac15,1 when asked for a donor file. Reboot when prompted.

Now, download

ssdtPRGen.sh
and run the following command in the Terminal;

sudo ./ssdtPRGen.sh -turbo 
l4200

When the above command has finished, navigate over to ~/Library/ssdtPRGen and copy the ssdt.aml file into the /EFI/Clover/ACPI/patches directory of your hard drive's EFI partition. Rename it to SSDT-XCPM.aml. Again, reboot your computer.

Lastly, it's time to run a few tests to make sure everything went well.

# Should display plugin-type = 1
ioreg -l | grep -A 25 CP00@0 | grep plugin-type

# Should display com.apple.driver.X86PlatformPlugin
kextstat | grep -y x86plat

# Should NOT display anything
kextstat | grep -y appleintelcpu

# Should display 1
sysctl -n machdep.xcpm.vectors_loaded_count

# Should display a bunch of P & C state lines at the end of the output
sudo kextload ~/Desktop/AppleIntelInfo.kext
sudo cat /tmp/AppleIntelInfo.dat

# Finally, unload the AppleIntelInfo.kext
sudo kextunload ~/Desktop/AppleIntelInfo.kext

Should this fail at some stage, please refer to this guide.

Intel SpeedStep Technology

Verify that Enhanced Intel SpeedStep Technology (EIST) is enabled in your BIOS. Please note that enabling EIST breaks any hope of sleep/wake functionality.

PMDrvr.kext
Enables Enhanced Intel SpeedStep Technology, Haswell-E version.

You must also make the following changes to the System Preferences.

System Preferences
Energy Saver
Prevent computer from sleeping automatically when the display is off.
Put hard disks to sleep when possible
Wake for network access
Enable Power Nap

Launch Terminal and run the following command;

addkext ~/Downloads/PMDrvr.kext