Jump to content

How to build your own Mac Pro based on Broadwell-E/EP, Haswell-E/EP and X99 [Successful Build/Extended Guide]


KGP-iMacPro
 Share

7 posts in this topic

Recommended Posts

Up and successfully running Broadwell-E/X99 with macOS High Sierra 10.13.3 SA (17D102)!

 

post-1362934-0-15761500-1520002673_thumb.png

 

Abstract and Introduction:

 

This Broadwell-E/EP, Hasell-E/EP, X99 Build and macOS High Sierra 10.13 Desktop User Guide is the logical continuation of my Broadwell-E/EP, Hasell-E/EP, X99 Build and macOS Sierra 10.12 Desktop User Guide. At the same time if is my last guide based on Broadwell-E/EP, Hasell-E/EP, X99 systemsNote that just recently, I released my brand new iMacPro Skylake-X/X299 Build and macOS High Sierra 10.13 Desktop Guide to live already now the future. 

 

This guide might still marginally grow thanks to your estimated and appreciated user feedback. However, it is nice to see that my X99 system behaves absolutely stable and is fully functional, including native Handoff and Airdrop and even forced Sleep/Wake functionality. Many thanks to @DSM2 for his collaboration and important contribution to the initial Broadwell-E/X99 macOS High Sierra 10.13 system setup. 

 

Let me first briefly summarize my actual build, which constitutes the base for this macOS High Sierra Desktop Guide. Note however that like in case of 10.12 macOS Sierra, there should be also compatibility of my guide with all Broadwell-E/EP and Haswell-E processors and most X99 mobos (ASUS, GYGABYTE, ASRock, MSI etc.). During the last months, I received even success feedback of users with Broadwell-EP/Haswell-EP processers with up to 22 cores (44 threads) at clock speeds around 2.8 Ghz each thread, making X99 to a "realtively cheap" alternative to iMac Pro Systems.

 

 

Before starting with all detailed instructions, please find a Table of Content that provides an overview of the individual topics addressed within this guide:

 

---------------------------------------------------------------------------------------------------

 

Table of Contents: 

 

A.) Hardware Summary 

 

B.) Mainboard BIOS

B.1) ASUS BIOS Firmware Patching

B.2) ASUS X99-A II BIOS Configuration 

 

C.) Important General Note/ Advice and Error Prevention  

 

D.) MacPro macOS 10.13 High Sierra System Setup

D.1) MacPro EFI-Folder Preparation

D.2) MacPro macOS High Sierra 10.13.3 (17D47) Installer Download Procedure

D.3) MacPro macOS High Sierra 10.13.3 (17D47) USB Flash Drive Installer Creation

D.4) macPro macOS High Sierra 10.13.3 (17D47) Clean Install on Broadwell-E/EP/Haswell-E/EP X99

D.5) MacOS High Sierra Update from earlier macOS distributions as well as future MacPro macOS High Sierra Update Procedures

 

E.) Post Installation Process

E.1) Graphics Configuration

E.2) Audio Configuration

E.3) USB Configuration

E.4) M.2/NVMe Configuration

E.5) SSDT TRIM Support

E.6) Xnu CPU Power Management (XCPM) Configuration

E.7) Enhanced Intel SpeedStep Technology (EIST) and PMDrvr.kext

E.8) Overclocking

E.9) ASUS X99-A II PCI Deice Implementation - Sleep/Wake Functionality

E.9.1) ACPI DSDT Replacement Patching Table Implementation 

E.9.2) SSDT-ASUS-X99-A-II.aml PCI Implementation 

E.9.2.1) HDEF - onboard Audio Controller PCI Implementation

E.9.2.2) GFX1, HDAU - Nvidia Graphics Card and HDMI/DP Audio PCI Implementation

E.9.2.3) IMEI - onboard Intel Management Engine Interface (IMEI) Controller PCI Implementation

E.9.2.4) Glan - onboard LAN Controller PCI Implementation

E.9.2.5) XHCI - onboard Extended Host Controller Interface (XHCI) PCI Implementation 

E.9.2.6) ASMedia ASM1142 USB3.1 Controller PCI Implementation

E.9.2.7) SAT1 - Intel AHCI SATA Controller PCI Implementation 

E.9.2.8) EVVS - Intel X99 sSata Controller PCI Implementation 

E.9.2.9) NVMe Controller PCI Implementation 

E.9.2.10) Inateck KTU3FR-502U XHC 7-Port USB 3.0 Controller PCI Implementation

E.9.2.11) ARPT - OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 AirPort Controller PCI Implementation

E.9.2.12) ThunderboltEX 3 Controller Implementation 

E.9.2.13) DTGP Method

 

E.10) Hardware Monitoring

 

E.11) System Overview CPU Cosmetics

 

F.) Benchmarking

F.1) i7-6950X CPU Benchmarks

F.2) Gigabyte AORUS GTX 1080 Ti 11GB Xterme Edition OpenGL and Metal Benchmarks

F.3) Blackmagic Disk Speed Benchmarks

 

G.) Summary and Conclusion 

 

---------------------------------------------------------------------------------------------------

 

Now enjoy and have have fun with the detailed guidelines below.

 

A.) Hardware Summary

 

Motherboard: Asus X99-A II

CPU: I7-6950X (10-core)
RAM: 128 KIT (8X16GB) G.Skill TridentZ (F4-3200C14Q2-128GTZSW)
System Disk: Samsung 850 EVO 1TB (SSD) / Samsung 960 EVO 1TB (NVMe, M.2)
RAID: 3x Western Digital Red Pro 6TB (18TB);
Wifi + Bluetooth: OSXWIFI PC/Hackintosh - Apple Broadcom Bcm9436cd - 802.11 A/B/G/N/AC +Bluetooth 4.0 PCIe
Power Supply: Corsair AX860
CPU Cooler: Corsair H80i v2
Webcam: Logitech HD Pro WebCam C930
Monitor: LG 38UC99-W, 38", WQHD, 21:9, 3840x1600 pixel, 75 Hz.
Case: Corsair CC600TWM-WHT, Graphite Series 600T, Mid Tower
Keyboard: Logitech K811
Mouse: Logitech Ultra-Thin Touch Mouse T631
Blu-Ray/DVD Writer: LG Super Multi Blue BH16 (BH16NS55)
 
post-1362934-0-01005800-1516174978_thumb.png

 

B.) ASUS Mainboard BIOS

 

Please find below a detailed instruction for ASUS X99 mainboard BIOS Firmware patching, as well as a summary of my actual Asus X99-A II  BIOS configuration.

 

 

B1.) ASUS Mainboard BIOS Patching

 

On a real Mac with native OSX XCPM power management, the MSR 0xE2 register is unlocked and therefore writeable. However, on ASUS mobos this register is usually read only. This is also the case for all ASUS X99 mobos. When the kernel tries to write to this locked register, it causes a kernel panic. This panic can happen very early in the boot process, with the result that your system freezes or reboots during the boot process. We can circumvent the MSR 0xE2 register write with a dedicated KernelToPatch entry in the config.plist, namely "xcpm_core_scope_msrs © Pike R. Alpha" and by enabling the "KernelPM" in the config.plist in Section "Kernel and Kext Patches" of the Clover Configurator. See Section E.1) for further details.

 

However, thanks to CodeRush's Longsoft UEFIPatch distribution and sophisticated MSR 0xE2 Register patches, we are able to successfully patch any ASUS X99 mainboard BIOS distribution and unlock the MSR 0xE2 register. This makes the "xcpm_core_scope_msrs © Pike R. Alpha" KernelToPatch entry obsolete and allows full native read/write MSR 0xE2 register access by the OSX kernel. The patched ASUS mainboard BIOS firmware finally can be uploaded each specific ASUS X99 mainboard by means of the ASUS EZ BIOS Flashback Procedure.

 

The individual steps for the ASUS X99 BIOS Patching are detailed below:

 

1.) Download and unzip the CodeRush's UEFI patch to your Desktop.

2.) To patch the latest BIOS for your ASUS mobo, download the most actual BIOS version from the ASUS mobo support page (e.g., follow the subsequent link to obtain the latest BIOS Version for the Asus X99-A II).

3.) Unzip the bios file and copy the CAP file into the UEFIPatch directory on your Desktop.

4.) Open a terminal; type "cd " and drag the "UEFIPatch"-folder on your Desktop into the Terminal window and press "Enter". One can also use the terminal command equivalent:

cd ~/Desktop/UEFIPatch_0.3.9_osx/

Note that this step is important to successfully execute the UEFI-Patch procedure! You must be in the UEFIPatch directory on your terminal, in order to successfully execute step 5.) below!  

 

Once in the UEFIPatch directory on your terminal, drop the "UEFIPatch"-executable into the terminal window; Also drop the most actual BIOS CAP file into the terminal window; Press enter to execute the "UEFIPatch"-procedure. The equivalent terminal command is:

./UEFIPatch X99-A-II-ASUS-1701.CAP

by assuming that you want to patch the latest X99-A-II-ASUS-1701.CAP BIOS-files for the ASUS X99-A II. For other mobos, please adapt the adequate BIOS CAP-filename in the command!

 

During the patch procedure, you will see something like the following message, which can be simply ignored:

parseImageFile: Aptio capsule signature may become invalid after image modifications
parseSection: section with unknown type 52h
parseFile: non-empty pad-file contents will be destroyed after volume modifications
parseSection: section with unknown type 52h
parseFile: non-empty pad-file contents will be destroyed after volume modifications
patch: replaced 6 bytes at offset F69h 0FBA6C24400F -> 0FBA7424400F
Image patched

6.) You will now find a ***.CAP.patched BIOS-file in the UEFIPatch folder, which is your patched (MSR 0xE2 unlocked) BIOS file.

7.) Rename the ***.CAP.patched BIOS file to X99A2.CAP, the required filename for the ASUS X99-A II BIOS Flashback procedure. Note that the required filename varies for each ASUS mobo. For details see the ASUS BIOS Flashback filename convention.

 

8.) Copy the X99A2.CAP (or it's derivative in case you use a different ASUS mobo) to a FAT-formatted USB2.0 storage device.

 

9.) Shut-down your hack, connect the USB2.0 storage device to the USB-port assigned to the ASUS BIOS Flashback procedure (see the mobo manual for details). Press the BIOS-Flashback button for three seconds until the flashback-led starts to blink, indicating that the BIOS Flashback is in progress. Release the button. The locations of the BIOS-Flashback button and the USB-port assigned to the BIOS-Flashback procedure on the ASUS X99-A II are indicated in the figure below:

 

post-1362934-0-87157800-1516176652_thumb.png
 
10.) Wait until the Flashback-led stops blinking and turns off, indicating that the BIOS Flashback process as been successfully completed. You now successfully installed the most actual patched BIOS, compatible with native OSX/MacOS power management.
 
11.) Boot your system and apply the BIOS settings described below.
 
 
B2.) ASUS X99-A II BIOS Configuration
 

Please find below a summary of the most important BIOS settings for the ASZS X99-A II. 

 

To overclock your RAM memory in concordance with your RAM specifications, enable the EZ XMP Switch on your ASUS Mainboard and enable posteriorly XMP in the Standard ASUS BIOS Setup mode (F7). Subsequently switch from standard to advanced ASUS BIOS Setup mode by pressing again F7.

 

post-1362934-0-23259700-1516177202_thumb.png
 
Press F7 and subsequently F10 key to change to "Standard Mode", Save and Reboot
 
Important Note:
 
"ASUS MultiCore Enhancement": When set to "Auto", MCE allows you to maximise the overclocking performance optimised by the ASUS core ratio settings. When disabled, MCE allows to set to default core ratio settings.
 
"Sync All Cores": Tremendous increase in CPU performance can be achieved with the CPU Core Ratio set to "Sync All Cores". In case of my i9-7980XE, the Geekbench score difference is approx. 51.000 (disabled) compared to 58.000 (enabled)! Note however, that Sync All Cores should be used only in case of the availability of an excellent and extremely sophisticated water cooling system! Otherwise, CPU Core Ratio should be set to "Auto". Further note that with CPU Core Ratio set to "Sync All Cores", the AVX Instruction Core Ratio Negative Offset must be set to "3" and the AVX-512 Instruction Core Ratio Negative Offset must be set to "2"Without the correct core ratio offsets, your system might become unstable with CPU Core Ratio set to "Sync All Cores"! 
 
VT-d Note: For compatibility with VM or parallels, VT-d can be also ENABLED... Verify however, in this case that in your config.plist the boot flag "dart=0" is checked under Arguments in the "Boot" Section of Clover Configurator! The boot flag "dart=0" is now implemented by default in config.plist of the EFI-Folder contained in EFI-X99-10.13.3-SA-Release-020318.zip in line with the boot flag implementation "slide=0".
 
Above 4G Decoding Note: I always assumed that the latter BIOS functionality would be mandatory for successfully operating the ThunderboltEX 3 PCie adaptor. This is definitely not the case. Thus in contrary to the BIOS Settings Table above I now rather recommend to DISABLE the latter BIOS functionality (Above 4G Decoding: off), as it also seems to affect the system sleep/wake functionality when enabled.  

 

C.) Important General Note/Advice and Error Prevention

 

Please note the following important General Note / Advice and Error Prevention, when setting up your X99 System by implementing the latest macOS High Sierra 10.13 distribution.

 
Before entering the detailed description of the individual System Upgrade Options from previous versions of macOS High Sierra 10.13 or the Clean Install of macOS High Sierra 10.13.3 (17D47), please consider the following error prevention.
 
1.) Note that the /EFI/Clover/drivers64UEFI/-directory of EFI-X99-10.13.3-SA-Release-020318.zip implements a totally new approach, namely AptioMemoryFix.efi developed by @vit9696, which successfully replaces OsxAptioFix2Drv-free2000.efi.
 
Note that AptioMemoryFix.efi is under permanent development. For further details and to access the ongoing discussion to the topic follow THIS LINK.
 
To retrieve the most actual version, download and compile the AptioMemoryFix.efi Source Code from Github by means of AptioMemory-Builder.sh developed by @Pavo, using the following terminal commands:
 
rm -rf AptioMemFix
 
git clone https://github.com/Pavo-IM/AptioMemFix
rm -rf ~/Desktop/AptioMemFix/
rm -rf ~/Desktop/AptioFix/
mv AptioMemFix/ ~/Desktop/
chmod +x ~/Desktop/AptioMemFix/AptioMemory_Builder.sh
~/Desktop/AptioMemFix/AptioMemory_Builder.sh
 
This will create "AptioFix" and "AptioFix_Build" folders on your Desktop. Now you can copy the most actual compiled AptioMemoryFix.efi release from ~/Desktop/AptioFix_Build/RELEASE/ to the /EFI/Clover/drivers64UEFI/ directories in the EFI-Folders of your macOS USB Flash Drive Installer and macOS System Disk. Don't forget to remove OsxAptioFix2Drv-free2000.efi from the /EFI/Clover/drivers64UEFI/ directories in the EFI-Folders of your macOS USB Flash Drive Installer and macOS System Disk.
 
For further details and to access the ongoing discussion to the topic follow THIS LINK.
 
AptioMemoryFix.efi works absolutely flawless on my system, without any memory allocation errors or slide issues with the "slide" boot flag disabled. Note that also with AptioMemoryFix.efi, Clover's RC Scripts have to be omitted during the clover boot loader installation. If already previously installed, remove Clover's RC Scripts from the /etc directory of your macOS USB Flash Drive Installer or System Disk with the following terminal commands:
 
sudo rm -rf /etc/rc.boot.d
sudo rm -rf /etc/rc.shutdown.d
 
sudo rm -rf /etc/rc.boot.d
sudo rm -rf /etc/rc.shutdown.d
 

2.) a.) All ATI Graphics Cards Users with typical rudimentary and basic Starter ATI Graphics Cards like the ATI Radeon RX 560 or RX 580 should use WhateverGreen.kext v1.1.4. and Lilu.kext v1.2.2.

 
Not however, that all ATI Vega 64 and Frontier GPUs are natively implemented by OSX and run Out of Box (OoB). No need for the additional Whatevergreen.kext and Lilu.kext implementation.
 
b.) All Nvidia Graphics Cards Users with SMBIOS MacPro6,1 can employ the officially distributed Nvidia 10.13 Web Drivers for their Nvidia Pascal and Maxwell graphics cards! Nvidia Kepler Cards were anyway already natively implemented in the earlier beta distributions of macOS 10.13. 
 
For further details and error prevention see Section E.1).
 
3.) Avoid any MacOS assignments in KextToPatch and KernelToPatch entries implemented in the  "Kernel and Kext Patches" Section of the Clover Configurator. If subsequently in my Guide you still find MatchOS assignments in respective figures or text, just ignore all likely yet persistent MatchOS assignments. In the config.plist of the EFI-Folder contained in EFI-X99-10.13.3-SA-Release-020318.zip, all MatchOS assignments have been definitely removed.
 
4.) Note that non ASUS mobo owners might have to check the "KernelPm" entry in the "Kernel and Kext Patches" Section of the Clove Configurator to successfully boot the 10.13 MacOS USB Flash Drive Installer or 10.13 System Disk! However, this entry is currently unchecked in the config.plist of the EFI-Folder contained in EFI-X99-10.13.3-SA-Release-020318.zip for all ASUS boarders.
 
post-1362934-0-78737900-1516180133_thumb.png

 

5.) Always check that you have the actual apfs.efi in the /EFI/CLOVER/drivers64UEFI/ - directory of your USB Flash Drive Installer and System Disk!

 
The actual apfs.efi can be obtained by following the respective guideline detailed below:
 
a.) Download and install Pacifist for Mac.
 
b.) Copy the "Install macOS High Sierra.app" to your Desktop -> right-click with your mouse on the app and select "Show Package Contents" -> click with the mouse on "Contents" and subsequently on "Shared Support" -> right-click with the mouse on "BaseSystem.dmg" and select "Open With" -> select "pacifist.app".  Pacifist is now loading the  "BaseSystem.dmg" package contents.
 
c.) Now click with the mouse on "usr" -> "standalone" -> "i386". After a right-click on apfs.efi, select "Extract to Custom Location...". Choose your Desktop as Destination. Answer the subsequent question "Extract apfs.efi ?" with "Extract". You now have the most actual version of apfs.efi on your Desktop.
 
d.) Note that the EFI-Folder EFI-X99-10.13.3-SA-Release-030218.zip contains a patched apsf.efi without verbose boot. The respective patching procedure and the related discussion can be derived by following THIS LINK. Credits to PMheart and ErmaC from InsanelyMac.
 
e.) If necessary (usually the /EFI/CLOVER/drivers64UEFI/ - directory of my distributed EFI-Folders already containsthe most actual apfs.efi version), copy the actual patched apfs.efi to the /EFI/CLOVER/drivers64UEFI/ - directories of your USB Flash Drive Installer and System Disk!
 
6.) To avoid boot problems and for sleep/wake functionality, it is absolute mandatory to have VoodooTSCSync.kext in the 
/EFI/CLOVER/kexts/Other/ directory of both USB Flash Drive and System Disk.
 
Please note that the linked VoodooTSCSync.kext.zip is configured for a 10-core CPU (12 threads) like the i7-6950X. To adopt the kext for Skylake-X processers with more or less than 10 cores, apply the following approach:
 
a.) Download and unzip the linked VoodooTSCSync.kext.zip to your desktop.
 
b.) Right-click with the mouse on the VoodooTSCSync.kext file and select "Show Packet Contents".
 
c.) Double-click with the mouse on /contents/ . After a right-click on the "Info.plist" file, select "Open with / Other". Select the TextEdit.app and edit the "Info.plist" file.
 
d.) Use the "find"-function of TextEdit.app and search for the term "IOCPUNumber"
 
e.) Note that the adequate IOCPUNumber for your particular Skylake-X processor is the number of its threads -1, by always keeping in mind that the number of it's threads is always 2x the number of it's cores.
 
Thus in case of the 10 core i7-6950X, the IOCPUNumber is 19 (20 threads - 1).
 
<key>IOCPUNumber</key>
<integer>19</integer>
 
By following this methodology, the correct IOCPUNumber for the 8-core i7-6900K would be (16 threads -1)
 
<key>IOCPUNumber</key>
<integer>15</integer>
 
and the IOCPUNumber for the 6-core i7-6800K would result in (12 threads -1)
 
<key>IOCPUNumber</key>
<integer>11</integer>
 
f.) After adopting the IOCPUNumber for your particular Skylake-X processor, save the info.plist file and copy the modified VoodooTSCSync.kext to the /EFI/CLOVER/kexts/Other/ - directories of both USB Flash Drive Installer and System Disk!
 
7.) Already during the last Beta Versions of macOS 10.13 High Sierra, Apple forced the beta users to use the new Apple file system APFS in case of a Clean Install/update of MacOS High Sierra 10.13. Also within macOS High Sierra 10.13.3 SA (17D102) this is the case.  Most APSF incompatibilities with available system related software apparently have been already removed. The actual version  of Carbon Copy Cloner (CCC) now supports the direct cloning of APFS system disks and hereby enables the previously missing option for APFS system backups. Until Boot-Loader Distribution Clover_v2.4k_r4210, it was also impossible to install the Clover Boot-Loader in the EFI-Partition of an APFS System Disk by means of the Clover Boot-Loader Installer Package. However, with any actual Clover Boot-Loader Distribution, the Clover Boot-Loader Installation works absolutely flawless on APFS System Disks.
 
Note that there is no way to convert an APFS disk back to HFS+ without the loss of all data, but one can easily reformat an APFS formatted disk to HFS+ under OSX by using either Apple's Disk Utility App or "diskutil" commands. All you need to do is to previously unmount the APFS volume before erasing it with a journaled HFS+ file system and a GRUB Partition Table (GTP). If you want to maintain the disk's content, perform a backup before erasing the disk with a HFS+ format.
 
The application of Apple's Disk utility is straight forward. The  "diskutil" equivalent is detailed below:
 
In the Terminal app, type:
 
diskutil list 

In the output which you can read by scrolling back, you will find all internal disks named /dev/disk0/dev/disk1, depending upon how many physical disks are present in your system.

 
Make a note of the disk identifier for the disk you intend to format (you can eliminate risk by removing all disks but the intended target).
 
In the Terminal app, type:
 
diskutil unmount /dev/diskX
 
where diskX is a place holder for the disk to be unmounted.
 

 

Subsequently, you can erase the entire disk with HFS+ and a GPT by typing the following terminal command:
 
diskutil partitionDisk /dev/diskX 1 GPT jhfs+ "iMacPro" R
 
where /dev/diskX is again a place holder for disk to be erased and iMacPro would be the label for the single partition created. The remaining 1 GPT jhfs+ and R arguments tell diskutil to create a single partition, within a GUID partition table, formatted as Journaled HFS+ and using the entire disk, respectively.
 

 

Alternatively one can also use the following terminal command:
 
diskutil partitionDisk /dev/diskX GPT JHFS+ iMacPro 0b
 
where /dev/diskX is again a place holder for disk to be erased and iMacPro is again the label for the disk partition created. The GPT HFFS+ and 0b arguments again tell diskutil to create a single partition, within a GUID partition table, formatted as Journaled HFS+ and covering the entire disk, respectively.
 

 

In the Terminal app, type now:
 
diskutil mount /dev/diskX
 
where diskX is again a place holder for the disk to be remounted.
 
Note, that by means of the "diskutil approach", brand new unformatted or not compatibly formatted system NVMe, SSD and HDD system drives can be also directly formatted within the macOS Clean Install procedure. When presented with the initial install screen where you are presented options to Restore From Backup or Install, select Terminal from the Utilities menu bar item;
 

 

The "diskutil" terminal approach is also able to convert a HFS+ macOS High Sierra 10.13 System Disk to APFS. To do so enter the following terminal command:
 
diskutil apfs convert /dev/diskX

where diskX is again a place holder for the HFS+ disk to be converted to APFS. The same procedure again can also be directly performed by means of Apple's Disk Utility.

 

If you opt for an APFS System Disk implementation, please note that all other disks on your system also should be formatted with APFS. On systems with APFS disks and non-APFS disks, the boot duration will increase, as apsf.efi will perform a fsck check of non-AFPS disks (like HFS+ or Fat32) during boot. However, dual boot APFS Systems with an NTFS Windows System Disk are not effected by the apsf.efi issue, as OSX does not know how to properly deal with NTFS. 

 

8.) To clearly get kernel panic images with a call trace in case of kernel panics, I implemented (checked) boot flags "debug=0x100" and "keepsyms=1" in the config.plist of EFI-X99-SA-10.13.3-Release-020318.zip in the "Boot" Section of Clover Configurator under "Arguments".

 
9.) Note that in the current EFI-X99-10.13.3-SA-Release-020318.zip distributions, I also removed CsmVideoDxe-64.efi from /EFI/CLOVER/drivers64UEFI, as the latter file is only required for proper Legacy screen resolution purposes with CSM enabled, which is definitely not  our case.
 
 
D.) MacPro macOS 10.13 High Sierra System Setup
 
Below, one finds a detailed description for the Clean Install of macOS High Sierra 10.13.3 (17D47) (D.4). This also includes the MacPro EFI-Folder Preparation (D.1) as well as the Mac Pro macOS High Sierra 10.13.3 (17D47) Full Package Download Procedure (D.2) and the Mac Pro macOS High Sierra 10.13.3 (17D47) USB Flash Drive Installer Creation (D.3). One also finds detailed instructions for the MacOS High Sierra update from earlier MacOS distributions as well as for future Mac Pro macOS High Sierra Update Procedures.
 
 
D.1) MacPro EFI-Folder Preparation
 
In order to successfully boot a macOS USB Flash Drive Installer or System Disk on a Hackintosh system, both drives must be equipped with an EFI-Folder in their EFI partitions. In this Section we will prepare a fully equipped EFI-Folder with SMBIOS MacPro6,1 System definition.
 
1.) Download and unzip EFI-X99-10.13.3-SA-Release-020318.zip and copy the therein contained EFI-Folder to your Desktop.
 
2.) Open the config.plist in /EFI/Clover/ with the latest version of Clover Configurator (>/= v.4.60.0), proceed to the "SMBIOS" Section and complete the SMBIOS MacPro6,1 Serial Number, Board Serial Number and SMUUID entries. These details are mandatory to successfully run iMessage and FaceTime on your iMac Pro System. Note that all other MacPro6,1 SMBIOS Details  are already implemented in the config.plist of EFI-X99-10.13.3-SA-Release-020318.zip.
 
In order to successfully run XCPM with Pike Alpha's ssdtPRGen.sh and ssdt.aml, you have to maintain the MacPro6,1 SMBIOS entries already implemented in the config.plist in the distributed EFI-Folder.
 
i.) Press several times the "Generate New" Button next to serial number text field. Copy the serial number and perform the serial number check on http://www.everymac.com/ultimate-mac-lookup/ by following @P1LGRIM's related instructions in "An iDiots's Guide To iMessage".
 
ii.) Also perform the serial number check on https://checkcoverage.apple.com by following @P1LGRIM's related instructions in "An iDiots's Guide To iMessage". If all checks have been past successfully, proceed to point iii.) below.
 
iii.) Note that the latest versions of Clover Configurator already correctly implements the Board Serial Number in parallel. Thus one can skip the related description in@P1LGRIM's "An iDiots's Guide To iMessage"
 
iv.) In the final step, open a terminal, enter repeatedly the command "uuidgen", and copy the output value to the SMUUID field in the "SMBIOS" Section of the Clover Configurator.
 
3.) Depending on your system configuration (Broadwell-E/EP or Haswell-E/EP) change or adopt the following settings if necessary:
 
a.) CPU "TYPE" in the "CPU" Section (obsolete with properly configured XCPM):
 
post-1362934-0-40783000-1516178973_thumb.png
 
Broadwell-E/EP CPU Type: "0x0a02"
 
Haswell-E/EP CPU Type:    "0x0a01"  (thanks to @nmano for his valuable feedback)
 
b.) "FakeCPUID" in the "Kernel and Kext Patches" Section (obsolete with properly configured XCPM):
 
post-1362934-0-66680100-1516179745_thumb.png

 

Broadwell-E/EP FakeCPUID: "0x040674"    (thanks to @GDS for his valuable feedback based on his XEON e5-2696v4)
 
Haswell-E/EP standard FakeCPUID: "0x0306F2"  (thanks to @nmano and @dragoonchang for their valuable feedback)
 
c.) "KernelToPatch" entries in the "Kernel and Kext Patches" Section:
 
post-1362934-0-59203100-1516179791_thumb.png

 

Broadwell-E/EP "xcpm_cpuid_set_info" and "xcpm_bootstrap":
 
Find:                            Replace:                           Comment:                                    MatchOS:
723cd077 500fb6c0                6a3cd077 500fb6c0                  xcpm_cpuid_set_info © Pike R. Alpha         10.13.x
89d804c4 3c227722                89d804c3 3c227722                  xcpm_bootstrap © Pike R. Alpha              10.13.x
 
Haswell-E/EP "xcpm_cpuid_set_info" and "xcpm_bootstrap":
 
Find:                            Replace:                           Comment:                                    MatchOS:
723cd077 500fb6c0                6f3cd077 500fb6c0                  xcpm_cpuid_set_info © Pike R. Alpha         10.13.x
89d804c4 3c227722                89d804c1 3c227722                  xcpm_bootstrap © Pike R. Alpha              10.13.x
 
Please note that Haswell-E processors in principle do not require the patching of the switch table used by "xcpm_cpuid_set_info". Apple already took care of it. One can therefor disable the xcpm_cpuid_set_info KernelToPatch entry for the latter processor architecture. If you encounter against all expectations problems during your XCPM configuration though, use the "xcpm_cpuid_set_info" entry provided above!
 
Note that the appropriate Xnu Cpu Power Management (XCPM) settings for each CPU architecture are once more addressed, discussed and finalized  in the Xnu Cpu Power Management (XCPM) Section of this guide below.
 
Finally save the modified config.plist.
 
3.) Copy the appropriate VoodooTSCSync.kext, which you modified by following error prevention C.7), to the /EFI/CLOVER/kexts/Other/ directory of the EFI-Folder.
 
You know have a fully equipped EFI-Folder for subsequent implementations as detailed below.
 
 
D.2) MacPro macOS High Sierra 10.13.3 (17D47) Installer Download Procedure

 

To derive the macOS 10.13.3 build 17D47 Full-Package Installer download the latter from the Mac App Store. The "Install macOS High Sierra.app" will be installed in your /Applications folder.

 

 

D.3) MacPro macOS High Sierra 10.13.3 (17D47) USB Flash Drive Installer Creation

 

Follow the individual steps detailed below to successfully create a bootable iMac Pro macOS High Sierra 10.13.3 (17D47) USB Flash Drive Installer.

 
1.) Format a USB Flash Drive of your choice (source, named USB) with HFS+ [(Mac OS Extended (Journaled)] and a GUID partition table by means of Apple's Disk Utility on any other Hackintosh or Mac of your choice. This will create an empty HFS+ Partition and a yet empty EFI-partition on your iMac Pro macOS USB Flash Drive Installer.
 
2.) With the iMac Pro macOS High Sierra 10.13.3 (17D47) Installer Package in your /Application Folder,  connect your USB Flash Drive (named USB) and run the following terminal command:
 
sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ High\ Sierra.app --nointeraction
 
Alternatively, one can create the iMac Pro macOS USB Flash Drive Installer also by means of the Install Disk Creator.app
 
4.) For successfully booting your Mac Pro macOS USB Flash Drive Installer, the latter must however also contain a valid EFI- Folder with an SMBIOS MacPro6,1 system definition. Thus, copy the EFI-Folder you prepared in Section D.1) to the yet empty EFI Partition of your Mac Pro macOS USB Flash Drive Installer.
 
You now have a fully functional and bootable iMac Pro macOS High Sierra 10.13.3 (17D47) USB Flash Drive Installer.
 
 
D.4) MacPro macOS High Sierra 10.13.3 (17D47) Clean Install on Broadwell-E/EP/Haswell-E/EP X99
 
Follow the individual steps detailed below to successfully setup macOS High Sierra 10.13.3 (17D47)  on a virgin system drive of your choice (NVMe, SSD or HDD).
 
1.) In order to perform a clean install of macOS High Sierra 10.13.3 (17D47), prepare a virgin NVMe, SDD or HDD destination drive for the iMac Pro macOS installation by formatting the drive with HFS+ [(Mac OS Extended (Journaled)] and a GUID partition table by means of Apple's Disk Utility on any other Hackintosh or Mac of your choice. This will create an empty HFS+ Partition and a yet empty EFI-partition on the drive.
 
2.) Copy the EFI-Folder you prepared in Section D.1) to the yet empty EFI Partition.
 
3.) Now connect the Destination Drive to your Hackintosh System and boot the latter with the plugged Mac Pro macOS High Sierra 10.13.3 (17D47) USB Flash Drive Installer, your created in Section D.2)
 
4.) While booting your system, press the F8 button to enter the BIOS boot menu. Select to boot from your iMac Pro macOS USB Flash Drive Installer.
 
5.) Subsequently, click on the USB Flash Drive Installer Icon in the clover boot menu to boot the respective macOS Installer partition on your iMac Pro macOS USB Flash Drive Installer.
 
6.) After successful boot, pass the individual steps of the macOS high Sierra 10.13 installation menu and finally select the destination drive of your macOS High Sierra 10.13 Installation, which should be logically the system disk you successfully configured above. In the next step, the Installer will create a macOS High Sierra 10.13 Installer Partition on the system disk and subsequently reboot your system.
 
7.) During system reboot, just press again the F8 button to enter the BIOS boot menu. Select again to boot from your USB Flash Drive. In contrary to 6.), click this time on the "Install MacOS.." Icon in the clover boot screen to boot the newly created macOS High Sierra 10.13 Installer Partition on your system disk.
 
8.)After successful boot, you will enter now the macOS High Sierra 10.13 Installer Screen with a progress bar starting at 34 minutes.
 
9.) After another reboot, press again the F8 button to enter the BIOS boot menu. Select to boot with your System Disk EFI-folder. Click on the "MacOS High Sierra" icon in the clover boot screen to boot the updated macOS High Sierra 10.13 partition on your system disk.
 
10.) After successful boot you will enter again the macOS High Sierra 10.13 Installer Screen with a progress bar starting at 18 minutes. After successfully registration at iCloud at the end of the macOS installation, you now have your first
Mac Pro macOS High Sierra 10.13.3 (17D47) build.
 
Proceed to Section E.) - Post Installation Process.
 
 
D.5) macOS High Sierra Update from earlier macOS distributions as well as future MacPro macOS High Sierra Update Procedures
 
1.) Backup you current system disk EFI-Folder.
 
2.) Copy the EFI-Folder prepared in D.1) to the EFI-Partition of your System Disk
 
3.) If you intent to update a previous macOS High Sierra Installation, just proceed with the standard MacOS Appstore procedure, indicated by the red circle on the Appstore Icon directly from your system disk. If you intent to update from macOS Sierra 10.12.6, download the macOS High Sierra Full Package Installer as described in D.2) and double-click on the "Install MacOS High Sierra.app" in your /Applications folder. 
 
4.) After reboot, click on the "Install MacOS.." Icon in the clover boot screen to boot the newly created macOS High Sierra 10.13 Installer Partition on your system disk.
 
5.) After successful boot, you will enter now the macOS High Sierra 10.13 Installer Screen with a progress bar starting at 43 minutes.

6.) After another reboot, click on the "MacOS High Sierra" icon in the clover boot screen to boot the updated macOS High Sierra 10.13 partition on your system disk.

7.) After successful boot you will enter again the macOS High Sierra 10.13 Installer Screen with a progress bar starting at 18 minutes. After successfully registration at iCloud at the end of the macOS installation, you now have your most actual Mac Pro macOS High Sierra 10.13 build.
 
8.) After finishing the macOS Upgrade, proceed to Section Graphics Configuration. Download and update the Nvidia 10.13 Web Driver compatible with your current macOS High Sierra 10.13 distribution.
 
9.) Now proceed to the Section "Xnu CPU Power Managment XCPM" below, and re-inject the frequency vector to your Mac- F60DEB81FF30ACF6.plist. Note that the latter file has been rewritten during the macOS High Sierra upgrade! If you are using EIST and PMDrvr.kext, add the latter to your EFI directory! It is not part of EFI-X99-10.13.3-SA-Release-020318.zip!
 
You are done!
 
The same update procedure will also apply for all future macOS High Sierra 10.13 releases.
 
 
E.) Post Installation Process
 
By following the individual steps listed below, you will gain an absolutely stable and fully functional system.
 
E.1) Graphics Configuration
 
ATI graphics cards startup solutions like the Gigabyte Radeon RX 560 or RX 580 just require two basic kexts in the /EFI/Clover/kexts/Other/ directory of the EFI folders on both USB Flash Drive Installer and 10.13 System Disk , i.e. namely the  WhateverGreen.kext v1.1.4 and the Lilu.kext v1.2.2.
 
ATI Radeon Vega 64 and Frontier users should have full native support under macOS High Sierra 10.13. These GPUs run Out of Box and do not require any additional tools or measurements like Whatevergreen.kext or Lilu.kext
 
Also Nvidia Kepler Cards are also natively implemented.
 
Since the final release of macOS 10.13, there is now also official Nvidia Web Driver Support for Nvidia Pascal and Maxwell graphics cards also under macOS High Sierra 10.13! Users reported lagging UI issues with the most recent Nvidia Web Drivers for 10.13.3 (17D47) and 10.13.3 SA (17D102) when using Maxwell GPUs, while this Web Driver seems to work flawless with Pascal GPUs. Maxwell GPU Users can alternatively use the WebDriver for macOS 10.13.2 SA  after the simple patching procedure detailed blow. 10.13.4 Beta 3 users can either use the WebDriver for 10.13.3 SA or 10.13.2 SA after the simple patching procedure detailed below.
 
How to patch the WebDriver:
 
Download the Nvidia WebDriver-Payload Repackager from InsanelyMac. Credits to Chris111 and Pavo. 
 
The patch procedure is simple and fully described in the implemented Readme.txt and will reveal a Repackaged-WebDriver.pkg, which can be used for the Nvidia Web Driver Installation by all Maxwell GPU users or all users on 10.13.4 Public Beta 3.
 
Nvidia Web Driver Installation and Black Screen Prevention:
 
As we do use SMBIOS macPro6,1, we MUST implement some way of subverting AppleMobileFileIntegrity banning the driver before performing the Nvidida Web Driver Installation!
 
Important Note: if you ever tried before a Black Screen Prevention by means of the NVWebDriverLibValFix.kext v1.0.0 in /EFI/CLOVER/kexts/Other/, remove the latter file from the latter directory! Note that NVWebDriverLibValFix.kext is now already implemented in NvidiaGraphicsFixup.kext v1.2.1! If you apply the content of the primer kext twice, you will end up in a boot loop!
 
a.) Copy NvidiaGraphicsFixup.kext v1.2.1 and Lilu.kext v1.2.2 to the /EFI/CLOVER/kexts/Other/ directory in the EFI-Partition of your System Disk.
 
b.) Install now the original or patched Nvidia 10.13 Web Driver Package.
 
c.) Now reboot as requested by the Nvidia Web Driver Installer. All users who installed the official NVIDIA Web Driver Package will already have fully functional Web Driver.
 
post-1362934-0-57001100-1516180748_thumb.png

 

d.) All Maxwell GPU 10.13.3 SA (17D102) and 10.13.4 Beta 3 users still have to perform the following additional steps after installing the respective patched Nvidia Web Driver:

 
i.) Copy /L/E/ NVDAStartupWeb.kext to your Desktop.
 
ii.) Right-click on NVDAStartupWeb.kext and select show package content.
 
iii.) Change to "Contents" and edit the "Info.plist" with Xcode.
 
iv.) Go to IOKitPersonalities -> NVDAStartup -> change "NVDARequiredOS" from "17C205" or "17D102" to "17D102" or to the respective 10.13.4 beta build number.
 
v.) Save "Info.plist" and copy the modified "NVDAStartupWeb.kext" to /L/E/ with root permission.
 
vi.) Open a terminal and enter the following commands:
 
sudo chmod -R 755 /Library/Extensions/NVDAStartupWeb.kext
sudo chown -R root:wheel /Library/Extensions/NVDAStartupWeb.kext
sudo touch /System/Library/Extensions && sudo kextcache -u /
sudo touch /Library/Extensions && sudo kextcache -u /
 
vii.) Reboot.
 
viii.) The Web Driver will not be active yet. Therefore, open the Nvidia Driver Manager and select "Nvidia Web Driver".

 

ix.) Reboot and you have a fully functional WEB Driver also for Maxwell 10.13.3 SA (17D102) or 10.13.4 public beta 3.
 
 
E.2) Audio Configuration:
 
My distributed EFI folder contains a fully functional AppleALC audio configuration. If however this audio configuration does not work in your case, perform the following steps listed below.
 
1.) Download the latest version of the AppleALC.kext from Github (actually AppleALC.kext v1.2.1) and copy it to the "/EFI/CLOVER/kexts/Other/"-directory of your 10.13 System Disk. Note however that the latter kext is already part fo the EFI-Folder implemented in EFI-X99-10.13.3-SA-Release-020318.zip.
 
2.) Download the latest version of Lilu.kext from Github (actually Lilu.kext v1.2.2) and copy it to the "/EFI/CLOVER/kexts/Other/"-directory of your 10.13 System Disk. Note however that the latter kext is already part fo the EFI-Folder implemented in EFI-X99-10.13.3-SA-Release-020318.zip.
 
3.) Download the latest version of codeccommander.kext from Github and copy it to the "/EFI/CLOVER/kexts/Other/"-directory
of your 10.13 System Disk. Note however that the latter kext is already part fo the EFI-Folder implemented in EFI-X99-10.13.3-SA-Release-020318.zip.
 
4.) Open your config.plist with the Clover Configurator and add the following "DSDT patch" in the "ACPI section":
 
Comment:                Find:           Replace:

Rename ALZA to HDEF     414c5a41        48444546
 
Furthermore, Inject Audio ID "1" in the Section "Devices" and save your config.plist
 
5.) After reboot you should now have a perfectly working analogue audio configuration. Under "System Preferences" and "Audio" select "Internal Speakers" for the Analogue Audio Output and you are done.
 
6.) Note that all users of the ASUS X99 A-II and ASUS X99 Deluxe II with a Nvidida GPU in PCIe Slot 0, can download and use the SSDT-HDMI.aml to enable HDMI/DP Audio. All users of mobos different from the primer mobos or with the GPU in a PCIe Slot different from PCIe Slot 0 will have to modify the latter aml-file by means of the MaciASL-DSDT.app and the IORegistryExplorer.app. Also note, that all users with NvidiaGraphicsFixup.kext v1.2.1 in their /EFI/CLOVER/kexts/Other/ directory, will have HDMI/DP Audio output enabled without any additional aml-file. Further note, that at least on the Gigabyte Aorus Geforce GTX 1080 Ti 11GB Extreme Edition, HDMI/DP Audio only works when connecting your monitor with the second Display Port connector from the left.
 
7.) After another reboot you should have a fully functional analogue and digital audio configuration with the control panel and system implementation displayed below.
 
Control Panel implementation:
 
post-1362934-0-04201500-1516181242.png
 
Audio System report:
 
post-1362934-0-42193900-1516181254_thumb.png
 
 
E.3) USB Configuration
 
The EFI-Folder implemented in EFI-X99-10.13.3-SA-Release-020318.zip, contains a fully functional USB configuration, which consists of the following implementations:

1.) the "X99_Injector USB 3.kext" in the /EFI/CLOVER/kexts/Others/ directory of your hopefully successfully configured and completed 10.13 system test drive.

2.) the 10.13 AppleUSBXHCIPCI KextsToPatch entry in the "Kernel and Kext Patches" section of the clover configurator:

Name:                  Find:            Replace:       Comment:                   
AppleUSBXHCIPCI        837d8c10         837d8c19       USB port limit patch

3.) the following USB settings in the "Device" section of the Clover Configurator: "Inject", "Add ClockID", "FixOwnership" - checked; "HighCurrent" - unchecked.

 
4.) also remember the correct BIOS settings:
  • XHCI Mode Smart Auto
  • XHCI Hand-Off Enabled
  • EHCI Hand-Off Enabled
As already in macOS Sierra 10.12, with the above USB configuration, also in macOS High Sierra 10.13 all USB2 and USB3 ports are initialized and work fine. USB2 in USB2, USB3 in USB3, USB2 in USB3 and USB3 in USB2. However, there is a tiny cosmetic error. If one looks to Apple's system report, in principle the USB2.0 Bus, USB3.0 Bus and USB 3.1 Bus are implemented correctly. However, all connected devices independently form being USB2.0, USB3.0 and USB3.1 are assigned to the USB 3.0 Bus.
 
post-1362934-0-01736900-1516181511_thumb.png

 

Alternative USB Configuration - board-specific XHC USB Kexts
 
Alternatively to the above USB configuration, all ASUS X99-A II owners can use the novel and innovative XHC USB Kext developed with @DSM2 in the /EFI/CLOVER/kexts/Other/ directory of their USB Flash Drive Installer or 10.13 System Disk. Recently, @kingkong89 confirmed full compatibility of this latter XHC USB Kext with the ASUS X99 DELUXE II (identical XHC USB port-configuration).
 
For this novel kext approach approach, download, unzip and copy the XHC USB Kext contained in DSM2-ASUS-X99-A-II-USB.kext.zip to the /EFI/Clover/kexts/Other/-directory in the EFI-Folder of your 10.13 System Disk. In  parallel, remove the  "X99_Injector USB 3.kext" from the latter directory and reboot.
 
Finally note, that also the USB BIOS settings have to be slightly modified:
  • XHCI Mode Enabled
  • XHCI Hand-Off Enabled
  • EHCI Hand-Off Enabled
Within the latter approach, all internal and external USB2.0 and USB 3.0 ports on the ASUS X99-A II and ASUS X99 DELUXE II will be correctly implemented and reveal the expected data rates.
 

 

All owners of mainboards different from the ASUS X99-A II and ASUS X99 DELUXE II, can create their own board-specific XHC USB Kext by following the detailed XHC USB Kext creation guidelines that I provide in another forum.

 

 

E.4) M.2/NVME Configuration

 

In contrary to macOS Sierra 10.12, macOS High Sierra 10.13 provides native support of non-4Kn NVMe SSDs, like my Samsung EVO 960 M.2/NVMe. All patches applied under macOS Sierra 10.12 are now obsolete. The native support of non-4Kn NVMe SSDs enables the unique opportunity to directly perform a clean-install of macOS High Sierra 10.13 on M.2 NVMEs like the Samsung EVO 960.

 
The only current drawback consists in the external drive implementation of NVMEs. This minor issue should be easily solved by adding the actual External NVME Icon KextToPatch entry to the config.plist by means of the Clover Configurator.
 
Name*            Find* [HEX]           Replace* [HEX]        Comment                      
IONVMeFamily     4885c074 07808b20     4885c090 90808b20     External NVME Icon Patch     
 
Not however, that already in earlier beta versions and also now within the macOS High Sierra 10.13.3 SA (17D102) distribution,  this approach does not seem to work anymore, despite the actual KextToPatch entry above! If you still have your NVMe implemented in form of an external drive you have to perform the following workaround, detailed below.
 
1.) Disable the not working External NVME Icon KextToPatch entry.
 

 

2.) Open the IORegistryExplorer, in the upright search field type nvme and take not of values in the left column, i.e. indicated as v.1, v.2 and v.3 and marked by red rectangles in the figure below. As you can see by following these entries, your nvme device shows up in PCI0@0 > BR1B@1,1 > H000@0
 
post-1362934-0-13744500-1516182163_thumb.png
 
3.) Download and unzip the SSDT-NVMe-extern-icon-patch.aml.zip, and open the SSDT-NVMe-extern-icon-patch.aml with MaciASL-DSDT.app, which is linked here in addition. For deviating system configurations, replace the values highlighted in blue color in the figure below with those of your IOReg, marked by red rectangles and indicated by v.1, v.2 and v.3 in the figure of my IOReg above.
 
post-1362934-0-19302600-1516182324_thumb.png
 
4.) Save and copy the modified SSDT-NVMe-extern-icon-patch.aml to the /EFI/CLOVER/ACPI/patched/ folder of your system drive.
 
5.) Reboot
 
Now your NVMe drive should correctly show up as internal.
 
post-1362934-0-41437200-1516182374_thumb.png
 
post-1362934-0-38731200-1516182383_thumb.png

 

 

E.5) SSD TRIM Support

 

Macs only enable TRIM for Apple-provided solid-state drives they come with. If you upgrade a Mac with an aftermarket SSD, the Mac won’t use TRIM with it. The same applies for SSD's used by a Hackintosh. When an operating system uses TRIM with a solid-state drive, it sends a signal to the SSD every time you delete a file. The SSD knows that the file is deleted and it can erase the file’s data from its flash storage. With flash memory, it’s faster to write to empty memory — to write to full memory, the memory must first be erased and then written to. This causes your SSD to slow down over time unless TRIM is enabled. TRIM ensures the physical NAND memory locations containing deleted files are erased before you need to write to them. The SSD can then manage its available storage more intelligently.

 
Note that the config.plist in the EFI folder of EFI-X99-10.13.3-SA-Release-020318.zip contains an SSD "TRIM Enabler" KextsToPatch entry, which can be found  in the " Kernel and Kext Patches" Section of the Clover Configurator.
 
post-1362934-0-94155800-1516182783_thumb.png

 

Name*                   Find*[HEX]                 Replace*[HEX]              Comment  
IOAHCIBlockStorage      4150504c 45205353 4400     00000000 00000000 0000     Trim Enabler      
 
With this KextToPatch entry, SSD TRIM is fully enabled on your 10.13 System, see Apple's System Report below.
 
post-1362934-0-64045000-1516182831_thumb.png

 

E.6) Xnu CPU Power Management (XCPM) Configuration

 
The EFI folder of EFI-X99-10.13.3-SA-Release-020318.zip already contains a nearly fully functional XCPM configuration for the i7-6950X Broadwell-E CPU, which needs to be finalized (yet missing injection of frequency vector) and adopted for other CPU configurations (Broadwell-E/EP different from i7-6950X, Haswell-E).
 
Before finalizing, adapting or tuning the XCPM configuration, verify the following BIOS settings:
  • Advanced\CPU Configuration\CPU Power Management Configuration\
  • Enhanced Intel SpeedStep Technology (EIST): Disabled
  • Turbo mode: Enabled
  • CPU C-State: Enabled
  • Enhanced C1 State: Enabled
  • CPU C3 Report: Enabled
  • CPU C6 Report: Enabled
  • Package C State Limit: C6(non Retention) state
Subsequently, follow the individual steps below.
 
1.) Verify that your System ID is MacPro 6.1
 
2.) Open the config.plist of your 10.13 test drive and revise the  "Kernel and Kext Patches" Section.
 
post-1362934-0-02024100-1516183349_thumb.png
 
Find:                                                               Replace:                                                              Comment:
72 3cd07750 0fb6c0                                                  6a 3cd07750 0fb6c0                                                    xcpm_cpuid_set_info © Pike R. Alpha
89d804c4 3c227722                                                   89d804c3 3c227722                                                     xcpm_bootstrap © Pike R. Alpha
554889E5 41574156 41554154 53504189 D64889FB 85F60F84 84000000      C39089E5 41574156 41554154 53504189 D64889FB 85F60F84 84000000        xcpm_program_msrs © Pike R. Alpha
be070000 0031d2e8 8ffcffff                                          be070000 0031d290 90909090                                            xcpm_pkg_scope_msrs © Pike R. Alpha
be0b0000 005de908 000000                                            be0b0000 005dc390 909090                                              xcpm_SMT_scope_msrs © Pike R. Alpha
be030000 0031d2e8 72fcffff                                          be030000 0031d290 90909090                                            xcpm_core_scope_msrs © Pike R. Alpha
b9e20000 000f30                                                     b9e20000 009090                                                       xcpm_idle_wrmsr © Pike R. Alpha
4885c074 07808b20                                                   4885c090 90808b20                                                     External NVMe FIX 
07000000 31d2e88f fcffff                                            07000000 31d29090 909090                                              10.13 Installer/Updater essential
 
Verify for Broadwell-E/EP and modify for Haswell-E/EP the "xcpm_cpuid_set_info" and "xcpm_bootstrap"  KernelToPatch entries for Broadwell-E/EP. Note that I actually do not use the "xcpm_program_msrs" and "xcpm_core_scope_msrs" KernelToPatch entries (disabled), as they seem to disable C3 states! Note that the "xcpm_program_msrs" entry was previously erroneously called "xcpm_reboot_fix". Please note that the above KernelToPatch configuration considers a patched ASUS mobo-BIOS with unlocked MSR 0xE2 register ("xcpm_idle_wrms" KernelToPatch entry disabled). With locked MSR 0xE2 register, you might have to enable "xcpm_idle_wrms". By the way, note that ASUS mainboard owners can uncheck "KernelPM", yet checked for the general use of my EFI-Folder also with mainboards different from ASUS. Further note that I also disabled the external NVMe FIX, as it currently does not seem to work within the latest implementations of macOS High Sierra 10.13, despite the fact that this KernelToPatch entry is correctly implemented. Finally note that the "10.13 Installer/updater essential" KernelToPatch entry seems to be required for successful booting an macOS High Sierra 10.13 Flash Drive Installer, which needs to be created in the frame of the 10.13 macOS High Sierra Update or Clean Install.
 

 

Here are the necessary modifications for the Haswell-E CPU architecture:
 
Find:                            Replace:                           Comment:
723cd077 500fb6c0                6f3cd077 500fb6c0                  xcpm_cpuid_set_info © Pike R. Alpha
89d804c4 3c227722                89d804c1 3c227722                  xcpm_bootstrap © Pike R. Alpha
 
Please note that Haswell-E processors in principle do not require the patching of the switch table used by "xcpm_cpuid_set_info". Apple already took care of it. One can therefor disable the xcpm_cpuid_set_info KernelToPatch entry for the latter three processor architectures. If you encounter against all expectations problems during your XCPM configuration though, use the "xcpm_cpuid_set_info" entry provided above! 
 

 

Many thanks to @PMheart from the InsanelyMac Forum for providing the correct 10.13 XCPM KernelToPatch entries for Broadwell-E! Many thanks to @nmano for providing the correct 10.13 XCPM KernelToPatch entries for Haswell-E!
 
3.) Reboot
 
4.) Verify with the terminal command "sysctl machdep.xcpm.mode" if the XCPM mode is active. If so,
"sysctl machdep.xcpm.mode" should return "1".
 
5.) Download the latest Piker-Alpha's ssdtPRGen.sh distribution from Github.
 
6.) Drop ssdtPRGen.sh into a terminal and add the following parameters to also enable turbo frequencies ( in my case in linewith an OC of 4400 Mhz.
 
./ssdtPRGen.sh  -turbo 4400

Result:

ssdtPRGen.sh v0.9  Copyright (c) 2011-2012 by † RevoGirl
             v6.6  Copyright (c) 2013 by † Jeroen
             v21.5 Copyright (c) 2013-2017 by Pike R. Alpha
-----------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/ssdtPRGen.sh/issues <

System information: Mac OS X 10.13 (17A306f)
Brandstring: "Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz"

Override value: (-turbo) maximum (turbo) frequency, now using: 4400 MHz!

Version: models.cfg v170 / Broadwell.cfg v151


Generating ssdt.dsl for a 'MacPro6,1' with board-id [Mac-F60DEB81FF30ACF6]
Broadwell Core i7-6950X processor [0x406F1] setup [0x0a02]
With a maximum TDP of 140 Watt, as specified by Intel
Number logical CPU's: 20 (Core Frequency: 3000 MHz)
Number of Turbo States: 12 (3100-4400 MHz)
Number of P-States: 31 (1200-4400 MHz)
Injected C-States for CP00 (C1,C3,C6)
Injected C-States for CP01 (C1,C3,C6)
Warning: 'system-type' may be set improperly (1 instead of 3)
     - Clover users should read https://clover-wiki.zetam.org/Configuration/ACPI#acpi_smartups
Compiling: ssdt_pr.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20140926-64 [Nov  6 2014]
Copyright (c) 2000 - 2014 Intel Corporation

ASL Input:     /Users/kgp/Library/ssdtPRGen/ssdt.dsl - 467 lines, 13569 bytes, 144 keywords
AML Output:    /Users/kgp/Library/ssdtPRGen/ssdt.aml - 3706 bytes, 64 named objects, 80 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations
 
 
7.) Copy the SSDT.aml from ~/Library/ssdtPRGen/ to /EFI/CLOVER/ACPI/patched/. Please find here a link to a fully working SSDT.aml sample file for the i7-6950X.
 
Important note: if your CPU is unsupported, ssdtPRGen.sh will fail in creating the SSDT.aml. Go to the ~/Library/ssdtPRGen/ folder, open the "Data " folder, and open "User Defined.cfg" with text wrangler. Add your cpu parameters, save the "User Defined.cfg" and redo steps 6.) and 7.)
 
8.) Reboot

 

9.) a.) Verify that in the ioRegistryExplorer you have now under CP00@0 the following entry:
 
Property:         Type:         Value:
plugin-type       Number        0x1

b.) Verify with the terminal command

kextstat|grep -y x86plat

that the "X86PlatformPlugin.kext" is now loaded. If the command returns something like

112    1 0xffffff7f822bc000 0x17000    0x17000    com.apple.driver.X86PlatformPlugin (1.0.0) FD88AF70-3E2C-3935-99E4-C48669EC274B <111 19 18 13 11 7 6 5 4 3 1>
 146    1 0xffffff7f822d3000 0x7000     0x7000     com.apple.driver.X86PlatformShim (1.0.0) DCEA94A4-3547-3129-A888-E9D5C77B275E <112 111 13 7 4 3>
 
you are fine.
 

 

c.) Verify with the terminal command
 
kextstat|grep -y appleintelcpu

that you got now rid of the Apple Intel CPU power management. If the result is empty you are fine.

 

10.) Download and run Piker-Alpha's latest  freqVectorsEdit.sh distribution to add missing FrequencyVectors to Mac-F60DEB81FF30ACF6.plist, which os located in:

System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources

To do so, you have to choose some other plist-file from the drop-list

freqVectorsEdit.sh v3.1 Copyright (c) 2013-2017 by Pike R. Alpha.
-----------------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/freqVectorsEdit.sh/issues <

Available resource files (plists) with FrequencyVectors:

[  1 ] Mac-031B6874CF7F642A.plist (iMac14,1)
[  2 ] Mac-06F11F11946D27C5.plist (MacBookPro11,5)
[  3 ] Mac-06F11FD93F0323C5.plist (MacBookPro11,4)
[  4 ] Mac-189A3D4F975D5FFC.plist (MacBookPro11,1)
[  5 ] Mac-27ADBB7B4CEE8E61.plist (iMac14,2)
[  6 ] Mac-2BD1B31983FE1663.plist (MacBookPro11,3)
[  7 ] Mac-35C1E88140C3E6CF.plist (MacBookAir6,1)
[  8 ] Mac-35C5E08120C7EEAF.plist (Macmini7,1 @ 2700)
[  9 ] Mac-3CBD00234E554E41.plist (MacBookPro11,2)
[ 10 ] Mac-42FD25EABCABB274.plist (iMac15,1)
[ 11 ] Mac-473D31EABEB93F9B.plist (MacBookPro13,1 @ 3100 HWP/3400 HWP)
[ 12 ] Mac-4B682C642B45593E.plist (Unknown Model)
[ 13 ] Mac-4BFBC784B845591E.plist (Unknown Model)
[ 14 ] Mac-50619A408DB004DA.plist (Unknown Model)
[ 15 ] Mac-551B86E5744E2388.plist (MacBookPro14,3 @ 3800 HWP/3900 HWP/4100 HWP)
[ 16 ] Mac-65CE76090165799A.plist (iMac17,1)
[ 17 ] Mac-66E35819EE2D0D05.plist (MacBookPro13,2 @ 3300 HWP/3500 HWP/3600 HWP)
[ 18 ] Mac-77EB7D7DAF985301.plist (iMac14,3)
[ 19 ] Mac-77F17D7DA9285301.plist (Unknown Model)
[ 20 ] Mac-7BA5B2D9E42DDD94.plist (Unknown Model)
[ 21 ] Mac-7DF21CB3ED6977E5.plist (MacBookAir6,2)
[ 22 ] Mac-81E3E92DD6088272.plist (iMac14,4)
[ 23 ] Mac-90BE64C3CB5A9AEB.plist (Unknown Model @ 3000/3200/3600)
[ 24 ] Mac-937CB26E2E02BB01.plist (MacBookAir7,2 @ 2700/3200)
[ 25 ] Mac-9AE82516C7C6B903.plist (MacBook9,1 @ 2200 HWP/2700 HWP/3100 HWP)
[ 26 ] Mac-9F18E312C5C2BF0B.plist (MacBookAir7,1 @ 2700/3200)
[ 27 ] Mac-A369DDC4E67F1C45.plist (iMac16,1)
[ 28 ] Mac-A5C67F76ED83108C.plist (MacBookPro13,3 @ 3500 HWP/3600 HWP/3800 HWP)
[ 29 ] Mac-B4831CEBD52A0C4C.plist (MacBookPro14,1 @ 3400 HWP/4000 HWP)
[ 30 ] Mac-B809C3757DA9BB8D.plist (iMac17,1)
[ 31 ] Mac-BE088AF8C5EB4FA2.plist (Unknown Model)
[ 32 ] Mac-BE0E8AC46FE800CC.plist (MacBook8,1 @ 2400/2600/2900)
[ 33 ] Mac-CAD6701F7CEA0921.plist (MacBookPro14,2 @ 3500 HWP/3700 HWP/4000 HWP)
[ 34 ] Mac-CF21D135A7D34AA6.plist (Unknown Model @ 3000/3200/3600)
[ 35 ] Mac-DB15BD556843C820.plist (iMac17,1)
[ 36 ] Mac-E43C1C25D4880AD6.plist (MacBookPro12,1)
[ 37 ] Mac-EE2EBD4B90B839A8.plist (Unknown Model @ 3000 HWP/3200 HWP/3600 HWP)
[ 38 ] Mac-F305150B0C7DEEEF.plist (Unknown Model @ 2400/2600/2900)
[ 39 ] Mac-F60DEB81FF30ACF6.plist (MacPro6,1)
[ 40 ] Mac-FA842E06C61E91C5.plist (iMac15,1)
[ 41 ] Mac-FFE5EF870D7BA81A.plist (iMac16,2)

Please choose the desired plist for your hardware (Exit/1-41) ?

like e.g.

[ 35 ] Mac-DB15BD556843C820.plist (iMac17,1)
 
which does have well defined frequencies.
 
 
11.) Reboot

 

12.) To verify that the new Frequency-Vectors from Mac-F60DEB81FF30ACF6.plist are now loaded, use the following terminal command:
 
sysctl -n machdep.xcpm.vectors_loaded_count
 
If "0" is returned, then the FrequencyVectors are still missing or are not being used at present. If everything is ok, the command returns "1".
 
13.) To verify your new Power Management, download Piker Alpha’s AppleIntelInfo.kext from Github. To compile the source code, you need to primarily install Xcode (Appstore) and Xcode Command Line Tools! This guideline might be helpful for the  successfully installation of the latter.
 

 

Now enter the following terminal commands:
 
cd ~/Downloads/AppleIntelInfo-master
xcodebuild
cd build/Release
chmod -R 755 AppleIntelInfo.kext
sudo chown -R root:wheel AppleIntelInfo.kext

Load the AppleIntelInfo.kext with "kextload" and "cat" the info-results with the following terminal commands:

sudo kextload AppleIntelInfo.kext
sudo cat /tmp/AppleIntelInfo.dat

The cat command should reveal something like the following result:

AppleIntelInfo.kext v2.5 Copyright © 2012-2017 Pike R. Alpha. All rights reserved.

Settings:
------------------------------------------
logMSRs..................................: 1
logIGPU..................................: 0
logCStates...............................: 1
logIPGStyle..............................: 1
InitialTSC...............................: 0x11d3a1760ecb2 (10453 MHz)
MWAIT C-States...........................: 8480

Processor Brandstring....................: Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz

Processor Signature..................... : 0x406F1
------------------------------------------
 - Family............................... : 6
 - Stepping............................. : 1
 - Model................................ : 0x4F (79)

Model Specific Registers (MSRs)
------------------------------------------

MSR_CORE_THREAD_COUNT............(0x35)  : 0x0
------------------------------------------
 - Core Count........................... : 10
 - Thread Count......................... : 20

MSR_PLATFORM_INFO................(0xCE)  : 0x20080C3BF3811E00
------------------------------------------
 - Maximum Non-Turbo Ratio.............. : 0x1E (3000 MHz)
 - Ratio Limit for Turbo Mode........... : 1 (programmable)
 - TDP Limit for Turbo Mode............. : 1 (programmable)
 - Low Power Mode Support............... : 1 (LPM supported)
 - Number of ConfigTDP Levels........... : 1 (additional TDP level(s) available)
 - Maximum Efficiency Ratio............. : 12
 - Minimum Operating Ratio.............. : 8

MSR_PMG_CST_CONFIG_CONTROL.......(0xE2)  : 0x1E000005
------------------------------------------
 - I/O MWAIT Redirection Enable......... : 0 (not enabled)
 - CFG Lock............................. : 0 (MSR not locked)
 - C3 State Auto Demotion............... : 1 (enabled)
 - C1 State Auto Demotion............... : 1 (enabled)
 - C3 State Undemotion.................. : 1 (enabled)
 - C1 State Undemotion.................. : 1 (enabled)
 - Package C-State Auto Demotion........ : 0 (disabled/unsupported)
 - Package C-State Undemotion........... : 0 (disabled/unsupported)

MSR_PMG_IO_CAPTURE_BASE..........(0xE4)  : 0x10414
------------------------------------------
 - LVL_2 Base Address................... : 0x414
 - C-state Range........................ : 1 (C-States not included, I/O MWAIT redirection not enabled)

IA32_MPERF.......................(0xE7)  : 0xACF485063
IA32_APERF.......................(0xE8)  : 0xB96AC7BB7
MSR_0x150........................(0x150) : 0x0

MSR_FLEX_RATIO...................(0x194) : 0xE0000
------------------------------------------

MSR_IA32_PERF_STATUS.............(0x198) : 0x204900001E00
------------------------------------------
 - Current Performance State Value...... : 0x1E00 (3000 MHz)

MSR_IA32_PERF_CONTROL............(0x199) : 0x2A00
------------------------------------------
 - Target performance State Value....... : 0x2A00 (4200 MHz)
 - Intel Dynamic Acceleration........... : 0 (IDA engaged)

IA32_CLOCK_MODULATION............(0x19A) : 0x0

IA32_THERM_INTERRUPT.............(0x19B) : 0x0

IA32_THERM_STATUS................(0x19C) : 0x883D0000
------------------------------------------
 - Thermal Status....................... : 0
 - Thermal Log.......................... : 0
 - PROCHOT # or FORCEPR# event.......... : 0
 - PROCHOT # or FORCEPR# log............ : 0
 - Critical Temperature Status.......... : 0
 - Critical Temperature log............. : 0
 - Thermal Threshold #1 Status.......... : 0
 - Thermal Threshold #1 log............. : 0
 - Thermal Threshold #2 Status.......... : 0
 - Thermal Threshold #2 log............. : 0
 - Power Limitation Status.............. : 0
 - Power Limitation log................. : 0
 - Current Limit Status................. : 0
 - Current Limit log.................... : 0
 - Cross Domain Limit Status............ : 0
 - Cross Domain Limit log............... : 0
 - Digital Readout...................... : 61
 - Resolution in Degrees Celsius........ : 1
 - Reading Valid........................ : 1 (valid)

MSR_THERM2_CTL...................(0x19D) : 0x0

IA32_MISC_ENABLES................(0x1A0) : 0x850089
------------------------------------------
 - Fast-Strings......................... : 1 (enabled)
 - FOPCODE compatibility mode Enable.... : 0
 - Automatic Thermal Control Circuit.... : 1 (enabled)
 - Split-lock Disable................... : 0
 - Performance Monitoring............... : 1 (available)
 - Bus Lock On Cache Line Splits Disable : 0
 - Hardware prefetch Disable............ : 0
 - Processor Event Based Sampling....... : 0 (PEBS supported)
 - GV1/2 legacy Enable.................. : 0
 - Enhanced Intel SpeedStep Technology.. : 1 (enabled)
 - MONITOR FSM.......................... : 1 (MONITOR/MWAIT supported)
 - Adjacent sector prefetch Disable..... : 0
 - CFG Lock............................. : 0 (MSR not locked)
 - xTPR Message Disable................. : 1 (disabled)

MSR_TEMPERATURE_TARGET...........(0x1A2) : 0x640A00
------------------------------------------
 - Turbo Attenuation Units.............. : 0
 - Temperature Target................... : 100
 - TCC Activation Offset................ : 0

MSR_MISC_PWR_MGMT................(0x1AA) : 0x402000
------------------------------------------
 - EIST Hardware Coordination........... : 0 (hardware coordination enabled)
 - Energy/Performance Bias support...... : 1
 - Energy/Performance Bias.............. : 0 (disabled/MSR not visible to software)
 - Thermal Interrupt Coordination Enable : 1 (thermal interrupt routed to all cores)

MSR_TURBO_RATIO_LIMIT............(0x1AD) : 0x2A2A2A2A2A2A2A2A
------------------------------------------
 - Maximum Ratio Limit for C01.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C02.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C03.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C04.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C05.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C06.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C07.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C08.......... : 2A (4200 MHz)

MSR_TURBO_RATIO_LIMIT1...........(0x1AE) : 0x2222222222222A2A
------------------------------------------
 - Maximum Ratio Limit for C09.......... : 2A (4200 MHz)
 - Maximum Ratio Limit for C10.......... : 2A (4200 MHz)

IA32_ENERGY_PERF_BIAS............(0x1B0) : 0x5
------------------------------------------
 - Power Policy Preference...............: 5 (balanced performance and energy saving)

MSR_POWER_CTL....................(0x1FC) : 0x2904005B
------------------------------------------
 - Bi-Directional Processor Hot..........: 1 (enabled)
 - C1E Enable............................: 1 (enabled)

MSR_RAPL_POWER_UNIT..............(0x606) : 0xA0E03
------------------------------------------
 - Power Units.......................... : 3 (1/8 Watt)
 - Energy Status Units.................. : 14 (61 micro-Joules)
 - Time Units .......................... : 10 (976.6 micro-Seconds)

MSR_PKG_POWER_LIMIT..............(0x610) : 0x7FFF80015FFF8
------------------------------------------
 - Package Power Limit #1............... : 4095 Watt
 - Enable Power Limit #1................ : 1 (enabled)
 - Package Clamping Limitation #1....... : 1 (allow going below OS-requested P/T state during Time Window for Power Limit #1)
 - Time Window for Power Limit #1....... : 10 (2560 milli-Seconds)
 - Package Power Limit #2............... : 4095 Watt
 - Enable Power Limit #2................ : 1 (enabled)
 - Package Clamping Limitation #2....... : 1 (allow going below OS-requested P/T state setting Time Window for Power Limit #2)
 - Time Window for Power Limit #2....... : 3 (20 milli-Seconds)
 - Lock................................. : 0 (MSR not locked)

MSR_PKG_ENERGY_STATUS............(0x611) : 0xC06AC
------------------------------------------
 - Total Energy Consumed................ : 48 Joules (Watt = Joules / seconds)

MSR_PKGC3_IRTL...................(0x60a) : 0x0
MSR_PKGC6_IRTL...................(0x60b) : 0x0
MSR_PKG_C2_RESIDENCY.............(0x60d) : 0x298ED1EE0
MSR_PKG_C3_RESIDENCY.............(0x3f8) : 0xD638F0
MSR_PKG_C2_RESIDENCY.............(0x60d) : 0x298ED1EE0
MSR_PKG_C3_RESIDENCY.............(0x3f8) : 0xD638F0
MSR_PKG_C6_RESIDENCY.............(0x3f9) : 0x44911A9AC

IA32_TSC_DEADLINE................(0x6E0) : 0x11D3A1BDB3826

CPU Ratio Info:
------------------------------------------
Base Clock Frequency (BLCK)............. : 100 MHz
Maximum Efficiency Ratio/Frequency.......: 12 (1200 MHz)
Maximum non-Turbo Ratio/Frequency........: 30 (3000 MHz)
Maximum Turbo Ratio/Frequency............: 42 (4200 MHz)
P-State ratio * 100 = Frequency in MHz
------------------------------------------
CPU P-States [ (12) 27 30 ]
CPU C3-Cores [ 1 2 4 6 8 10 12 14 16 18 ]
CPU C6-Cores [ 0 2 4 6 8 10 12 14 16 18 ]
CPU P-States [ 12 17 27 (30) ]
CPU C3-Cores [ 1 2 3 4 6 7 8 10 11 12 14 15 16 18 19 ]
CPU C6-Cores [ 0 2 4 6 8 9 10 12 14 16 17 18 ]
CPU P-States [ (12) 17 27 30 31 ]
CPU C3-Cores [ 0 1 2 3 4 6 7 8 9 10 11 12 14 15 16 18 19 ]
CPU P-States [ (12) 14 17 27 30 31 ]
CPU C3-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 ]
CPU C6-Cores [ 0 2 4 6 8 9 10 12 14 15 16 17 18 ]
CPU P-States [ (12) 14 17 20 27 30 31 ]
CPU C3-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ]
CPU C6-Cores [ 0 1 2 4 6 7 8 9 10 12 14 15 16 17 18 ]
CPU P-States [ (12) 14 16 17 20 27 30 31 ]
CPU P-States [ (12) 14 16 17 18 20 27 30 31 ]
CPU P-States [ (12) 14 16 17 18 20 27 30 31 32 ]
CPU P-States [ (12) 14 16 17 18 20 22 27 30 31 32 ]
CPU C6-Cores [ 0 1 2 3 4 6 7 8 9 10 12 14 15 16 17 18 ]
CPU P-States [ (12) 13 14 16 17 18 20 22 27 30 31 32 ]
CPU C6-Cores [ 0 1 2 3 4 6 7 8 9 10 12 13 14 15 16 17 18 19 ]
CPU P-States [ (12) 13 14 16 17 18 20 22 23 27 30 31 32 ]
CPU P-States [ 12 13 14 (15) 16 17 18 20 22 23 27 30 31 32 ]
CPU P-States [ (12) 13 14 15 16 17 18 20 22 23 25 27 30 31 32 ]
CPU P-States [ (12) 13 14 15 16 17 18 20 21 22 23 25 27 30 31 32 ]
CPU C6-Cores [ 0 1 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ]
CPU P-States [ 12 13 14 15 16 17 18 20 21 22 23 (24) 25 27 30 31 32 ]
CPU P-States [ (12) 13 14 15 16 17 18 19 20 21 22 23 24 25 27 30 31 32 ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 29 (30) 31 32 ]
CPU C6-Cores [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 (42) ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 36 (42) ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 36 (42) ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 (42) ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 41 (42) ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 37 41 (42) ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 37 38 41 (42) ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 37 38 39 41 (42) ]
CPU P-States [ (12) 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 ]
CPU P-States [ (12) 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 ]
CPU P-States [ 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 (42) ]

To unload the AppleIntelInfo.kext, enter the terminal command:

sudo kextunload AppleIntelInfo.kext

E.7) Enhanced Intel SpeedStep Technology (EIST) and PMdrvr.kext:

 

If you want to go for EIST functionality, consider the necessary BIOS setting detailed below:
 
BIOS setting: 
 
Advanced\CPU Configuration\CPU Power Management Configuration\
  • Enhanced Intel SpeedStep Technology (EIST): Enabled
 
Subsequently download and copy  Brumbaer's PMDrvr.kext  to /EFI/CLOVER/kexts/Other/.
 
Note that there different versions for Broadwell-E and Haswell-E, namely the Broadwell-E PMDrvr.kext and Haswell-E PMDrvr.kext, respectively.
 

In any case it should be highlighted that PMDrvr.kext is fully compatible with macOS High Sierra 10.13 and results in a really fantastic CPU power managment performance reflected in the Intel Power Gadget graphs below. The left panel depicts max. CPU load-conditions during three temporally consecutive manually launched Cinebench CPU benchmarks with idle-conditions in between. The right panel reflects the dynamic CPU behavior during one Geekbench 4.1.0 CPU Benchmark run.

 
post-1362934-0-67406000-1516196317_thumb.png
 
Note however, that PMDrvr.kext has also a strong drawback as it breaks sleep/wake functionality. You therefore have to check both "Prevent computer from sleeping automatically when display is off" and "Put hard disks to sleep when possible" and uncheck "Wake for network access" and "Enable Power Nap"!

 

If you want to support the petition to Brumbaer for implementing Sleep/Wake functionality to PMDrvr.kext, leave an adequate comment and request in his corresponding thread on InsanelyMac.

 

E.8) Overclocking

 

As in case of macOS Sierra 10.12, a 4.2 Ghz CPU Overclocking also results under macOS 10.13 in a very sufficient and stable system configuration. For the sake fo completeness I herewith once more summarise the required BIOS settings after enabling the XMP switch on the Asus X99-A II and connecting the over-voltage jumper to pins 2-3:

 

- AI overclock Tuner: XMP
- BLCK Frequency: 100 Mhz
- Core Ratio: Sync All Cores
- 1-Core Ratio Limit: 44

A BLCK Frequency of 100 Mhz leads to the best NVMe performance. The core ratio of 44 corresponds to 4.4 Ghz overclocking.

 

 

E.9) ASUS X99-A II PCI Device Implementation - Sleep/Wake Functionality

 

In order to properly implement all PCI devices available on your system and build, one needs an adequate ACPI DSDT Replacement Patch Table and a sophisticated SSDT-ASUS-X99-A-II.amlBoth requirements have been successfully implemented based on the extensive efforts and extremely fruitful and brilliant work of @apfelnico, @nmano  and @TheOfficialGypsy.

 
Note however that both ACPI DSDT Replacement Patch Table and SSDT-ASUS-X99-A-II.aml are build specific and have to be verified and likely adopted or modified for all mainboards different from the ASUS Prime X299 Deluxe and builds different from the one that constitutes the baseline of this guide. The verification and likely adaptation/modification can be performed by the help of IORegistryExplorer v1.2. Also note that the ACPI DSDT Replacement Patch Table and SSDT-ASUS-X99-A-II.aml implementation detailed below requires SMBIOS macPro6,1.
 
E.9.1) ACPI DSDT Replacement Patching Table Implementation
 
Note that all required ACPI DSDT Patches are already implemented in the config.plist in the /EFI/CLOVER/ directory of the EFI- Folder contained in EFI-X99-10.13.3-SA-Release-020318.zip. However, by default they are disabled, thus we will now open the config.plist in the /EFI/CLOVER/ directory of your 10.13 System Disk EFI-Folder with Clover Configurator and stepwise adopt (if necessary) and enable the different required DSDT replacement patches in Clover Configurator Section "ACPI" under "DSDT patches", by also discussing their respective function and impact.
 
3.) ACPI DSDT Patch Table + SSDT-XOSI.aml
 
A set of DSDT Replacement patches (ACPI Table) originally developed by [uSER=190386]@apfelnico[/uSER] for X299 Systems, also help in achieving forced sleep/wake functionality on X99 Systems. Note that all required ACPI DSDT Replacement Patches are already implemented in the config.plist in the /EFI/CLOVER/ directory of the EFI-Folder contained in EFI-X99-10.13.3-SA-Release-020318.zip. Just open the config.plist with Clover Configurator and investigate "DSDT patches" in Clover Configurator Section "ACPI".
 
a.) ALZA -> HDEF is a DSDT replacement patch to achieve consistency with the SMBIOS macPro6,1 specific HDEF onboard audio controller implementation. If not already enabled in Section E.3), please enable this DSDT replacement patch now independent from your mainboard.
 
Comment:                Find*[Hex]      Replace [Hex]
ALZA -> HDEF          414c5a41        48444546

b.) OSI -> XOSI and EC0_ -> EC__ or H_EC  -> EC__ are DSDT replacement patches to achieve consistency with a real Mac variable naming.

 
i.) The XOSI functionality is required as explained by @RehabMan. Thus please enable the OSI -> XOSI DSDT Replacement patch.
 
ii.) On the ASUS X99-A II and ASUS X99 Deluxe II we have EC0 and H_EC controllers, which have to be renamed to 'EC' for proper USB power management. Thus enable both EC0_ -> EC__  and H_EC  -> EC__ DSDT Replacement Patches.
 
Comment:             Find*[Hex]      Replace [Hex]
OSI -> XOSI          5f4f5349        584f5349
EC0_ -> EC__         4543305f        45435f5f
H_EC  -> EC__        485f4543        45435f5f

c.) The HEC1 -> IMEI and IDER->MEID DSDT Replacement patches are Intel Management Engine Interface related and are vital as MacOS requires the variable names "IMEI" and "MEID" to load the 'AppleIntelMEIDriver'. The latter functionality solves the 'iTunes/Apple Store Content Access Problem' which is discussed here. Please enable now both DSDT Replacement patches independent from your mainboard.

 

HECI -> IMEI         48454331         494d4549
IDER->MEID           49444552         4d454944

d.) The LPC0 -> LPCB DSDT Replacement Patch is AppleLPC and SMBus related and is applied for consistency with the variable naming on a real Mac.Please enable now this DSDT replacement patch independent from your mainboard.

Comment:             Find*[Hex]         Replace [Hex]
LPC0 -> LPCB         4c504330           4c504342
 
e.) FPU_->MATH, TMR_->TIMR, PIC_->IPIC are all DSDT Replacement Patches for consistency with the variable naming on a real Mac. The variables are however functionless on either X99 systems or real Macs. Please enable now all three DSDT Replacement Patches independent from your mainboard.
 
FPU_ -> MATH         4650555f          4d415448
TMR_ -> TIMR         544d525f          54494d52
PIC_ -> IPIC         5049435f          49504943

f.) The DSM -> XDSM DSDT replacement patch will be vital for loading the SSDT-ASUS-X99-A-II.aml, as all DSM methods used in the original DSDT do have a not compatible structure totally different from the real Mac environment. Without any fix, all DSM methods would be simply ignored. Note that one single device can have only one DSM method, which can assign additional properties to the respective device. Thus please enable the latter DSDT replacement patch completely independent from your mainboard!

_DSM -> XDSM         5f44534d            5844534d

Last but note least,  in the /EFI/CLOVER/ACPI/patched/ directory of the EFI-Folder contained in EFI-X99-10.13.3-SA-Release-020318.zip one finally finds the ssdt-xosi-aml, already implemented by default.

 

 

E.9.2) SSDT-ASUS-X99-A-II.aml PCI Implementation

 

post-1362934-0-95567900-1516198719_thumb.png
 
For the proper PCI device implementation (detailed in the Figure above), which is mostly of cosmetic nature and not directly related to device functionality, we now have to revise and likely adopt or modify the linked SSDT-ASUS-X99-A-II.aml to our specific build, system configuration and PCIe slot population with the help of the IORegistryExplorer. Note that the SSDT-ASUS-X99-A-II.aml considers the following ASUS X99-A II slot distribution:
 
post-1362934-0-45012100-1516198767_thumb.png

 

The entire section can also be simply skipped by unexperienced users, who also prefer to skip the implementation of the SSDT-ASUS-X99-A-II.aml and respective PCI Device implementation.

Note that for each device, the SSDT-ASUS-X99-A-II.aml contains a DefinitionBlock entry and the underlying PCI device implementation. In case of necessary modifications/adaptations, don't forget to also modify/adapt the respective DefinitionBlock entries in concordance with your IOREG entries. The entire SSDT structure is module like. Each module can be independently added, changed or removed in dependence of your specific build, needs and requirements. A stepwise implementation of the individual PCI devices is recommended!

E.9.2.1) HDEF - onboard Audio Controller PCI Implementation:

DefintionBlock entry:

External (_SB_.PCI0.HDEF, DeviceObj)    // (from opcode)

PCI Device Implementation:

PCI Device Implementation:

[code]
Scope (\_SB.PCI0.HDEF)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x16)
                {
                    "layout-id",
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x00, 0x00         
                    },

                    "MaximumBootBeepVolume",
                    Buffer (One)
                    {
                         0xEF                           
                    },

                    "MaximumBootBeepVolumeAlt",
                    Buffer (One)
                    {
                         0xF1                           
                    },

                    "multiEQDevicePresence",
                    Buffer (0x04)
                    {
                         0x0C, 0x00, 0x01, 0x00         
                    },

                    "AAPL,slot-name",
                    Buffer (0x09)
                    {
                        "Built In"
                    },

                    "model",
                    Buffer (0x17)
                    {
                        "ASUS X99-A II HD Audio"
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    },

                    "built-in",
                    Buffer (0x05)
                    {
                        "0x00"
                    },

                    "device_type",
                    Buffer (0x14)
                    {
                        "HD Audio Controller"
                    },

                    "name",
                    Buffer (0x22)
                    {
                        "Realtek ALC 1150 Audio Controller"
                    },

                    "PinConfigurations",
                    Buffer (0x05)
                    {
                        "0x00"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }
The HDEF PCI device implementation is valid for the ASUS X99-A II and likely for all other mainboards with the Realtek ALC 1150 Audio Controller chipset. It is a build in device and does not have any slot specific dependency. In any case verify device path "PCI0.HDEF" and PCI device implementations by means of IOREG.     E.9.2.2) GFX1, HDAU - Nvidia Graphics Card and HDMI/DP Audio PCI implementation      DefintionBlock entry:  
External (_SB_.PCI0.BR3A, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3A.D07C, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3A.H000, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3A.H001, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3A.GFX1, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3A.HDAU, DeviceObj)    // (from opcode)
PCI Device Implementation:
Device (_SB.PCI0.BR3A.GFX1)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Name (_SUN, One)  // _SUN: Slot User Number
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (One)
                {
                     0x03                           
                })
            }

            Store (Package (0x16)
                {
                    "built-in",
                    Buffer (One)
                    {
                         0x00                           
                    },

                    "device-id",
                    Buffer (0x04)
                    {
                         0x06, 0x1B, 0x00, 0x00         
                    },

                    "AAPL,slot-name",
                    Buffer (0x0B)
                    {
                        "PCI Slot 0"
                    },

                    "@0,connector-type",
                    Buffer (0x04)
                    {
                         0x00, 0x08, 0x00, 0x00         
                    },

                    "@1,connector-type",
                    Buffer (0x04)
                    {
                         0x00, 0x08, 0x00, 0x00         
                    },

                    "@2,connector-type",
                    Buffer (0x04)
                    {
                         0x00, 0x08, 0x00, 0x00         
                    },

                    "@3,connector-type",
                    Buffer (0x04)
                    {
                         0x00, 0x08, 0x00, 0x00         
                    },

                    "@4,connector-type",
                    Buffer (0x04)
                    {
                         0x00, 0x08, 0x00, 0x00         
                    },

                    "@5,connector-type",
                    Buffer (0x04)
                    {
                         0x00, 0x08, 0x00, 0x00         
                    },

                    "name",
                    Buffer (0x08)
                    {
                        "display"
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }

        Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
        {
            0x6D,
            Zero
        })
    }

    Device (_SB.PCI0.BR3A.HDAU)
    {
        Name (_ADR, One)  // _ADR: Address
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (One)
                {
                     0x03                           
                })
            }

            Store (Package (0x0C)
                {
                    "built-in",
                    Buffer (One)
                    {
                         0x00                           
                    },

                    "device-id",
                    Buffer (0x04)
                    {
                         0xEF, 0x10, 0x00, 0x00         
                    },

                    "AAPL,slot-name",
                    Buffer (0x0B)
                    {
                        "PCI Slot 0"
                    },

                    "device_type",
                    Buffer (0x1B)
                    {
                        "HDAU Multimedia Controller"
                    },

                    "name",
                    Buffer (0x15)
                    {
                        "NVIDIA HDMI/DP Audio"
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }

        Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
        {
            0x6D,
            Zero
        })
    }

    Name (_SB.PCI0.BR3A.H000._STA, Zero)  // _STA: Status
    Name (_SB.PCI0.BR3A.H001._STA, Zero)  // _STA: Status
    Name (_SB.PCI0.BR3A.D07C._STA, Zero)  // _STA: Status
The actual GFX1 and HDAU PCI device implementation should be valid for SMBIOS macPro6,1 (GFX0), the ASUS X99-A II and any Nvidia Graphics Card implemented in PCIe Slot 0. It is a build and PCIe slot population dependent device implementation. Nvidia Graphics Card users with more than one graphics card, or with an Nvidia graphics card in a PCIe slot different from PCIe Slot 0, will have to adopt the respective PCI0, BR3A, H000, H001, D07C, GFX1 device path entries, PCIe Slot definitions and PCI device properties following their respective IOREG entries.   E.9.2.3) IMEI - onboard Intel Management Engine Interface (IMEI) Controller PCI Implementation   DefintionBlock entry:  
External (_SB_.PCI0.IMEI, DeviceObj)    // (from opcode)
PCI Device Implementation:
Method (_SB.PCI0.IMEI._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        Store (Package (0x0E)
            {
                "AAPL,slot-name",
                Buffer (0x09)
                {
                    "Built In"
                },

                "built-in",
                Buffer (One)
                {
                     0x00                           
                },

                "device-id",
                Buffer (0x04)
                {
                     0x3A, 0x1E, 0x00, 0x00         
                },

                "device_type",
                Buffer (0x10)
                {
                    "IMEI-Controller"
                },

                "name",
                Buffer (0x28)
                {
                    "Intel Management Engine Interface (MEI)"
                },

                "model",
                Buffer (0x26)
                {
                    "Intel X99-A II Chipset MEI Controller"
                },

                "compatible",
                Buffer (0x0D)
                {
                    "pci8086,1e3a"
                }
            }, Local0)
        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
        Return (Local0)
    }
  The IMEI PCI device implementation should be valid for all X99 mainboards and should not require any build specific adaptation/modification. In any case verify device path "PCI0.IMEI" and PCI device implementations by means of IOREG.     E.9.2.4) GLAN - onboard LAN Controller PCI Implementation     DefintionBlock entry:  
External (_SB_.PCI0.GLAN, DeviceObj)    // (from opcode)
  PCI Device Implementation:
External (_SB_.PCI0.GLAN, DeviceObj)    // (from opcode)[/code]

PCI Device Implementation:

[code]Method (_SB.PCI0.GLAN._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        Store (Package (0x0E)
            {
                "AAPL,slot-name",
                Buffer (0x09)
                {
                    "Built In"
                },

                "model",
                Buffer (0x2A)
                {
                    "Intel i218-V PCI Express Gigabit Ethernet"
                },

                "name",
                Buffer (0x21)
                {
                    "Intel i218-V Ethernet Controller"
                },

                "built-in",
                Buffer (One)
                {
                     0x00                           
                },

                "device-id",
                Buffer (0x04)
                {
                     0xA1, 0x15, 0x00, 0x00         
                },

                "subsystem-id",
                Buffer (0x04)
                {
                     0xC4, 0x85, 0x00, 0x00         
                },

                "subsystem-vendor-id",
                Buffer (0x04)
                {
                     0x43, 0x10, 0x00, 0x00         
                }
            }, Local0)
        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
        Return (Local0)
    }
 
Note that the GLAN Intel i218-V Ethernet onboard LAN controller PCI implementation is of pure cosmetic nature and valid for the ASUS X99-A II or X99 mainboards with the same LAN Controller configuration. Owners of different X99 mainboards have to verify and adopt/modify if necessary the device path "PCI0.GLAN" and the PCI device implementations by means of IOREG.
 
 
E.9.2.5) XHCI - onboard Extended Host Controller Interface (XHCI) PCI Implementation
 

 

DefintionBlock entry:
 
External (_SB_.PCI0.XHCI, DeviceObj)    // (from opcode)

 

PCI Device Implementation:

Method (_SB.PCI0.XHCI._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        Store (Package (0x1A)
            {
                "AAPL,slot-name",
                Buffer (0x09)
                {
                    "Built In"
                },

                "device-id",
                Buffer (0x04)
                {
                     0x31, 0x8D, 0x00, 0x00         
                },

                "subsystem-id",
                Buffer (0x04)
                {
                     0x00, 0x86, 0x00, 0x00         
                },

                "subsystem-vendor-id",
                Buffer (0x04)
                {
                     0x43, 0x10, 0x00, 0x00         
                },

                "AAPL,current-available",
                0x0834,
                "AAPL,current-extra",
                0x0898,
                "AAPL,current-extra-in-sleep",
                0x0640,
                "AAPL,device-internal",
                0x02,
                "AAPL,max-port-current-in-sleep",
                0x0834,
                "name",
                Buffer (0x19)
                {
                    "Intel XHC USB Controller"
                },

                "model",
                Buffer (0x2F)
                {
                    "Intel X99-A II Chipset XHC USB Host Controller"
                },

                "device_type",
                Buffer (0x1F)
                {
                    "USB eXtensible Host Controller"
                },

                "AAPL,clock-id",
                Buffer (0x05)
                {
                    "0x01"
                }
            }, Local0)
        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
        Return (Local0)
    }

The XHCI USB3.0 PCI device implementation is valid for the ASUS X99_A II and for all other X99 mainboards with the same XHCI controller chipset. Verify and adopt/modify if necessary device path "PCI0.XHCI" and PCI device implementations by means of IOREG.

 

 

E.9.2.6) ASMedia ASM1142 USB 3.1 Controller PCI Implementation
 
DefintionBlock entry:
 
External (_SB_.PCI0.RP05.D082, DeviceObj)    // (from opcode)

 

PCI Device Implementation:

Scope (\_SB.PCI0.RP05.D082)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x0A)
                {
                    "AAPL,slot-name",
                    Buffer (0x09)
                    {
                        "Built In"
                    },

                    "built-in",
                    Buffer (One)
                    {
                         0x00                           
                    },

                    "device-id",
                    Buffer (0x04)
                    {
                         0x42, 0x12, 0x00, 0x00         
                    },

                    "name",
                    Buffer (0x1B)
                    {
                        "ASMedia USB 3.1 Controller"
                    },

                    "model",
                    Buffer (0x28)
                    {
                        "ASMedia ASM1142 USB 3.1 Type-A & Type-C"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }
 
The ASMedia ASM1142 USB 3.1 onboard Intel AHCI SATA controller PCI device implementation is valid for the ASUS X99-A II and for all other X99 mainboards with the same XHC USB3.1 controller ASMedia ASM1142 chipset configuration. Verify and adopt/modify if necessary device path "PCI0.RP05.D082" and PCI device implementations by means of IOREG.
 
 
E.9.2.7) SAT1 - Intel AHCI SATA Controller PCI Implementation
 

 

DefintionBlock entry:
 
External (_SB_.PCI0.SAT1, DeviceObj)    // (from opcode)

 

PCI Device Implementation:

Method (_SB.PCI0.SAT1._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        Store (Package (0x0E)
            {
                "AAPL,slot-name",
                Buffer (0x09)
                {
                    "Built In"
                },

                "built-in",
                Buffer (0x05)
                {
                    "0x00"
                },

                "name",
                Buffer (0x16)
                {
                    "Intel AHCI Controller"
                },

                "model",
                Buffer (0x27)
                {
                    "Intel X99-A II Chipset SATA Controller"
                },

                "compatible",
                Buffer (0x0D)
                {
                    "pci8086,8d02"
                },

                "device_type",
                Buffer (0x10)
                {
                    "AHCI Controller"
                },

                "device-id",
                Buffer (0x04)
                {
                     0x02, 0x8D, 0x00, 0x00         
                }
            }, Local0)
        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
        Return (Local0)
    }
 
The SAT1 onboard Intel AHCI SATA controller PCI device implementation is valid for the ASUS X99-A II and for all other X99 mainboards with the same AHCI SATA controller chipset. Verify and adopt/modify if necessary device path "PCI0.SAT1" and PCI device implementations by means of IOREG.
 
 
E.9.2.8) EVSS - Intel X99 sSata Controller PCI Implementation
 

 

DefintionBlock entry:
 
External (_SB_.PCI0.EVSS, DeviceObj)    // (from opcode)[

PCI Device Implementation:

Method (_SB.PCI0.EVSS._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        Store (Package (0x0E)
            {
                "AAPL,slot-name",
                Buffer (0x09)
                {
                    "Built In"
                },

                "built-in",
                Buffer (0x05)
                {
                    "0x00"
                },

                "name",
                Buffer (0x1B)
                {
                    "Intel X99 sSata Controller"
                },

                "model",
                Buffer (0x28)
                {
                    "Intel X99-A II Chipset sSATA Controller"
                },

                "compatible",
                Buffer (0x0D)
                {
                    "pci8086,8d62"
                },

                "device_type",
                Buffer (0x10)
                {
                    "AHCI Controller"
                },

                "device-id",
                Buffer (0x04)
                {
                     0x62, 0x8D, 0x00, 0x00         
                }
            }, Local0)
        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
        Return (Local0)
    }
 
The EVSS onboard Intel X99 sSATA controller PCI device implementation is valid for the ASUS X99-A II and for all other X99 mainboards with the same X99 sSATA controller chipset. Verify and adopt/modify if necessary device path "PCI0.SAT1" and PCI device implementations by means of IOREG.
 
 
E.9.2.9)  NVMe Controller PCI Implementation
 

 

DefintionBlock entry:
 
External (_SB_.PCI0.BR1B.D075, DeviceObj)    // (from opcode)

 

PCI Device Implementation:

Method (_SB.PCI0.BR1B.D075._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        Store (Package (0x0C)
            {
                "AAPL,slot-name",
                Buffer (0x09)
                {
                    "NVMe SSD"
                },

                "built-in",
                Buffer (0x09)
                {
                    "NVMe SSD"
                },

                "device-id",
                Buffer (0x04)
                {
                     0x04, 0xA8, 0x00, 0x00         
                },

                "name",
                Buffer (0x05)
                {
                    "NVMe"
                },

                "model",
                Buffer (0x2D)
                {
                    "Samsung NVMe M.2 SSD 960 EVO 1TB MZ-V6E1T0BW"
                },

                "device_type",
                Buffer (0x3F)
                {
                    "Samsung Electronics Co Ltd NVMe M.2 SSD Controller SM961/PM961"
                }
            }, Local0)
        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
        Return (Local0)
    }
 
The current NVMe Controller PCI implementation is purely cosmetic nature and is valid for the ASUS X99-A II and the Samsung EVO 960 1TB. Verify and adopt/modify if necessary device paths "PCI0.BR1B.D075" and the respective PCI device implementations by means of IOREG.
 
 
E.9.2.10)  Inateck KTU3FR-502U XHC 7-Port USB 3.0 Controller PCI Implementation
 

 

DefintionBlock entry:
 
External (_SB_.PCI0.BR2A.XHC2, DeviceObj)    // (from opcode)

 

PCI Device Implementation:

Device (_SB.PCI0.BR2A.XHC2)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Name (_SUN, 0x03)  // _SUN: Slot User Number
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (0x03)
                {
                     0x03                           
                })
            }

            Store (Package (0x0A)
                {
                    "AAPL,slot-name",
                    Buffer (0x0B)
                    {
                        "PCI Slot 3"
                    },

                    "name",
                    Buffer (0x22)
                    {
                        "SuperSpeed XHC USB 3.0 Controller"
                    },

                    "model",
                    Buffer (0x32)
                    {
                        "Inateck KTU3FR-502U XHC 7-Port USB 3.0 Controller"
                    },

                    "device_type",
                    Buffer (0x1F)
                    {
                        "USB eXtensible Host Controller"
                    },

                    "device-id",
                    Buffer (0x04)
                    {
                         0x00, 0x11, 0x00, 0x00         
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }

        Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
        {
            0x6D,
            Zero
        })
    }
    Name (_SB.PCI0.BR2A.H000._STA, Zero)  // _STA: Status
    Name (_SB.PCI0.BR2A.D07F._STA, Zero)  // _STA: Status
 
The Inateck KTU3FR-502U XHC 7-Port USB 3.0 PCIe Adapter PCI device implementation is of pure cosmetic nature and only valid for users of the latter XHC USB3.0 PCIe Adapter in PCIe Slot 3. Users of this PCIe Adapter within a PCIe slot population different from PCIe Slot 3 have to adapt/modify the respective path entries PCI0, BR2A, XHC2. Users of XHC USB3.0 PCIe Adapters different from the Inateck KTU3FR-502U XHC 7-Port USB 3.0 PCIe Adapter or users without any additional XHC USB3.0 PCIe Adapter, have to either adopt the entire XHC USB3.0 PCIe Adapter PCI implementation by means of IOREG or can simply skip the entire part.
 
 
E.9.2.11) ARPT - OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 AirPort Controller PCI Implementation:
 

 

DefintionBlock entry:
 
External (_SB_.PCI0.RP07.ARPT, DeviceObj)    // (from opcode)

 

PCI Device Implementation:

Device (_SB.PCI0.RP07.ARPT)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Name (_SUN, 0x04)  // _SUN: Slot User Number
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (0x04)
                {
                     0x03                           
                })
            }

            Store (Package (0x08)
                {
                    "device_type",
                    Buffer (0x13)
                    {
                        "AirPort Controller"
                    },

                    "model",
                    Buffer (0x4A)
                    {
                        "OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller"
                    },

                    "compatible",
                    Buffer (0x0D)
                    {
                        "pci14e4,43a0"
                    },

                    "name",
                    Buffer (0x10)
                    {
                        "AirPort Extreme"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }

        Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
        {
            0x6D,
            Zero
        })
    }
 
The ARPT OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 AirPort Controller PCI device implementation is of pure cosmetic nature and only valid for users of the latter WIFI/Bluetooth PCIe Adapter in PCIe Slot 4. Users of this PCIe Adapter within a PCIe slot population different from PCIe Slot 4 have to adapt/modify the respective device path "PCI0.RP07.ARPT". Users of the Asus Prime X299 Deluxe onboard Bluetooth chipset controller or with a completely different WIFI/Bluetooth configuration have to either adopt the entire Airport PCI implementation by means of IOREG or can also skip the entire part.
 
 
E.9.2.12) ThunderboltEX 3 Controller PCI Implementation:
 
The ASUS X99-A II is not equipped with the TBEX 3 PCIe adapter. All users of the latter PCIe Adapter I kindly asked to investigate the PCI implementation in the SSDT-X299iMacPro.aml for the ASUS Prime X299 Deluxe attached and described (Section E.9.2.13) in my iMac Pro Skylake-X/X299 macOS High Sierra 10.13 Build and User Desktop Guide.
 

 

E.9.2.13) DTGP Method:
 
Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                             0x03                           
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                 0x00                           
            }, Arg4)
        Return (Zero)
    }
}
The DTG Method Implementation is required for SSDT functionality and has not to be modified or adopted in any case.
 
After successfully implementing the ACPI DSDT Replacement Patch Table, SSDT-ASUS-X99-A-II.aml and ssdt-xosi-aml, my system now possesses full sleep/wake functionality. Absolutely amazing!
 
Note the following additional Sleep/Wake requirements:
 
a.)  Due to the sleep/wake incompatibility of PMdrvr.kext disable EIST in the mobo-BIOS and remove PMdrvr.kext from "/EFI/CLOVER/kexts/Other/". PMDrvr.kext frequently causes a black screen or reboot on wake thus it is up to the users decision to go with EIST and PMdrvr.kext or to go for sleep/wake functionality.
 
 
b.) In D.1/5.5 or D.2/4.e you already copied the appropriate  "VoodooTSCSync.kext", which you modified by following error prevention C/8., to the /EFI/Clover/kexts/Other/ directories of your USB Flash Drive and 10.13 System Disk.
 
Note once more that "VoodooTSCSync.kext" is absolutely mandatory for sleep/wake functionality!
 
c.)  I added the "darkwake=1" boot flag to my config.plist by means of Clover Configurator, Section "Boot", "Arguments".
 
d.) Note that I also added an additional SSDT-SLEEP.aml, attached towards the end of this post, to the "/EFI/CLOVER/ACPI/patched/-directory " of my System Disk. For a detailed explanation follow THIS LINK to pikeralpha.wordpress.com. Note that after one Sleep/Wake process, one finds adequate IORegistry entries for "IOPMDeepIdleSupported" and "IOPMSystemSleepType" in "IOService:/AppleACPIPlatformExpert/IOPMrootDomain/".In contrary, I still miss the "PMStatusCode" entry.

 

post-1362934-0-15189400-1516200019_thumb.png
 
e.) If you want to restore the old Energy Saver Settings in System Preferences including the missing computer sleep slider bar, follow the instructions of @ghorwith.
 
 
E.10) Hardware Monitoring
 
The HWMonitor.app allows to access information from hardware sensors of your hackintosh. It works along with the FakeSMC.kext and some additional Sensor kext-plugins, being already part of the EFI folder attached towards the end of the actual post. To achieve Hardware Monitoring functionality, just download and run the HWMonitor.app  from your Application Folder.
 
post-1362934-0-54864400-1516200292_thumb.png

 

 

E.11) System Overview CPU Cosmetics

 

As our Broadwell-E/EP (Haswell-E/EP) CPU is not properly or fully recognised by OS X, Apple's System Overview ("About This Mac") reveals incomplete or simply wrong CPU details.

 

post-1362934-0-28771600-1516200389_thumb.png
 
I recently discovered on InsanelyMac a sophisticated fix of pure cosmetic nature developed by @Shaneee (also thanks to @fabiosun for pointing me to this direction), which allows to implement those CPU details you want to be implemented. For the sake of simplicity, I summarise below the necessary steps.
 

1.) Open a terminal and use the following commands:

cp /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/Resources/English.lproj/AppleSystemInfo.strings ~/Desktop/
sudo mv /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/Resources/English.lproj/AppleSystemInfo.strings /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/Resources/English.lproj/AppleSystemInfo.strings-Backup

2.) Open "AppleSystemInfo.strings" on your Desktop with TextWrangler and change

 

<key>UnknownCPUKind</key>
<string>Unknown</string>

to what ever you want. In my case I choose:

<key>UnknownCPUKind</key>
<string>4.4 Ghz 10-core 20-thread Broadwell-E i7-6950X</string>
 
Save  "AppleSystemInfo.strings"
 

 

3.) Run the following terminal commands:
 
sudo codesign -f -s - ~/Desktop/AppleSystemInfo.strings
sudo cp ~/Desktop/AppleSystemInfo.strings /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/Resources/English.lproj/
 
and reboot your system.
 
4.) Open your config.plist with Clover Configurator and in Section "CPU" set "Type" to "Unknown". Save the config.plist and reboot.

 

5.) Apple's System Overview now will reveal the following details:
 
post-1362934-0-17330000-1516200643_thumb.png

 

 

As fall back option enter the following terminal commands:

sudo rm /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/Resources/English.lproj/AppleSystemInfo.strings
sudo mv /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/Resources/English.lproj/AppleSystemInfo.strings-Backup /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/Resources/English.lproj/AppleSystemInfo.string[
 
and reboot.
 

 

F.) Benchmarking
 

 

F.1) i7-6950X CPU Benchmarks

 

post-1362934-0-15964400-1516221580_thumb.png

 

 

F.2) Gigabyte AORUS GTX 1080 TI 11GB Xtreme Edition OpenGL and Metal Benchmarks

 

post-1362934-0-11545700-1516221722_thumb.png
 
post-1362934-0-67951000-1516221740_thumb.png
 
post-1362934-0-68064700-1516221955_thumb.png
 
post-1362934-0-93618300-1516221992_thumb.png
 
post-1362934-0-74477500-1516222008_thumb.png
 
post-1362934-0-39957400-1516222024_thumb.png

 

 

F.3) Blackmagic Disk Speed Benchmarks:

 

post-1362934-0-44467000-1516222077_thumb.png
 
 
G.) Summary and Conclusion
 
Already during the individual macOS High Sierra 10.13 beta releases, X99 systems reached full functionality together with flawless stability. Since the Final Release of macOS High Sierra 10.13, it might be the right moment to follow my desktop guide and to unfold the unbelievable X99 potential together with macOS High Sierra 10.13! 
 
As already mentioned towards the end of my macOS Sierra Desktop Guide, I am quite optimistic that high-end X99 builds can find manifold application, not only in science and research at universities or research institutions, engineering facilities, or medical labs, etc... Latest successful user feedback with respect to Broadwell-EP/Haswell-EP processers with up to 22 cores (44 threads) at clock speeds around 2.8 Ghz each thread makes X99 to a "realtively cheap" but extremely serious alternative to Apple's iMac Pro's and Mac Pro's. The principal intention of this desktop guide was to demonstrate, that we are able to build and configure  stable and relatively "low-cost" high-end systems nowadays, that go far beyond of what Apple is able to offer at present or will be ever able to offer for some reasonable pricing. A system based on X99, that allows the use of all software-packages developed for MacOS, Unix, Linux or even Windows at the same time (e.g. think on Vine, Parallels, or a dual boot system configurations). The flexibility between different boards (Asus, Gigabyte, ASRock, MSI, etc.), different processor models (Broadwell-E/EP, Haswell-E/EP) and different RAM memory configurations (16-128GB) makes such system affordable for anybody (also home office, audio and video editing/production, etc.) and allows its perfect adaptation for the specific purpose, requirements and available budgets.
 
Finally, it might not be necessary to mentioned in addition that X99 system reached such high level of sophistication and stability to reliably and perfectly run on a 24/7/365 basis.
 
 
Good luck and enjoy!
 
post-1362934-0-41431100-1516222345.png

 

post-1362934-0-01005800-1516174978_thumb.png

post-1362934-0-87157800-1516176652_thumb.png

post-1362934-0-23259700-1516177202_thumb.png

post-1362934-0-40783000-1516178973_thumb.png

post-1362934-0-66680100-1516179745_thumb.png

post-1362934-0-59203100-1516179791_thumb.png

post-1362934-0-78737900-1516180133_thumb.png

post-1362934-0-57001100-1516180748_thumb.png

post-1362934-0-04201500-1516181242.png

post-1362934-0-42193900-1516181254_thumb.png

post-1362934-0-01736900-1516181511_thumb.png

post-1362934-0-13744500-1516182163_thumb.png

post-1362934-0-19302600-1516182324_thumb.png

post-1362934-0-41437200-1516182374_thumb.png

post-1362934-0-38731200-1516182383_thumb.png

post-1362934-0-94155800-1516182783_thumb.png

post-1362934-0-64045000-1516182831_thumb.png

post-1362934-0-02024100-1516183349_thumb.png

post-1362934-0-67406000-1516196317_thumb.png

post-1362934-0-95567900-1516198719_thumb.png

post-1362934-0-45012100-1516198767_thumb.png

post-1362934-0-15189400-1516200019_thumb.png

post-1362934-0-54864400-1516200292_thumb.png

post-1362934-0-28771600-1516200389_thumb.png

post-1362934-0-17330000-1516200643_thumb.png

post-1362934-0-15964400-1516221580_thumb.png

post-1362934-0-11545700-1516221722_thumb.png

post-1362934-0-67951000-1516221740_thumb.png

post-1362934-0-68064700-1516221955_thumb.png

post-1362934-0-93618300-1516221992_thumb.png

post-1362934-0-74477500-1516222008_thumb.png

post-1362934-0-39957400-1516222024_thumb.png

post-1362934-0-44467000-1516222077_thumb.png

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

10.13.3 (17D47) X99 Guide Update completed

 
New EFI-Folder EFI-X99-10.13.3-Release-280118.zip linked to the originating post of this thread/guide.  
 
 
EFI-Folder related modifications:
  • Implementation of Clover Boot Loader Clover_v2.4k_r4392
  • Implementation of patched apsf.efi from 10.13.3 (17D47)
  • Implementation of last AptioMemoryFix.efi distribution 
  • Modifications in config.plist for hiding OSX Preboot, Recovery and unwanted Windows partitions in Clover Boot Menu
 
Guide related modifications: 
  • Update of Abstract and Table fo Contents
  • Update of Error Prevention C.1) and C.7)
  • Update of entire Section D.2) - MacPro macOS 10.13 High Sierra System Setup
  • Update of Section E.1) - Graphics Configuration  
  • Implementation of Lilu.kext v1.2.2

 

Enjoy and have fun,

 

post-1362934-0-41431100-1516222345.png
Link to comment
Share on other sites

  • 1 month later...

Guide Upate to 10.13.3 SA (17D201)

 

post-1362934-0-15761500-1520002673_thumb.png

 

Now EFI-folder EFI-X99-10.13.3-SA-Release-020318.zip implemented in the originating post of this thread (guide) . 

 
EFI-Folder related changes:
  • Implementation of Clover Boot Loader Distribution Clover_v2.4k_r4417
 
Guide related changes:
  • Minor revisions and updates.  
 
Enjoy and have fun,
 
post-1362934-0-41431100-1516222345.png

 

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Awesome tutorial! My machine is up and running and stable. One problem is Thunderbolt 3. If enabled in bios I get a slide error and "does print f print?". Choosing slide =0 fixes the slide issue but the print f remains. Had a look at your 299 settings but no luck. Works perfectly in Windows 10 with the UAD Arrow interface I plan to use. Any ideas? Many thanks in advance.

 

Cheers,
Andy

 

5aba52712a6c2_X99Build.png.da1ee7033008d4ae4de1f3f7217623a8.png

Link to comment
Share on other sites

Hi KGP-iMacPro,

I have question on M.2/NVMe Configuration. I installed the SSD via PCIe adapter and so v.2 is pci-bridge, MaciASL failed to compile. What can I do?

v.1 = PCI0
v.2 = pci-bridge
v.3 = pci126f,2263

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...