Contribute
Register

iMac Pro X99 - Live the Future now with macOS 10.14 Mojave [Successful Build/Extended Guide]

Status
Not open for further replies.

kgp

Retired
Joined
May 30, 2014
Messages
6,745
Motherboard
ASUS WS X299 Sage 10G
CPU
i9-7980XE
Graphics
Vega 64
Mac
  1. iMac
  2. MacBook Pro
  3. Mac mini
Mobile Phone
  1. iOS
338025


Up and successfully running macOS Mojave 10.14.4 (18E226) on Broadwell-E/X99

395079


338027


This afternoon @DSM2 advised me that yesterday Apple seems to have added a second special build of MacOS 10.14.4 (18E2034) on swcdn.apple.com, likely for new devices.

395294


395296


Abstract and Introduction:

This originating post constitutes an innovative iMac Pro macOS 10.14 Mojave Build and Desktop Guide for Broadwell-E/EP, Haswell-E/EP and X99, which certainly will further grow not only thanks to your estimated feedback and contributions. It is the logical continuation of my successful 10.13 iMac Pro Broadwell-E/EP, Haswell-E/EP and X99 Build and Desktop Guide "How to extend the iMac Pro to X99 [Successful Build/Extended Guide]", hereafter referred as "10.13-iMP-X99-BDG", which further deviates from my 10.13 iMac Pro Skylake/X299 Build and Desktop Guide "How to make your own iMacPro [Successful Build/Extended Guide], hereafter referred as 10.13-iMP-X299-BDG. To avoid jumping back and forth between the two guides, the actual guide shall be completely auto-consistent. This however implies for now some strong redundancy with 10.13-iMP-X99-BDG. As the further development of 10.13-iMP-X99-BDG will be practically frozen after the official realise of 10.13.6 (High Sierra - Final Cut) and the actual guide will further develop in the future, the redundancy with it's predecessor will certainly steadily diminish with time. The chosen approach offers all people to start straight away with iMacPro Broadwell-E/EP, Haswell-E/EP, X99 builds based on macOS Mojave. Experienced users familiar with 10.13-iMP-X99-BDG shall be easily able to focus on the few deviating details. Depending on your Broadwell-E/EP, Haswell-E/EP, X99 system configuration, necessary modifications for running 10.14 Mojave might be really minimal.

As everybody already might know, my Broadwell-E/EP, Haswell-E/EP and X99 Desktop Guides are based on the ASUS X99-A II. However, also other X99 ASUS mainboard models or X99 mainboards of other brands should be largely compatible with the actual guidelines. The same states for guide compatibility with all Broadwell-E/EP and Haswell-E/EP CPUs different form the i7-6950X (employed here).

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.) ASUS Mainboard BIOS

B.1) ASUS BIOS Firmware Patching
B.1.1) CPU Microcode Update
B.1.2) MSR 0xE2 register unlock for OSX Kernel Write
B.2) ASUS X99-A II BIOS Configuration

C.) Important General Note/ Advice and Error Prevention

D.) iMac Pro macOS 10.14 Mojave System Setup

This chapter includes a general guideline how to perform the initial setup of a Broadwell-E/EP, Haswell-E/EP, X99 iMac Pro with macOS Mojave.

D.1) iMac Pro EFI-Folder Preparation
D.2) iMac Pro macOS Mojave Installer Package Creation
D.3) iMac macOS Mojave USB Flash Drive Installer Creation
D.4) iMac Pro macOS Mojave Clean Install on Broadwell-E/EP, Haswell-E/EP, X99
D.5) Direct iMac Pro conversion of a functional Broadwell-E/EP, Haswell-E/EP, X99 system with a SMBIOS System Definition different from iMac Pro1,1 and a standard macOS build implementation.
D.6) iMac Pro macOS High Sierra Build Update Procedure

E.) Post Installation Process
E.1) Xnu CPU Power Management (XCPM) Configuration
E.2) Graphics Configuration
E.3) Audio Configuration
E.4) USB Configuration
E.5) M.2/NVMe Configuration
E.6) SSD/NVMe TRIM Support
E.7) GC-Titan Ridge / GC-Alpine Ridge /Asus TBEX 3 PCIe Add-In Implementation
E.8) Gbit and 10-Gbit Ethernet Implementations
E.8.1) ASUS X99-A II on-board Gbit Ethernet Functionality
E.8.2) 10-Gbit LAN Implementations
E.8.2.1) ASUS XG-C100C Aquantia AQC107 10-Gbit NIC
E.8.2.2) Intel X540-T1 10-Gbit NIC
E.8.2.3) Small-Tree P2EI0G-2T 10-Gbit NIC
E.8.2.4) NetGear ProSave XS508M 8-port 10-Gbit Switch
E.8.2.5) QNAP TS-431X2 Quad-core 4-Bay NAS tower
E.8.2.6) 10-GBit Ethernet Optimisation
E.9) ASUS X99-A II PCI Device Implementation
E.9.1) ACPI DSDT Replacement Implementation
E.9.2) System SSDT PCI Device Implementation
E.9.2.1) HDEF - onboard Audio Controller PCI Implementation
E.9.2.2) GFX0, HDAU - GPU and HDMI/DP Audio PCI implementation
E.9.2.3) XGBE - 10GBit NIC PCI Implementation:
E.9.2.4) ETH0 - onboard LAN Controller PCI Implementation
E.9.2.5) SAT1 - Intel AHCI SATA Controller PCI Implementation
E.9.2.6) EVSS - Intel X99 sSata Controller PCI Implementation
E.9.2.7) ANS1 - NVMe Controller PCI Implementation
E.9.2.8) - USBX:
E.9.2.9) XHCI - onboard Extended Host Controller Interface (XHCI) PCI Implementation
E.9.2.10) XHC2 - ASMedia ASM1142 USB 3.1 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) GC-Titan Ridge / GC-Alpine Ridge / Asus TBEX 3 Thunderbolt HotPlug System Implementation
E.9.2.13) DTGP Method
E.9.2.14) - Debugging Sleep Issues
E.10) iMac Pro Boot Splash Screen Cosmetics
E.11) iMac Pro Desktop Background cosmetics
E.12) iStatMenus Hardware Monitoring

F.) Benchmarking
F.1) i7-6950X CPU Benchmarks
F.2) Sapphire Nitro+ Radeon RX Vega 64 8GB OpenGL and Metal Benchmarks


G.) Summary and Conclusion

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

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);
Thunderbolt 3 Add-in: GC-Titane Ridge 40GB/s Intel Thunderbolt 3 Certified Add-in PCIe Adaptor
Graphics: Sapphire Nitro+ Radeon RX Vega 64 8GB
Wifi + Bluetooth: OSXWIFIPC/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 WebCamC930
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 BlueBH16 (BH16NS55)

Thunderbolt: ASUS TBEX 3 and Gigabyte Alpine Ridge

10Gbit Ethernet components:
Let me express my gratitude to @gxsolace at this place for providing me with 1x Intel X540-T1, 1x Small-tree P2EI0G-2T and 4x 12 TB Seagate IronWolf hardware.

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

B.1) Asus Mainboard BIOS Firmware Patching

B.1.1) CPU Microcode Update


Not every BIOS firmware provided by the different Mainbaord manufacturers always accounts for all CPU microcodes distributed by Intel. Recently we witnessed for instance along the latest macOS 10.13 High Sierra distributions and even during the first macOS Mojave 10.14 distribution a Broadwell/Haswell CPU performance issue (no overclocking) in combination with most X99 mainboard implementations to be traced back a missing Intel CPU microcode implementation in most of the distributed Mainbaord BIOS firmwares. To overcome the OC issue, an Intel CPU microcode update within the respective BIOS firmware distributions is absolutely vital and mandatory.

How to perform the Intel CPU microcode update for a given BIOS firmware distribution e.g. under Windows 10 is detailed below for the ASUS X99-A II 1902 BIOS firmware distribution. The same approach, initially provided and described by @michaeljeger (once more many thanks from all of us :thumbup:) can be applied to any other BIOS Firmware distribution of any mainboard manufacturer.

In Windows 10, download the latest UBU software distribution from https://cloud.mail.ru/public/HLDj/6cT1gUPke:

a.) From online directory "UEFI BIOS Updater" download und unrar "UBU_v1_70_rc12.rar" or any newer distribution to an "UBU" directory on your Windows Desktop yet to be created

b.) Also download and unrar "mms.tar" from the online directory "UEFI BIOS Updater". This will create an "mmt" folder, where from the "5.2.0.24" directory you copy "MMTool.exe" to your "UBU" Desktop directory

c.) Download the latest BIOS firmware distribution for your particular mainboard from the respective web page of your mainboard manufacturer. In case of the ASUS X99-A II, it is X99-A-II-ASUS-1902.CAP. Copy the respective BIOS Firmware file to your "UBU" Desktop directory.

Now you have all necessary ingredients in your "UBU" Desktop directory.

d.) Open a windows terminal, change to the "UBU" Desktop directory and launch the UBU software with the terminal command:

Code:
ubu

On UBU software launch, UBU will now scan your BIOS firmware file that you previously added to your "UBU" Desktop directory and detect BIOS platform, manufacturer and mainboard model, as well as EFI Driver and OROM components.

353022


When you are asked to "Press any key to continue..", follow this request.

e.) From the listed options in the consecutive terminal text menu

353023


choose option 5 - CPU Microcode by typing "5" and subsequently pressing the "Enter" button.

f.) Now the tool will analyse whether are not all respective available CPU microcodes are properly implemented in your BIOS firmware. All implemented CPU microcodes will be highlighted by "YES", all missing CPU microcodes will be highlighted by "No".

353024


To download the missing Intel CPU microcodes, choose option "C - Create FFS with MicroCodes" by typing "C" and subsequently pressing the "Enter" button.

g.) In the next terminal text menu the tool will summarise all additional downloaded Intel CPU microcodes:

353025


To implement the new and complete set of available Intel CPU microcodes in your BIOS firmware file, launch "MMTool", which you previously added to your "UBU" desktop directory, by typing "M" and subsequently pressing the "Enter" button.

h.) Now MMTool now will do it's magics and summarise once more the complete Intel microcode table successfully implemented in your BIOS firmware file.

353026


Now choose menu option "0 - Exit to Main Menu" by pressing "0" and subsequently "Enter".

i.) In the next terminal text menu choose "Rename to ASUS USB BIOS Flashback" by pressing "1" and subsequently "Enter".

353027


By this, the UBU tool will save the modified BIOS firmware file in the "UBU" desktop directory already with the correct EZ Flashback convention. For mainboards different from ASUS, this last step might be different though. We have to wait on further user feedback. In case of our ASUS X99-A II 1902 BIOS firmware, we will find X99A2.CAP as the result of the UBU Intel CPU microcode procedure.

After providing our firmware with a complete set of Intel microcode implementations, we can now continue with the firmware patching procedure and unlock the MSR 0xE2 register for OSX Kernel write.

Side note for Gigabyte motherboard users: the additional firmware patching described in B.1.2) might not be necessary, as the MSR register usually is unlocked on Gigabyte motherboards. However, to successfully flash the modified Gigabyte BIOS Firmware with the microcode updates, see post #2632 by @ekwipt.

B.1.2) MSR 0xE2 register unlock for OSX Kernel Write

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 unlock the MSR 0xE2 register for kernel write copy the BIOS firmware file modified in section B.1.1) to the "UEFIPatch_0.3.9_osx" directory on your Desktop.

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

Code:
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 actual BIOS CAP file into the terminal window; Press enter to execute the "UEFIPatch"-procedure.

The equivalent terminal command in case of the ASUS X99-A II BIOS firmware is:

Code:
./UEFIPatch X99A2.CAP

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:

Code:
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 again to X99A2.CAP or to the correct EZ Flashback filename for your particular ASUS Mainbaord by following 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:

338034


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 actual patched BIOS, compatible with native OSX/MacOS power management.

11.) Boot your system and apply the BIOS settings described below.

Instead of stepwise applying the entire Bios firmware patching procedure detailed above, all ASUS X99A-II users can simply download, unzip and flash X99A2.CAP.zip, actual BIOS firmware 1902, accounting for the complete set of available Intel CPU Microcodes, an unlocked MSR register and an iMac Pro Splash Screen Boot Image to be displayed at boot.

B.2) Asus X99-A II BIOS Configuration

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.

338035


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 i9-7980XE stock settings (4.4 Ghz, Sync All Cores), 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 water cooling system! Otherwise, CPU Core Ratio should be set to "Auto". Further note that with CPU Core Ratio set to "Sync All Cores", one might have to set the AVX Instruction Core Ratio Negative Offset to "3" in case of system freezes or system instabilities.

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!

Above 4G Decoding Note: Enable BIOS function "Above 4G Decoding" to avoid memory relocation errors when using AptioMemoryFix.efi on X99 systems.

CPU SVID Support: In addition to the BIOS settings mentioned above one should also Enable CPU SVID support in BIOS Section AI Tweaker, which is fundamental for the proper Intel Power Gadget (IPG) CPU power consumption display.


C.) Important General Note/Advice and Error Prevention

Important general note:
To receive my support in remaining issues, all respective users must provide in their respective posts their complete hardware details, a complete set of screenshots showing all of their BIOS settings, a complete EFI-Folder, an IOREG.save of the system's ACPI table and a system DSDT.aml, as well as a "PCI" screenshot of Apple's system report. It is furthermore supposed that help will only be provided if all details covered by this guide have been carefully considered and implemented.

I really encourage all users seeking for help to provide all necessary information detailed above. Requests, missing this information, will remain without answer from my side now and in the future.

To avoid commonly known user application errors, follow advices and error preventions detailed below, when setting up your x99 System by implementing the actual version of macOS Mojave.

1.) The /EFI/Clover/drivers64UEFI/-directory of my actual respective X99 EFI-Folder distribution contains by default AptioMemoryFix.efi thanks to @vit9696. Note that already with Clover_v2.4k_r4392, AptioMemoryFix.efi has become an official Customization Option of Clover and can now be selected and therefore also just easily implemented in the frame of the Clover Boot Loader Installation.

For native NVRAM implementation, 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:

Code:
sudo rm -rf /etc/rc.boot.d
sudo rm -rf /etc/rc.shutdown.d

Also the "slide" boot flag needs to be disabled.

Enable BIOS function "Above 4G Decoding" to avoid memory relocation errors when using AptioMemoryFix.efi on X99 systems.

2.a) Most ATI GPUs, e.g. RX Vega 64, RX Vega Frontier, RX 580, RX 560 are supposed to be "natively" implemented. It is commonly recommended not to use RX 560 and RX 580 GPUs due to the lacking iGPU implementation when using SMBIOS iMacPro1,1. Given the the recent findings by @Ellybz, upon macOS update 10.14.4 Beta 4 (18E174f), H264/HEVC decoding and encoding also works now with the RX580. No more freezes during encoding, although one still needs to employ the dummy kext provided in post #723 to make this happen.

With macOS 10.14.5 Beta 1, also the new Radeon VII is now natively implemented.

By means of my RadeonVII/Vega64/Vega56/RX560/RX580 SSDTs, available in my respective X99 SSDT Github repository, and Whatevergreen.kext, all available DP and HDMI ports, including multi-monitor support, display HotPlug and system sleep/wake should be automatically and successfully implemented. Whatevergreen.kext only seems required for all Vegas possessing less than 6 physical ports (including the original Vegas like Frontier and Vega 64), else the current AMD SSDTs do pretty well their job.

Important additional comment for all Vega users with 4K monitors though: when connecting a Vega with e.g. the LG 38UC99-W (WUHD, 3840 pix x 1600 pix) via one of the Display Ports (DPs), the screen resolution is fine under both Windows 10 and macOS High Sierra but is totally at odd during boot (VGA like boot screen resolution). The VEGA DP 4K boot screen resolution issue is neither related with the fact that the LG 38UC99-W is an ultra-wide (3840x1600) and not a true UHD (3840x2160) monitor nor related to any likely apparent issue with the ASUS X99-A II firmware. It is definitely a Vega firmware problem in combination with most 4K displays, as the DP 4K boot screen resolution issue is totally absent with any Nvidia GPU and the problem also does not only affect the ASUS Splash Screen but also spreads over the entire boot process until the login screen is reached (Windows and macOS). Splash Screen, Apple logo or verbose boot messages are not stretched but rather have VGA like resolution. Any fix of the AMD vBIOS would be highly appreciated. It is more than disappointing to witness such issues with 600-1000$ GPUs... Fortunately, the 4K boot screen issue is restricted to the Vega DP ports and likely due to the fact that the LG 38UC99-W only supports DP 1.2. Solution: Connect your Vega and your 4K display via the HDMI port. The 30 Hz HDMI monitor frequency issue under 10.13 is successfully removed under Mojave: monitor frequency of 60 Hz with the display connected via HDMI (in contrary to 75 Hz via DP).

b.) Also Nvidia Kepler Graphics Cards are natively implemented.

c.) All Users with Nvidia Maxwell and Pascal Graphics Cards Users still have to wait for the official release of 10.14 Web Drivers. I was actively requesting Web Driver development for macOS 10.14 Betas from Nvidia, which has been rejected. I really hope that Nvidia will not leave again the respective community without Web Driver support. In the meanwhile, Nvidia GPU users have to live with e.g. patched Web Driver xxx.40.105 for macOS High Sierra 10.13.6 after a simple patching procedure detailed in Section E.2), although the latter Web Driver is not really suited for 10.14 and works without hardware acceleration.

3.) The /EFI/Clover/drivers64UEFI/-directory of all former EFI-Distributions contained a patched version of the actual apfs.efi. The actual apfs.efi can be obtained by following the respective guideline detailed below:

Right-click with your mouse on the "Install macOS High Sierra.app" and select "Show Package Contents" -> click with the mouse on "Contents" and subsequently on "Shared Support" -> double-click with the mouse on "BaseSystem.dmg" for mounting.

Go to "usr" -> "standalone" -> "i386". Drop the apfs.efi to your Desktop.

To patch the apfs.efi for non-verbose boot, follow THIS LINK. Credits to @PMheart and @ermac.

Note however, that the entire apsf.efi approach detailed above recently has become totally obsolete. Thanks to the ApfsSupportPkg developed by @acidenthera & Co. and thanks to it's recent implementation to Clover (thanks to @Slice, @Philip Petev & Co.) in form of ApsfDriverLoader.efi, there is no further need of the former apsf.efi in the /EFI/Clover/drivers64UEFI/ directory.

338041


The actual Clover distribution package including the ApsfDriverLoader.efi can by build by means of the Build_Clover.command available on Gitub. Since Version 4.8.8, the latter script also can be used with 10.14 and Xcode 10 +Xcode 10 Command Line Tools thanks to @vector sigma. By adding

Code:
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" && buildclover

to the Build_Clover.command script,

338042


the latter also can be used in case of Brew, QT5, UEFITool or MacPorts implementations like Latex, X11, gcc, etc. not yet fully compatible with 10.14 Mojave. Again thanks to @vector sigma for also providing/enabling this trick/possibility .

4.) To avoid CPU thread TSC desynchronisation errors during boot and wake from S3, likely induced by yet erroneous CPU BIOS microcode implementations, we need to use TSCAdjustReset.kext provided by @interferenc in the /EFI/CLOVER/kexts/Other/ directory of both USB Flash Drive and System Disk in the latter case.

To access TSCAdjustRest.kext, download primarily its source distribution from Github with the following terminal command:

Code:
git clone https://github.com/interferenc/TSCAdjustReset

Subsequently copy the TSCAdjustRest source distribution to your Desktop using the following terminal command:

Code:
mv /TSCAdjustReset ~/Desktop

Now change in the terminal to the TSCAdjustReset source distribution on your Desktop with the following terminal command:

Code:
cd ~/Desktop/TSCAdjustReset/

Now compile the source distribution with Xcode by using the following terminal command:

Code:
xcodebuild

Please note that the TSCAdjustRest.kext by default is configured for a 8-core CPU (16 threads) like the i7-7900X. To adopt the kext for Broadwell-E or Haswell-E processers with more or less cores than 8 cores, apply the following approach:

a.) Right-click with the mouse on the TSCAdjustRest.kext file and select "Show Packet Contents".

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

c.) Use the "find"-function of TextEdit.app and search for the term "IOCPUNumber"

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

Code:
<key>IOCPUNumber</key>                <integer>19</integer>

and following the same methodology, the correct IOCPUNumber for the 6-core i7-6800K is 11 (12 threads -1)

Code:
<key>IOCPUNumber</key>                <integer>11</integer>

e.) After adopting the IOCPUNumber for your particular Broadwell-E/EP, Haswell-E/EP 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!

5.) Like under macOS 10.13 High Sierra also with macOS 10.14 Mojave, Apple forces all users to use the new Apple file system APFS in case of a Clean Install.

In case that you want to remain with the HFS+ file system, use @Brumbear's UnSolid.kext in the /EFI/Clover/kexts/Other/ directory.

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:

Code:
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:

Code:
diskutil unmount /dev/diskX

where diskX is a place holder for the disk to be unmounted.

Now delete the APFS container of diskX:

Code:
diskutil apfs deleteContainer /dev/diskX

Subsequently, you can erase the entire disk with HFS+ and a GPT by typing the following terminal command:

Code:
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:

Code:
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:

Code:
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 10.14 Mojave System Disk to APFS. To do so enter the following terminal command:

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

Important recommendation: If you opt for an APFS System Disk implementation, try to also implement all other disks of your system with APFS file format. 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.

6.) In order to successfully boot your X99 macOS 10.14 Mojave System system, carefully verify that your config.plist contains in Section "KextsToPatch" of Section "Kernel and Kext Patches" of Clover Configurator the 10.14 IOPCIFamily Kext Patch kindly provided by @PMheart.

338044



D.) iMac Pro macOS 10.14 Mojave System Setup

Below, one finds a detailed description for the Installation/Update of/to macOS Mojave 10.14. This also includes the EFI-Folder Preparation (D.1), the macOS Mojave 10.14 Installer Package creation (D.2), the macOS Mojave USB Flash Drive Installer Creation (D.3) and the macOS Mojave 10.14 Clean Install. One also finds instructions for a direct iMac Pro conversion of a functional Broadwell-E/EP, Haswell-E/EP X99 system with a SMBIOS System Definition different from iMacPro1,1 and standard macOS build implementation (D.5) of any former macOS distribution. D.6 finally provides details to the future iMac Pro macOS Mojave Update Procedure.


D.1) iMac Pro 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 iMacPro1,1 System definition.

1.) Download and unzip my actual respective X99 EFI-Folder distribution 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 iMacPro1,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 iMacPro1,1 SMBIOS Details are already implemented in the config.plist of my actual respective X99 EFI-Folder distribution.

Press several times the "Generate New" Button next to the serial number text field to generate a serial number and board serial number.

With SMBIOS of an iMacPro1,1 it is not currently possible to verify the validity of the serial number on everymac.com.
Therefore, verify the validity of your serial number on appleserialnumberinfo.com instead.

Open the https://checkcoverage.apple.com site, paste your Serial Number and confirm that the serial number is not in use yet.

Finally press several times the "Generate New" button next to SmUUID. For further details see An idiot's guide to iMessage.

Depending on your system configuration (Broadwell-E/EP or Haswell-E/EP) change or adopt the following settings if necessary:

338047


a.) Users of mainboards with locked MSR Register (disabled MSR OSX Kernel write access) have to add the xcpm_core_scope_msrs © Pike R. Alpha Kernel patch in their config.plist under "KernelToPatch" in Section "Kernel and Kext Patches" of Clover Configurator

xcpm_core_scope_msrs © Pike R. Alpha 10.14 (kindly provided by @PMheart)

Code:
Find: 31 d2 e8 91 fc ff ff
Replace: 31 d2 90 90 90 90 90

and also to check "KernelPm".

b.) "FakeCPUID" in "Kernel and Kext Patches" Section of Clover Configurator:

Broadwell-E/EP FakeCPUID: "0x040674"

Haswell-E/EP standard FakeCPUID: not required, natively supported

c.) All Broadwell-E/EP and Haswell-E/EP users have to enable the macOS independent _xcpm performance kernel patch for 10.13.6+ and all 10.14 version (kindly provided by @PMheart) and based on the method developed by @vit9696) in their config.plist under "KernelToPatch" in Section "Kernel and Kext Patches" of Clover Configurator to enable the OC capability of their respective CPUs.

macOS independent _xcpm performance kernel patch for 10.13.6+ and all 10.14 version (kindly provided by @PMheart) and based on the method developed by @vit9696)

Code:
Find:    C1E30848 63D389D0 48C1EA20
Replace: C1E308B8 00FF0000 31D29090

To successfully boot my Broadwell-E X99 System and to obtain full XCPM-performance I also need to include the following Kernel patch:

d.) _xcpm_pkg_scope_msrs © Pike R. Alpha 10.14 (kindly provided by @PMheart)

Code:
Find: 31D2E8AE FCFFFF
Replace: 31D29090 909090

Further one might want to include:

e.) _xcpm_SMT_scope_msrs 1 & 2 © Pike R. Alpha 10.14 (kindly provided by @PMheart)

Code:
Find: BE0B0000 005DE908 000000
Replace: BE0B0000 005DC390 909090

Code:
Find: 31D2E87E FCFFFF
Replace: 31D29090 909090

f.) Enable "PluginType" in your config.plist under SSDT/Generate Options/ in Section ACPI of Clover Configurator for a fully working XCPM implementation. Note that by this, Pike Alpha's former ssdt.aml XCPM implementation becomes totally obsolete.

338051


g.) 10.14 IOPCIFamily kext patch (kindly provided by @PMheart)

Code:
Name*             Find*[HEX]          Replace*[HEX]       Comment
IOPCIFamily       483D0000 0040       483D0000 0080       IOPCIFamily patch © PMHeart

h.) Enable USB port limit patches:

Valid USB port limit patches for 10.14.4 provided by @PMHeart (hardwired but yet disabled in my respective EFI-Folder distribution)by following initial USB port limit patch approach for 10.14.3 by @ydeng :

Code:
kext     : com.apple.iokit.IOUSBHostFamily
Find     : 83FB0F0F 87
Replace  : 83FB3F0F 87
Name     : USB Port Limit Patch 1 ©PMHeart

Code:
kext     : com.apple.driver.usb.AppleUSBXHCI
Find     : 4183FF0F 0F83
Replace  : 4183FF3F 0F83
Name     : USB Port Limit Patch 2 ©PMHeart

Code:
kext     : com.apple.iokit.IOUSBHostFamily
Find     : 83E30FD3 E34109DF
Replace  : 83E33FD3 E34109DF
Name     : USB Port Limit Patch 3 ©PMHeart

i.) config.plist "Type" entry in Section "CPU" of Clover Configurator:

By default, "0x0F01" for XEON-W is implemented for Cpu "Type" in the config.plist of the default EFI-Folder configuration, in compliance with SMBIOS iMacPro1,1. While "0x0F01" is fully valid for Syklake-X on X299 platforms, one should better use the correct "Type" entries for the different Broadwell and Haswell CPUs tabled below and kindly provided by @PMHeart:

Code:
Haswell-E:
⁃ Core i7 Extreme (5960X, 5930K, 5820K): 0x0705
⁃ Xeon E7: 0x0501

Haswell-EP:
⁃Xeon E5: 0x0A01

Broadwell-E:
Core i7 (6950X, 6900K, 6850K, 6800K): 0x0706

Broadwell-EP:
⁃ Xeon E5: 0x0A01

Finally save the modified config.plist.

3.) Now copy the appropriate TSCAdjustRest.kext, which has been modified in error prevention C.4), 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) iMac PromacOS Mojave 10.14 Installer Package Creation

If you are not able to successfully download the macOS Mojave 10.14.4 (18E226) full package installer (6.04 GB) from the Appstore, follow the individual steps detailed below:

1.) Open a terminal and create a "041-56507" directory on your Desktop. Subsequently change to the newly created directory. All this can be done with the following terminal commands:

Code:
mkdir ~/Desktop/041-56507/
cd ~/Desktop/041-56507/

2.) Download the following files from the Apple server (public links) to your ~/Desktop/041-56507/ directory by a copy & paste of the following terminal commands:

Code:
curl https://swdist.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/041-56507.English.dist -o 041-56507.English.dist
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/InstallAssistantAuto.smd -o InstallAssistantAuto.smd
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/AppleDiagnostics.chunklist -o AppleDiagnostics.chunklist
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/AppleDiagnostics.dmg -o AppleDiagnostics.dmg
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/OSInstall.mpkg -o OSInstall.mpkg
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/BaseSystem.chunklist -o BaseSystem.chunklist
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/InstallESDDmg.chunklist  -o InstallESDDmg.chunklist
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/BaseSystem.dmg -o BaseSystem.dmg
curl https://swdist.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/RecoveryHDMetaDmg.pkm -o RecoveryHDMetaDmg.pkm
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/RecoveryHDMetaDmg.pkg -o RecoveryHDMetaDmg.pkg
curl https://swdist.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/InstallAssistantAuto.pkm -o InstallAssistantAuto.pkm
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/InstallAssistantAuto.pkg -o InstallAssistantAuto.pkg
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/InstallInfo.plist -o InstallInfo.plist
curl https://swdist.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/MajorOSInfo.pkm -o MajorOSInfo.pkm
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/MajorOSInfo.pkg -o MajorOSInfo.pkg
curl https://swdist.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/InstallESDDmg.pkm -o InstallESDDmg.pkm
curl http://swcdn.apple.com/content/downloads/32/45/041-56507/k6okp4vkzucqpoxrgrgycji6jo8z8na8sg/InstallESDDmg.pkg -o InstallESDDmg.pkg

The full list of package files can be found within the following catalog URL, searching for key "k6okp4vkzucqpoxrgrgycji6jo8z8na8sg":

https://swscan.apple.com/content/ca...ion-snowleopard-leopard.merged-1.sucatalog.gz


3.) Create the installer.pkg on your Desktop with the following terminal command:

Code:
cd ..
productbuild --distribution ./041-56507/041-56507.English.dist --package-path ./041-56507/ installer.pkg


4.) Create the "Install MacOS Mojave" in the /Applications folder of your System Disk with the following terminal command:

Code:
sudo /usr/sbin/installer -pkg installer.pkg -target /

In case that you receive an error message, ignore the latter and proceed with 5.)

5.) Now add the following files to your "Install macOS Mojave.app" with the following terminal commands:

Code:
sudo cp ./041-56507/InstallESDDmg.pkg /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/InstallESD.dmg
sudo cp ./041-56507/AppleDiagnostics.dmg /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/
sudo cp ./041-56507/AppleDiagnostics.chunklist /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/
sudo cp ./041-56507/BaseSystem.dmg /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/
sudo cp ./041-56507/BaseSystem.chunklist /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/

Verify your "Install Mojave.app" for completeness. You should now have a complete macOS Mojave 10.14 (18E226) Installer package in your /Applications Folder.

The entire iMac Pro macOS Installer Package Creation Approach detailed above has been verified and approved by Motbod and is fully in line with the actual board rules.

The entire "Install macOS Mojave.app" creation procedure has been also fully automatised within one single script, as already implemented for macOS High Sierra with the help of @macandrea.

createInstaller-10.14.4-23042019.sh will automatically create on any MacOS System the "Install macOS Mojave.app" for macOS Mojave 10.14.4 (18E226) in the /Applications folder.

Just download und unzip createInstaller-10.14.4-23042019.sh.zip and run the following terminal commands:

Code:
cd ~/Downloads
chmod +x createInstaller-10.14.4-23042019.sh
./createInstaller-10.14.4-23042019.sh

And here is createInstaller-10.14.4-SB-23042019.sh.zip, which will automatically create on any MacOS System the "Install macOS Mojave.app" for macOS Mojave 10.14.4 (18E2034) - special build in the /Applications folder.

Just download und unzip createInstaller-10.14.4-SB-23042019.sh.zip and run the following terminal commands:

Code:
cd ~/Downloads
chmod +x createInstaller-10.14.4-SB-23042019.sh
./createInstaller-10.14.4-SB-23042019.sh

D.3) iMac PromacOS Mojave 10.14 USB Flash Drive Installer Creation

Follow the individual steps detailed below to successfully create a bootable iMac Pro macOS Mojave 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 macOS Mojave 10.14 Installer Package in your /Application Folder, connect your USB Flash Drive (named USB) and run the following terminal command:

Code:
sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --nointeraction

3.) For successfully booting your iMac Pro macOS USB Flash Drive Installer, the latter must however also contain a valid EFI- Folder with an SMBIOS iMacPro1,1 system definition. Thus, copy the EFI-Folder you prepared in Section D.1) to the yet empty EFI Partition of your macOS USB Flash Drive Installer.

You now have a fully functional and bootable macOS Mojave 10.14 USB Flash Drive Installer.

D.4) iMac PromacOS Mojave Clean Install on Skylake-X/X299

Follow the individual steps detailed below to successfully setup macOS Mojave 10.14 on a virgin system drive of your choice (NVMe, SSD or HDD).

1.) In order to perform a clean install of macOS Mojave 10.14, 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 macOS Mojave 10.14 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 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 macOS USB Flash Drive Installer.

6.) After successful boot, pass the individual steps of the macOS 10.14 Mojave installation menu and finally select the destination drive of your macOS 10.14 Mojave Installation, which should be logically the system disk you successfully configured above. In the next step, the Installer will create a macOS Mojave 10.14 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 Mojave 10.14 Installer Partition on your system disk.

8.) After successful boot, you will enter now the macOS Mojave 10.14 Installer Screen with a progress bar starting at about 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 Mojave" icon on the clover boot screen to boot the new macOS Mojave partition of your system disk.

10.) After successful boot you have to perform the iCloud registration to have your first iMac Pro macOS macOS Mojave 10.14.

Proceed with Section D.6) - iMac Pro macOS High Sierra Build Updates (if necessary) or E.) - Post Installation Process.

D.5) Direct iMac Pro conversions of a functional Skylake-X/X299 system with a SMBIOS System Definition different from iMacPro1,1 and a standard macOS build implementation

1.) Replace the EFI-Folder of your System Disk by the EFI-Folder you created in Section D.1)

2.) Copy /System/Library/CoreServices/PlatformSupport.plist to your Desktop, add BoardID "Mac-7BA5B2D9E42DDD94" under SupportedBoardIDs by means of Xcode as suggested by user Griven from the German Hackintosh-Forum and copy back the modified PlatformSupport.plist to System/Library/CoreServices/.

3.) If not already in your /Applications folder after performing Section D.2), copy the iMac Pro macOS Installer Package to your /Applications folder.

4.) Double click on the "Install macOS Mojave.app" in the /Applications Folder to start the macOS Mojave 10.14 installation.

5.) After reboot, click on the "Install MacOS.." Icon in the clover boot screen to boot the newly created macOS Mojave 10.14 Installer Partition on your system disk.

6.) After successful boot, you will enter now the macOS Mojave 10.14 Installer Screen with a progress bar starting at 43 minutes.

7.) After another reboot, click on the "MacOS Mojave" icon in the clover boot screen to boot the updated macOS Mojave 10.14 on your system disk.

8.) After successful boot you have to register at iCloud at the end of the macOS installation, and you will now have your first iMac Pro with macOS Mojave 10.14.

Proceed with Section D.6) - iMac Pro macOS 10.14 Mojave Update Procedure (if necessary) or Section E.) - Post Installation Process.

D.6) iMac Pro macOS 10.14 Mojave Update Procedure

If you already used my 10.13 iMacPro X99 guide to setup a 10.13 iMacPro macOS build, you simply have to update your EFI-Folder and directly perform the update to macOS 10.14 Mojave from System Disk by else following steps 4.) to 8.) of D.5) above. Any future macOS Mojave update can be directly performed via "Software Update" under "System Preferences".


E.) Post Installation Process

E.1) XNU CPU Power Management (XCPM) Configuration


The config.plist of my actual respective X99 EFI-Folder distribution already contains a fully functional XCPM configuration for the i7-6950X Broadwell-E CPU, which just needs to be adopted for other CPU configurations (Broadwell-E/EP different from i7-6950X, Haswell-E/EP).

Before adapting 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.) Open the config.plist of your 10.14 system disk and revise the "Kernel and Kext Patches" Section.

338047


a.) Users of mainboards with locked MSR Register (disabled MSR OSX Kernel write access) have to add the xcpm_core_scope_msrs © Pike R. Alpha Kernel patch in their config.plist under "KernelToPatch" in Section "Kernel and Kext Patches" of Clover Configurator

xcpm_core_scope_msrs © Pike R. Alpha 10.14 (kindly provided by @PMheart)

Code:
Find: 31 d2 e8 91 fc ff ff
Replace: 31 d2 90 90 90 90 90

and also to check "KernelPm".

b.) "FakeCPUID" in "Kernel and Kext Patches" Section of Clover Configurator:

Broadwell-E/EP FakeCPUID: "0x040674"

Haswell-E/EP standard FakeCPUID: not required, natively supported

c.) All Broadwell-E/EP and Haswell-E/EP users have to enable the macOS independent _xcpm performance kernel patch for 10.13.6+ and all 10.14 version (kindly provided by @PMheart) and based on the method developed by @vit9696) in their config.plist under "KernelToPatch" in Section "Kernel and Kext Patches" of Clover Configurator to enable the OC capability of their respective CPUs.

macOS independent _xcpm performance kernel patch for 10.13.6+ and all 10.14 version (kindly provided by @PMheart) and based on the method developed by @vit9696)

Code:
Find:    C1E30848 63D389D0 48C1EA20
Replace: C1E308B8 00FF0000 31D29090
382077

To successfully boot my Broadwell-E X99 System and to obtain full XCPM-performance I also need to include the following Kernel patch:

d.) _xcpm_pkg_scope_msrs © Pike R. Alpha 10.14 (kindly provided by @PMheart)

Code:
Find: 31D2E8AE FCFFFF
Replace: 31D29090 909090

Further one also might like to implement:

e.) _xcpm_SMT_scope_msrs 1 & 2 © Pike R. Alpha 10.14 (kindly provided by @PMheart)

Code:
Find: BE0B0000 005DE908 000000
Replace: BE0B0000 005DC390 909090

Code:
Find: 31D2E87E FCFFFF
Replace: 31D29090 909090

All other former XCPM kernel patches have become obsolete also with 10.14 at least for Broadwell-E.

f.) Enable "PluginType" in your config.plist under SSDT/Generate Options/ in Section ACPI of Clover Configurator for a fully working XCPM implementation. Note that by this, Pike Alpha's former ssdt.aml XCPM implementation becomes totally obsolete.

338051


g.) Also verify once more in concordance with Error Protection C.6) that the 10.14 IOPCIFamily kext patch is enabled in your config.plist!

10.14 IOPCIFamily kext patch (kindly provided by @PMheart)

Code:
Name*             Find*[HEX]          Replace*[HEX]       Comment
IOPCIFamily       483D0000 0040       483D0000 0080       IOPCIFamily patch © PMHeart

There is also no need for injecting any additional frequency vector.

h.) config.plist "Type" entry in Section "CPU" of Clover Configurator:

By default, "0x0F01" for XEON-W is implemented for Cpu "Type" in the config.plist of the default EFI-Folder configuration, in compliance with SMBIOS iMacPro1,1. While "0x0F01" is fully valid for Syklake-X on X299 platforms, one should better use the correct "Type" entries for the different Broadwell and Haswell CPUs tabled below and kindly provided by @PMHeart:

Code:
Haswell-E:
⁃ Core i7 Extreme (5960X, 5930K, 5820K): 0x0705
⁃ Xeon E7: 0x0501

Haswell-EP:
⁃Xeon E5: 0x0A01

Broadwell-E:
Core i7 (6950X, 6900K, 6850K, 6800K): 0x0706

Broadwell-EP:
⁃ Xeon E5: 0x0A01

2.) Reboot after applying any changes.

To verify your XCPM configuration, perform the following steps:

1.) Verify with the terminal command "sysctl machdep.xcpm.mode" if the XCPM mode is active. If so, "sysctl machdep.xcpm.mode" should return "1".

2.) Verify that in the IORegistryExplorer you have the following entry under CP00@0:

Code:
Property:         Type:         Value:
plugin-type       Number        0

3.) Verify with the terminal command

Code:
kextstat|grep -y x86plat

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

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


4.) Verify with the terminal command

Code:
[code]kextstat|grep -y appleintelcpu
[/code]

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


5.) To verify that the Frequency-Vectors are loaded, use the following terminal command:

Code:
sysctl -n machdep.xcpm.vectors_loaded_count

If everything is ok, the command returns "1".

6.) To obtain further information on your XCPM Power Management configuration, 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:

Code:
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:

Code:
sudo kextload AppleIntelInfo.kext

Code:
sudo cat /tmp/AppleIntelInfo.dat

The cat command should reveal something like the following result:

Code:
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:

Code:
sudo kextunload AppleIntelInfo.kext


E.2) Graphics Configuration

Most ATI GPUs, e.g. RX Vega 64, RX Vega Frontier, RX 580, RX 560 are supposed to be "natively" implemented. It is commonly recommended not to use RX 560 and RX 580 GPUs due to the lacking iGPU implementation when using SMBIOS iMacPro1,1. Given the the recent findings by @Ellybz, upon macOS update 10.14.4 Beta 4 (18E174f), H264/HEVC decoding and encoding also works now with the RX580. No more freezes during encoding, although one still needs to employ the dummy kext provided in post #723 to make this happen.

With macOS 10.14.5 Beta 1, also the new Radeon VII is now natively implemented.

By means of my RadeonVII/Vega64/Vega56/RX560/RX580 SSDTs, available in my respective X99 SSDT Github repository, and Whatevergreen.kext, all available DP and HDMI ports, including multi-monitor support, display HotPlug and system sleep/wake should be automatically and successfully implemented. Whatevergreen.kext only seems required for all Vegas possessing less than 6 physical ports (including the original Vegas like Frontier and Vega 64), else the current AMD SSDTs do pretty well their job.

Important additional comment for all Vega users with 4K monitors though: when connecting a Vega with e.g. the LG 38UC99-W (WUHD, 3840 pix x 1600 pix) via one of the Display Ports (DPs), the screen resolution is fine under both Windows 10 and macOS High Sierra but is totally at odd during boot (VGA like boot screen resolution). The VEGA DP 4K boot screen resolution issue is neither related with the fact that the LG 38UC99-W is an ultra-wide (3840x1600) and not a true UHD (3840x2160) monitor nor related to any likely apparent issue with the ASUS X99-A II firmware. It is definitely a Vega firmware problem in combination with most 4K displays, as the DP 4K boot screen resolution issue is totally absent with any Nvidia GPU and the problem also does not only affect the ASUS Splash Screen but also spreads over the entire boot process until the login screen is reached (Windows and macOS). Splash Screen, Apple logo or verbose boot messages are not stretched but rather have VGA like resolution. Any fix of the AMD vBIOS would be highly appreciated. It is more than disappointing to witness such issues with 600-1000$ GPUs... Fortunately, the 4K boot screen issue is restricted to the Vega DP ports and likely due to the fact that the LG 38UC99-W only supports DP 1.2. Solution: Connect your Vega and your 4K display via the HDMI port. The 30 Hz HDMI monitor frequency issue under 10.13 is successfully removed under Mojave: monitor frequency of 60 Hz with the display connected via HDMI (in contrary to 75 Hz via DP).

Also Nvidia Kepler Graphics Cards are natively implemented.

All Users with Nvidia Maxwell and Pascal Graphics Cards Users still have to wait for the official release of 10.14 Web Drivers. I was actively requesting Web Driver development for macOS 10.14 Public Betas from Nvidia, which has been rejected. I really hope that Nvidia will not leave again the respective community without Web Driver support. In the meanwhile, Nvidia GPU users have to live with e.g. patched Web Driver xxx.40.105 for macOS High Sierra 10.13.6 after a simple patching procedure detailed below, although the latter Web Driver is not really suited for 10.14 and works without hardware acceleration.

How to patch an Nvidia 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 installing the patched Nvidia Web Driver xxx.35.106 under macOS Mojave 10.14.

Nvidia Web Driver Installation and Black Screen Prevention:

Apparently with SMBIOS iMacPro1,1, the Nvidia Black Screen Prevention has become obsolete. Thanks to @fabiosun for this finding. Thus, NvidiaGraphicsFixup.kext, subverting AppleMobileFileIntegrity banning the driver can be theoretically removed from the /EFI/CLOVER/kexts/Other/ directory of your macOS Flash Drive Installer and System Disk. However, actual releases of Whatevergreen.kext and Lilu.kext apparently also help in fixing the Nvidia HDAU implementation and sporadic black screen issues while wake from sleep. Thus, the latter kext combination might still represent potential workarounds for few likely remaining system issues.

a.) Install the patched Nvidia 10.13 Web Driver Package.

b.) Now perform the following additional steps:

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 "17F77" to "18D42", the corresponding build number of MacOS Mojave 10.14.3.

v.) Save the "Info.plist" file and copy the modified "NVDAStartupWeb.kext" to /L/E/ with root permission.

vi.) Open a terminal and enter the following commands:

Code:
sudo chmod -R 755 /Library/Extensions/NVDAStartupWeb.kext

Code:
sudo chown -R root:wheel /Library/Extensions/NVDAStartupWeb.kext

Code:
sudo touch /System/Library/Extensions && sudo kextcache -u /

Code:
sudo touch /Library/Extensions && sudo kextcache -u /

vii.) Reboot.

viii.) The patched Web Driver might not be active yet. Therefore, open the Nvidia Driver Manager and select "Nvidia Web Driver".

ix.) Now reboot as requested and you have a Web Driver implmenetation for MacOS Mojave 10.14.3.

E.3) Audio Configuration

My actual respective X99 EFI-Folder distribution contains an already fully functional AppleALC audio configuration. The latter consist of:

1.) Actual versions of codeccommander.kext, AppleALC.kext and Lilu.kext in "/EFI/CLOVER/kexts/Other/

338081


2.) Note that ALZA -> HDEF ACPI patch needs to be added to the config.plist in Section "ACPI" of Clover Configurator, in case one does not use the adopted system SSDT discussed in Section 9.2).

Code:
Comment:                Find:           Replace:
ALZA -> HDEF            414c5a41        48444546

When implementing the SSDT in Section 9.2), we will perform the ALZA -> HDEF ACPI replacement directly within the SSDT. We then have to remove again the ALZA -> HDEF ACPI replacement from the config.plist!

3.) Audio ID Injection "5" in the config.plist under Audio/Inject in Section "Devices" of Clover Configurator.

338082


This audio configuration provides a correct analogue onboard audio chipset system implementation.

The correct digital HDMI/DP HDAU PCI device implementation will be detailed in Section E.9) in line with the HDEF and GPU PCI device implementation.

Thanks to @nmano for helping me with the initial AppleALC audio setup for 10.14 Mojave.

E.4) USB Configuration

Since 10.13.SU and with AppleIntelPCHPMC, macOS should properly implement all external and internal XHC USB 3.0 (USB 3.1 Gen 1 Type-A) and USB 2.0 (USB 2.0 Gen 1 Type-A) connectors, always provided that one uses working USB port limit patches.

Valid USB port limit patch for 10.14.4 provided by @PMHeart (hardwired but yet disabled in my respective EFI-Folder distribution) by following USB port limit patch approach for 10.14.3 by @ydeng:

USB port limit patch for 10.14.4 provided by @PMheart:

Code:
kext     : com.apple.iokit.IOUSBHostFamily
Find     : 83FB0F0F 87
Replace  : 83FB3F0F 87
Name     : USB Port Limit Patch 1 ©PMHeart

Code:
kext     : com.apple.driver.usb.AppleUSBXHCI
Find     : 4183FF0F 0F83
Replace  : 4183FF3F 0F83
Name     : USB Port Limit Patch 2 ©PMHeart

Code:
kext     : com.apple.iokit.IOUSBHostFamily
Find     : 83E30FD3 E34109DF
Replace  : 83E33FD3 E34109DF
Name     : USB Port Limit Patch 3 ©PMHeart

USB port limit patches for 10.14.3 provided by ©ydeng:

Code:
kext     : com.apple.iokit.IOUSBHostFamily
Find     : 83FB0F0F 871604 00
Replace  : 83FB3F0F 871604 00
Name     : USB Port Limit Patch 1 ©ydeng

Code:
kext     : com.apple.driver.usb.AppleUSBXHCI
Find     : 83FB0F0F 838F0400 00
Replace  : 83FB3F0F 838F0400 00
Name     : USB Port Limit Patch 2 ©ydeng

Code:
kext     : com.apple.iokit.IOUSBHostFamily
Find     : 83E30FD3 E34109DF
Replace  : 83E33FD3 E34109DF
Name     : USB Port Limit Patch 3 ©ydeng

However, it is strongly recommended to use board-specific XHC USB kexts in addition. Such board-specific XHC USB kexts can be easily created for any motherboard of any brand by following my respective XHC USB Kext Creation guideline. Being mainboard specific, a XHC USB kext is only valid for one particular mainboard model although users of the same mainboard model naturally can share the same XHC USB kext, if complete and properly implemented without any additional efforts.

KGP-iMacPro-ASUS-X99AII-XHCI.kext would be the XHC USB kext for the ASUS X99-A II with all 20 ports implemented.

However, it is strongly recommend to keep respective USB port limit patches disabled and to use a truncated 15-port kext instead, which might avoid buffer overruns and makes your system more vanilla with respect to future macOS updates.

For the truncated 15-port kext, we have to drop some of the 20 HS and SS ports implemented from the kext to stay within Apple's 15 USB port limit. For truncating a fully implemented XHC USB kext (all 20 HS and SS ports implemented), I usually recommend to drop one out of usually two internal USB3.0 connectors (which already reduces the number of implemented ports to 16 for the ASUS ASUS X99-A II):

363079


To remain within the 15 USB port limit, I also recommend to drop one of the four USB2.0 ports at the backside of the mainboard from the kext (HS05, HS06, HS13 or HS14), which further reduces the number of implemented USB ports by one.

361922


Thus, in total we have now 15 implemented HS and SS ports and we just stay within the 15 USB port limit. In the truncated KGP-iMacPro-ASUS-X99AII-XHCI-15port.kext attached below, I removed HS03, HS04, SSP3, SSP4 (assigned to the internal USB3.0 header USB3_34) and HS05 (assigned to the most right USB2.0 connector in the second column from top on the back panel of the mainboard) from the kext. By this, all other USB2.0 and USB3.0 ASUS-A II onboard connectors remain fully functional. Alternatively, one could also drop e.g. HS01, HS01, SSP1, SSP1 (assigned to the internal USB3.0 header USB3_12) and either HS13, HS14 or HS06 from KGP-iMacPro-ASUS-X99AII-XHCI.kext. Up to your personal taste.

All experienced users are kindly invited to provide their fully implemented XHC USB kext and truncated 15-port XHC USB kext for a motherboard not yet being part of the respective XHC USB Kext Library with an implemented port-layout.rtf and by else following the correct kext nomenclatures defined in my XHC USB Kext creation guidelines in line with full motherboard and SMBIOS denominations.

Remaining USB ejection issues during sleep/wake likely can be fixed by 3rd party software tools like e.g. mountain.app

E.5) M.2/NVMe Configuration

In contrary to macOS Sierra 10.12, and like already in case of macOS High Sierra 10.13, also macOS 10.14 Mojave 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 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.

Code:
Name*            Find* [HEX]           Replace* [HEX]        Comment
IONVMeFamily     4885c074 07808b20     4885c090 90808b20     External NVME Icon Patch
[/code]

Not however that within the actual 10.14 Mojave distribution, this approach does not seem to work anymore, despite the KextToPatch entry detailed 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

338086


3.) Download and unzip the SSDT-NVMe-extern-icon-patch.aml.zip, and open the SSDT-NVMe-extern-icon-patch.aml with MaciASL, both attached towards the end of this guide. 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.

338087


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.


E.6) SSDT/NVMe TRIM Support

Macs only enable TRIM for Apple-provided solid-state drives they come with. If you upgrade a Mac with an aftermarket SSD/NVMe, the Mac won’t use TRIM with it. The same applies for SSDs/NVMes used by a Hackintosh. When an operating system uses TRIM with a solid-state drive, it sends a signal to the SSD/NVMe every time you delete a file. The SSD/NVMe 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/NVMe 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/NVMe can then manage its available storage more intelligently.

Note that the config.plist of my actual respective X99 EFI-Folder distribution contains an SSD/NVMe "TRIM Enabler" KextsToPatch entry, which can be found in the " Kernel and Kext Patches" Section of the Clover Configurator.

338091


Code:
Name*                   Find*[HEX]                  Replace*[HEX]               Comment
IOAHCIBlockStorage      4150504c 45205353 4400      00000000 00000000 0000      Trim Enabler

With this KextToPatch entry, SSD/NVMe TRIM should be fully enabled also on your 10.14 System. See your Apple's System Report.

E.7) GC-Titan Ridge / GC-Alpine Ridge or ASUS TBEX 3 Add-in PCIe Adapter Implementation

For the successful implementation of the GC-Titan Ridge, GC-Alpine Ridge (recommended) or ASUS Thunderbolt EX3 (not verified) PCIe Add-In Adapters, a fully working Dual Boot System with an UEFI Windows Implementation is unfortunately absolutely mandatory. You will not be able to configure your Thunderbolt 3 Adapter in the mainboard BIOS, until the Adapter has been successfully recognised and initialised by the UEFI Windows System. Fortunately legal and official License Keys for the actual Windows 10 Pro distribution can be purchased with a little bit of temporal effort on Google for an actual price of 20 $ or even below! Thus, the installation of a dual boot system with Windows will require some additional temporal user effort but will not noticeably further affect the users's budget.

Please note that I especially emphasize the term UEFI, when speaking about the parallel Windows implementation. Don't use or perform a Legacy Implementation of Windows! In order to properly implement your Windows partition later-on in the Clover Bootloader and to comply with the actual Mainbaord-BIOS settings requirements,
it is absolutely mandatory to run or perform an UEFI Windows implementation!

So if not already implemented, how to achieve a fully working UEFI Windows Implementation and Dual boot System with Windows?

1.)
Important Note! For the implementation of the UEFI Windows Distribution disconnect all usually plugged macOSDrives from your rig! The Windows installer will implement a Windows Boot Loader! If you have any macOS Drive connected during installation, the latter Windows Boot Loader might overwrite and destroy your current Clover Boot Loader. This is the last thing you want! Thus for the windows installation just connect the destination drive for the installation and the Windows USB Flash Drive Installer your will create in the subsequent step below!

2.) This Tutorial explains in all necessary detail how to download an actual Windows 10 Creator distribution, and how tosubsequently create a bootable USB Flash Drive Installer for a subsequent UEFI Windows 10 installation by means RUFUS! Don't put emphasis on alternative optional methods and always take care that you just follow the instructions for a successful subsequent UEFI Windows Installation!


3.) This Tutorial explains in all necessary detail how to properly perform the actual Windows 10 Pro Creator UEFIInstallation, subsequent to the a bootable Windows USB Flash Drive Installer realisation detailed in 2.) above.

4.) This Tutorial explains in all necessary detail, how to migrate/clone/backup your Windows 10 UEFI System Disk afterinstallation for future maintenance and safety.

5.) After successfully performing the UEFI Windows 10 Pro Creator Implementation, you can reconnect your macOS drive to your rig. The newly created UEFI Windows 10 Pro Creator Partition will automatically appear as a further boot option in both BIOS Boot Option Menu (F8) and Clover Boot Menu! No additional or further actions or measurements have to be taken!


6.) Once your Windows 10 Pro Creator Partition is fully operational, install all mainboard drivers and programs implemented on the DVD attached to your mainboard.

7.) Now switch off your rig and start with the installation of our Thunderbolt 3 Add-In PCIe Adapter

I recommend to install the Thunderbolt 3 Add-In PCIe Adapter in the 4th PCIe Slot from top, which is PCIEX_3

8.) Reboot into windows and install accompanying TB3 PCIe Drivers and Software.

9.) Reboot and enter the Mainboard BIOS (F2)

Go to /Advanced/ Thunderbolt(TM) Configuration/ and apply the following BIOS Settings detailed below:

356468


10.) Shut down your rig, connect the Thunderbolt Device to your Thunderbolt 3 Adaptor and boot your system.

11.) You are done! Your Thunderbolt 3 Adapter and the connected device should now be fully implemented and functional.

12.) We will add TB XHC USB and TB HotPlug functionality in Section E.9.2) of this guide. Note that at least with the GC-Titan Ridge and GC-Alpine Ridge, HotPlug and full sleep/wake functionality can be gained with the THB_C connected.

E.8) Gbit and 10-Gbit Ethernet Implementations

Section E.8.1) and and E.8.2.) below, describe in all necessary detail how to gain full Gbit and 10-Gbit LAN functionality on X99 systems.

E.8.1) ASUS X99-A II onboard Gbit Ethernet Functionality

The Intel I218-V2 Gigabit on-board LAN controller of the ASUS X99-A II is implemented by means of IntelMausiEthernet.kext (already part of my EFI-Folder distributions).

E.8.2) 10-Gbit LAN Implementations

E.8.2.1)
ASUS XG-C100C Aquantia AQC107 10-Gbit NIC


Starting with 10.13.2 there is native support for the Aquantia AQTION AQC107 10-GBit NIC of the iMac Pro in form of vanilla kext "AppleEthernetAquantiaAqtion.kext", which is further part of "IONetworkingFamily.kext/Contents/PlugIns/" placed in /System/Library/Extensions/ (credits to @mikeboss). First success with the ASUS XG-C100C under MacOS 10.13.3 has been reported by @d5aqoep. @Mieze finally came up with a AppleEthernetAquantiaAqtion KextPatch for the use of the ASUS XG-C100C also under 10.13.4 and and later macOS versions.

AppleEthernetAquantiaAqtion 10.14 Kext patch

Code:
Name*                            Find*[HEX]           Replace*[HEX]      Comment                                       
AppleEthernetAquantiaAqtion      6275696C 742D696E    62626262 62626262  Aquantia "built-in" patch ©Mieze

How to successfully implement the ASUS XG-C100C AQC107 PCIe x4 10GBit Ethernet Adapter is described in Section E.8.2.1 of 10.13-iMP-X299-BDG.


Preferable AQC107 10-Gbit NIC PCIe solutions now available on the market are the Syba 1 Port PCIe x4 10GB Aquantia AQTION AQC107 NIC (thanks to @mirwaiz for his respective discovery and for all subsequent confirmation of his findings by @mm2margaret, who also pointed me to this extremely valid approach) and the 1 Port PCIe x4 10GB Aquantia AQtion AQC107 10G Gaming NIC (thanks to @izo1 for respective findings and advises), which are natively implemented under macOS OoB and neither need the above firmware update nor the respective AppleEthernetAquantiaAqtion kext patch.

E.8.2.2) Intel X540-T1 10-Gbit NIC

Thanks to some Ubuntu EEPROM modding, I also achieved the successful implementation of the Intel X540-T1 single port 10GB LAN PCIe Adapter by means of the Small-Tree 10GB macOS 10.13 driver.

Some additional notes to the EEPROM modding guideline provided by the link above can be accessed in Section E.8.2.2 of 10.13-iMP-X299-BDG.

The rest is as described in the EEPROM modding guideline linked above.

The proper Intel X540-T1 PCI SSDT implementation is detailed in Section E.9.2)

Actually, I am now currently using this adaptor in my X99 system configuration.

E.8.2.3) Small-Tree P2EI0G-2T 10-Gbit NIC

The Small-Tree P2EI0G-2T 2-Port 10GB LAN PCIe Adapter constitutes the actual base line in my X299 10Gbit LAN configuration. It works OoB with the Small-Tree 10GB macOS 10.13 driver.

The proper Small-Tree P2EI0G-2T PCI SSDT implementation is detailed in Section E.9.2)

E.8.2.4) NetGear ProSave XS508M 8-port 10-Gbit Switch

As already mentioned above, the NetGear ProSave XS508M 8-port 10GBit switch constitutes the turntable of my 10-GBit Ethernet Network. It further connects with a QNAP TS-431X2 Quad-core 4-Bay NAS tower with Built-in 10GbE SFP+ Port.

E.8.2.5) QNAP TS-431X2 Quad-core 4-Bay NAS tower

The QNAP TS-431X2 Quad-core 4-Bay NAS tower finally harbours 4x 12 TB Seagate IronWolf drives in RAID 0 configuration (as I rather opt for read/write speed than redundancy).

E.8.2.6) 10-GBit Ethernet Optimisation

The 10-Gbit Ethernet Optimisation is outlined in Section E.8.2.6 of 10.13-iMP-X299-BDG.

E.9) ASUS X99-A II PCI Device Implementation

In order to properly implement all PCI device drivers on his/her system and build, one needs adequate ACPI DSDT Replacements and a sophisticated system SSDTs. Both requirements have been originally successfully implemented for the ASUS Prime X299 Deluxe by our gorgeous @apfelnico with partial contributions of @TheOfficialGypsy. Many thanks for the extensive efforts and extremely fruitful and brilliant work! Subsequently, I adopted the ACPI DSDT Replacements and system SSDTs in concordance with SMBIOS iMacPro1,1. Some ACPI DSDT Replacements are still part of the config.plist contained in my actual respective X99 EFI-Folder distribution. Others are part of my System SSDTs provided in my X99-System-SSDTs Github repository.


Note that the ACPI DSDT Replacements in config.plist, System SSDTs and TB-SSDTs are build and PCIe slot population dependent and have to be verified and adopted or modified for all mainboards different from the ASUS X99-A II and builds or PCIe slot populations different from the one that constitutes the baseline of this guide.

For the ASUS X99-A II I will use in the following the PCIe Slot nomenclature depicted below:

338109


The verification and likely adaptation/modification can be performed by the help of IORegistryExplorer.app.

How to adopted or modify the ACPI DSDT Replacement Patches and System SSDT implementations is detailed within this short guideline by means of the OSXWIFI PCIe Adaptor implementation in PCIe Slot-3. I hope that by this specific example it rapidly becomes evident that the correct PCI Device implementation cannot be outlined for each individual "build-in" or "slot-specific" PCI device within this guide. The complexity and effort would just exceed by far all available capacities and indeed require the implementation of a separate guide and thread in addition. I therefore hope on your skills and flexibility to extend and apply the approach and methodology detailed above to any other "build-in" or "slot-specific" PCI device yet to be adopted or implemented.

Important Note: It is strongly recommend to perform a stepwise SSDT PCI Device implementation, starting with one single specific PCI device. Once this PCI device has been successfully implemented, another SSDT PCI Device module can be added and verified. In case that the implementation of a specific PCI Device would be erroneous and fail, it would simply disappear from Section "PCI" of Apple's System report. To facilitate the stepwise PCI device implementation, the former SSDT-X99-iMacPro.aml has been split into separated modules now forming part of my X99-System-SSDTs Github repository.

Also keep always in mind to modify/adopt the ACPI replacements in your config.plist in parallel when ever necessary!


Note once more that the ACPI DSDT Replacements in config.plist and System SSDTs require SMBIOS iMacPro1,1.

E.9.1) ACPI DSDT Replacement Implementation

Note once more that all required ACPI DSDT Replacements are already implemented in the config.plist of my actual respective X99 EFI-Folder distribution or are directly part of of the System SSDTs provided in my X99-System-SSDTs Github repository. In the config.plist, the ACPI DSDT Replacements are disabled by default, thus we will now open the config.plist in the /EFI/CLOVER/ directory of our 10.14 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.

a.) 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 (just follow this LINK for details). 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.

Code:
Comment:             Find*[Hex]      Replace [Hex]
OSI -> XOSI          5f4f5349        584f5349
EC0_ -> EC__         4543305f        45435f5f
H_EC  -> EC__        485f4543        45435f5f

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

Code:
Comment:             Find*[Hex]       Replace [Hex]
HECI -> IMEI         48454331         494d4549
IDER->MEID           49444552         4d454944

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

Code:
Comment:             Find*[Hex]         Replace [Hex]
LPC0 -> LPCB         4c504330           4c504342

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

Code:
Comment:             Find*[Hex]        Replace [Hex]
FPU_ -> MATH         4650555f          4d415448
TMR_ -> TIMR         544d525f          54494d52
PIC_ -> IPIC         5049435f          49504943

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

Code:
Comment:             Find*[Hex]         Replace [Hex]
_DSM -> XDSM         5f44534d            5844534d

f.) The 48 CPxx -> PRxx replacements are i7-6950X specific and result in a proper CPU core reordering as well as in a iMac Pro specific CPU core variable naming.

All i7-6950X users can now enable all 48 CPxx -> PRxx replacements. All users of CPUs different from the i7-6950X have to adopt/modify the 48 CPxx -> PRxx replacements in concordance with their original IOREG CPU core values.


Code:
Comment:             Find*[Hex]        Replace [Hex]
CP00 -> PR00         43503030          50523030
CP01 -> PR01         43503031          50523031
CP02 -> PR02         43503032          50523032
CP03 -> PR03         43503033          50523033
CP04 -> PR04         43503034          50523034
CP05 -> PR05         43503035          50523035
CP06 -> PR06         43503036          50523036
CP07 -> PR07         43503037          50523037
CP08 -> PR08         43503038          50523038
CP09 -> PR09         43503039          50523039
CP0A -> PR10         43503041          50523130
CP0B -> PR11         43503042          50523131
CP0C -> PR12         43503043          50523132
CP0D -> PR13         43503044          50523133
CP0E -> PR14         43503045          50523134
CP0F -> PR15         43503046          50523135
CP10 -> PR16         43503130          50523136
CP11 -> PR17         43503131          50523137
CP12 -> PR18         43503132          50523138
CP13 -> PR19         43503133          50523139
CP14 -> PR20         43503134          50523230
CP15 -> PR21         43503135          50523231
CP16 -> PR22         43503136          50523232
CP17 -> PR23         43503137          50523233
CP18 -> PR24         43503138          50523234
CP19 -> PR25         43503139          50523235
CP1A -> PR26         43503141          50523236
CP1B -> PR27         43503142          50523237
CP1C -> PR28         43503143          50523238
CP1D -> PR29         43503144          50523239
CP1E -> PR30         43503145          50523330
CP1F -> PR31         43503146          50523331
CP20 -> PR32         43503230          50523332
CP21 -> PR33         43503231          50523333
CP22 -> PR34         43503232          50523334
CP23 -> PR35         43503233          50523335
CP24 -> PR36         43503234          50523336
CP25 -> PR37         43503235          50523337
CP26 -> PR38         43503236          50523338
CP27 -> PR39         43503237          50523339
CP28 -> PR40         43503238          50523430
CP29 -> PR41         43503239          50523431
CP2A -> PR42         43503241          50523432
CP2B -> PR43         43503242          50523433
CP2C -> PR44         43503243          50523434
CP2D -> PR45         43503244          50523435
CP2E -> PR46         43503245          50523436
CP2F -> PR47         43503246          50523437

Resulting CPU Core Implementation

338129


E.9.2) System SSDT PCI Device Implementation


339691


For the proper PCI device driver implementation (detailed in the figure above), we now have to revise and likely adopt or modify all System SSDTs provided within my X99-System-SSDTs Github repository.

Note that each SSDT 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 now completely 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 device modules is highly recommended!

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

The SSDT-X99-HDEF.aml onboard Realtek ALC 1150 Audio Controller HDEF PCI device implementation is valid for the ASUS X99-A II and likely for all other mainboards with the same Audio Controller chipset. It is a build in device and does not have any slot specific dependency. Note the ALZA -> HDEF ACPI Replacement within the SSDT!


E.9.2.2) GFX0, HDAU - GPU and HDMI/DP Audio PCI implementation

A.) Radeon RX Vega 64 GPUs


The SSDT-X99-Vega.aml GFX0 and HDAU PCI device implementation is valid for SMBIOS iMacPro1,1 (GFX0), the ASUS X99-A II and any Radeon RX Vega 64 GPU implemented in PCIe Slot 1.

It is a build and PCIe slot population dependent device implementation. Vega GPU users with more than one graphics card, with a Vega graphics card in a PCIe slot different from PCIe Slot 1, or with a mainboard different from the ASUS X99-A II will have to adopt the respective device path entries PCI0.BR3C, H000, H001, D077 and respective ACPI replacements by following their respective IOREG entries.


The above default Vega PCI device implementation performs an OC of an air-flow Nitro+ Vega 64 GPU of up to 1630 Mhz while considering an IDLE fan speed of 1500 Mhz. This seems sufficient to remain with GPU temps of about 80 deg C under GPU load conditions (e.g. Valley Benchmark), while not exceeding any comfortable noise level.

The latter Vega properties are achieved by means of a sophisticated "PP_PhmSoftPowerPlayTable", "PP_DisablePowerContainment" and "PP_FuzzyFanControl" SSDT implementation.

Everybody can change the respective Vega properties by means of VGTab-en.app (thanks to @mm2margaret for pushing me to this solution), which provides a modified "PP_PhmSoftPowerPlayTable" (output-file VegaTab_64_data.txt), which can replace the "PP_PhmSoftPowerPlayTable", currently implemented in my SSDT-X99-Vega.aml distribution. E.g. users with a water-blocked Nitro+ Vega 64 like myself want to further screw the max. GPU OC frequencies, etc, while others might want to further improve the fan speed behaviour on air-flow Vegas..

Below the "PP_PhmSoftPowerPlayTable" for my custom water-blocked Sapphire Nitro+ Vega 64 8B (used on my Skylake-X/X299 system), with P7 Core Frequency of 1680 Mhz, P7 Core Voltage of 1200 mV, P3 Memory Frequency of 1050 Mhz and a Memory Voltage of 1350 mV.

PP_PhmSoftPowerPlayTable:

Code:
  0x9d, 0x02, 0x08, 0x01, 0x00, 0x5c, 0x00, 0x37,
  0x07, 0x00, 0x00, 0xec, 0x2b, 0x00, 0x00, 0x1b,
  0x00, 0x48, 0x00, 0x00, 0x00, 0x80, 0xa9, 0x03,
  0x00, 0xf0, 0x49, 0x02, 0x00, 0x32, 0x00, 0x08,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
  0x5c, 0x00, 0x36, 0x02, 0x2d, 0x02, 0x94, 0x00,
  0x85, 0x01, 0xaf, 0x00, 0x19, 0x01, 0x7a, 0x00,
  0x8c, 0x00, 0xa3, 0x01, 0x00, 0x00, 0x00, 0x00,
  0x59, 0x02, 0x00, 0x00, 0x90, 0x00, 0x8f, 0x02,
  0x54, 0x01, 0x2a, 0x01, 0x7e, 0x01, 0x00, 0x71,
  0x02, 0x00, 0x71, 0x02, 0x02, 0x02, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00,
  0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x01, 0x08, 0x20, 0x03, 0x84, 0x03,
  0xb6, 0x03, 0xe8, 0x03, 0x1a, 0x04, 0x4c, 0x04,
  0x7e, 0x04, 0xb0, 0x04, 0x01, 0x01, 0x46, 0x05,
  0x01, 0x01, 0x84, 0x03, 0x00, 0x05, 0x60, 0xea,
  0x00, 0x00, 0x00, 0xdc, 0x4a, 0x01, 0x00, 0x01,
  0x00, 0x77, 0x01, 0x00, 0x02, 0x90, 0x91, 0x01,
  0x00, 0x03, 0x6c, 0xb0, 0x01, 0x00, 0x04, 0x01,
  0x08, 0xd0, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x80,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xbc,
  0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x98, 0xfc, 0x01, 0x00, 0x02,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x90, 0x0e, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x2f, 0x02,
  0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x70, 0x56, 0x02, 0x00, 0x05, 0x00,
  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x60,
  0x7a, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
  0x01, 0x00, 0x00, 0x00, 0x40, 0x90, 0x02, 0x00,
  0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
  0x00, 0x00, 0x03, 0x60, 0xea, 0x00, 0x00, 0x00,
  0xdc, 0x4a, 0x01, 0x00, 0x00, 0x90, 0x5f, 0x01,
  0x00, 0x00, 0x00, 0x08, 0x28, 0x6e, 0x00, 0x00,
  0x00, 0x2c, 0xc9, 0x00, 0x00, 0x01, 0xf8, 0x0b,
  0x01, 0x00, 0x02, 0x80, 0x38, 0x01, 0x00, 0x03,
  0x90, 0x5f, 0x01, 0x00, 0x04, 0xf4, 0x91, 0x01,
  0x00, 0x05, 0xd0, 0xb0, 0x01, 0x00, 0x06, 0xc0,
  0xd4, 0x01, 0x00, 0x07, 0x00, 0x08, 0x6c, 0x39,
  0x00, 0x00, 0x00, 0x24, 0x5e, 0x00, 0x00, 0x01,
  0xfc, 0x85, 0x00, 0x00, 0x02, 0xac, 0xbc, 0x00,
  0x00, 0x03, 0x34, 0xd0, 0x00, 0x00, 0x04, 0x68,
  0x6e, 0x01, 0x00, 0x05, 0x08, 0x97, 0x01, 0x00,
  0x06, 0xec, 0xa3, 0x01, 0x00, 0x07, 0x00, 0x01,
  0x68, 0x3c, 0x01, 0x00, 0x00, 0x01, 0x04, 0x3c,
  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xc3,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x35, 0x01,
  0x00, 0x01, 0x00, 0x00, 0x28, 0x9a, 0x01, 0x00,
  0x02, 0x00, 0x00, 0x01, 0x08, 0x00, 0x98, 0x85,
  0x00, 0x00, 0x78, 0xb4, 0x00, 0x00, 0x60, 0xea,
  0x00, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x01, 0x78,
  0xff, 0x00, 0x00, 0x40, 0x19, 0x01, 0x00, 0xb4,
  0x27, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x02,
  0x80, 0x38, 0x01, 0x00, 0xdc, 0x4a, 0x01, 0x00,
  0xdc, 0x4a, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00,
  0x03, 0xdc, 0x4a, 0x01, 0x00, 0x90, 0x5f, 0x01,
  0x00, 0x90, 0x5f, 0x01, 0x00, 0x50, 0xc3, 0x00,
  0x00, 0x04, 0x90, 0x5f, 0x01, 0x00, 0x00, 0x77,
  0x01, 0x00, 0x90, 0x5f, 0x01, 0x00, 0x50, 0xc3,
  0x00, 0x00, 0x05, 0x00, 0x77, 0x01, 0x00, 0x90,
  0x91, 0x01, 0x00, 0x90, 0x5f, 0x01, 0x00, 0x50,
  0xc3, 0x00, 0x00, 0x06, 0x6c, 0xb0, 0x01, 0x00,
  0x6c, 0xb0, 0x01, 0x00, 0x00, 0x77, 0x01, 0x00,
  0x50, 0xc3, 0x00, 0x00, 0x07, 0xc0, 0xd4, 0x01,
  0x00, 0xc0, 0xd4, 0x01, 0x00, 0x90, 0x91, 0x01,
  0x00, 0x50, 0xc3, 0x00, 0x00, 0x01, 0x18, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe4,
  0x12, 0xdc, 0x05, 0xfc, 0x08, 0x41, 0x00, 0x0f,
  0x00, 0x54, 0x03, 0x90, 0x01, 0x90, 0x01, 0x90,
  0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04,
  0x21, 0x07, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01,
  0x2c, 0x01, 0x00, 0x00, 0x4a, 0x00, 0x69, 0x00,
  0x4a, 0x00, 0x4a, 0x00, 0x5f, 0x00, 0x73, 0x00,
  0x73, 0x00, 0x64, 0x00, 0x40, 0x00, 0x90, 0x92,
  0x97, 0x60, 0x96, 0x00, 0x90, 0x46, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
  0x02, 0xd4, 0x30, 0x00, 0x00, 0x02, 0x10, 0x60,
  0xea, 0x00, 0x00, 0x02, 0x10

Note that I also changed the Nitro+ Vega 64 firmware to https://www.techpowerup.com/vgabios/200283/200283 (at BIOS jumper position 1). Don't forget to backup the original firmware, in case you return it to the seller! This thread might provide additional information in this context: https://forums.macrumors.com/threads/amd-polaris-vega-gpu-macos-support.2083168/.

As already mentioned before, within my current Vega SSDT PCI device implementation, all available ports on the Gigabyte Vega 64 (3x HDMI, 3x DP), including multi-monitor support and display hot plug are automatically and successfully implemented. However, it seems that DP-port issues (black screen) remain, when employing the respective Vega SSDT PCI device implementation on Sapphire Nitro+ Vega 64 (2x HDMI, 2xDP) or ASUS Strix Vega 64 (2x HDMI, 2x DP, 1x DVI) GPUs, which only can be removed by adding Whatevergreen.kext. Within such configuration, multi-monitor support and display hot plug can be fully achieved also in case of the latter custom Vegas (both 10.13.6 SU and 10.14.1). Whatevergreen.kext only seems required for all Vegas possessing less than 6 physical ports (including the original Vegas like Frontier and Vega 64), else the current Vega SSDT PCI device implementation does pretty well it's job, including sleep/wake.

A fall-back to the formerly used Kamarang frame buffer SSDT implementation of @apfelnico (see below) does not provide any valuable solution for custom Vegas.

Former Kamarang frame buffer SSDT implementation by @apfelnico for 1x Radeon Vega Frontier in PCIe Slot 1 of ASUS X99-A II:

DefintionBlock entry:

Code:
External (_SB_.PCI0.BR3C, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3C.H000, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3C.H001, DeviceObj)    // (from opcode)
External (_SB_.PCI0.BR3C.D077, DeviceObj)    // (from opcode)
External (DTGP, MethodObj)    // 5 Arguments (from opcode)

PCI Device Implementation:

Code:
    Scope (\_SB.PCI0.BR3C)
    {
        Scope (H000)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Scope (H001)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Scope (D077)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Device (PEGP)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (EGP0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Device (GFX0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x18)
                            {
                                "built-in",
                                Buffer (One)
                                {
                                     0x00
                                },

                                "AAPL,slot-name",
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                },

                                "model",
                                Buffer (0x16)
                                {
                                    "Vega Frontier Edition"
                                },

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

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

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

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

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

                                "@0,name",
                                Buffer (0x0D)
                                {
                                    "ATY,Kamarang"
                                },

                                "@1,name",
                                Buffer (0x0D)
                                {
                                    "ATY,Kamarang"
                                },

                                "@2,name",
                                Buffer (0x0D)
                                {
                                    "ATY,Kamarang"
                                },

                                "@3,name",
                                Buffer (0x0D)
                                {
                                    "ATY,Kamarang"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x0A)
                            {
                                "built-in",
                                Buffer (One)
                                {
                                     0x00
                                },

                                "AAPL,slot-name",
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                },

                                "name",
                                Buffer (0x1F)
                                {
                                    "Vega Frontier Edition HD-Audio"
                                },

                                "model",
                                Buffer (0x1F)
                                {
                                    "Vega Frontier Edition HD-Audio"
                                },

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

B.) Radeon VII, Vega56, RX560 and RX580 GPUs

Note that there also Radeon VII, Vega56, RX560 and RX580 SSDTs available in my X99 SSDT Github repository, which likely need to be adopted depending on your motherboard and GPU PCIe slot population by following your original IOREG ACPI table information.

C.) Nvidia GPUs

The actual SSDT-X99-Nvidia.aml GFX0 and HDAU PCI device implementation is valid for SMBIOS iMacPro1,1 (GFX0), the ASUS X99-A II and any Nvidia Graphics Card implemented in PCIe Slot 1.

It is a build and PCIe slot population dependent device implementation. Nvidia Graphics Card users with more than one GPU, with a Nvidia graphics card in a PCIe slot different from PCIe Slot 1 or on a mainboard different from ASUS, will have to adopt the respective PCI0, BR3C, H000, H001, D077, GFX0 ACPI path and ACPI replacements following their respective IOREG entries.

Also note that with 10.13.4, Apple changed the com.apple.driver.AppleHDAController implementation. To make the NVIDIA HDAU PCI device driver work for e.g. a GeForce GTX 1080 Ti, one needs to add the following KextToPatch entry in Section "Kernel and kext Patches" of Clover Configurator, as already implemented but yet disabled in the config.plist contained in my actual respective X99 EFI-Folder distribution:

Code:
Name*                                 Find* [HEX]         Replace* [HEX]        Comment
com.apple.driver.AppleHDAController   DE100B0E            DE10EF10              FredWst DP/HDMI patch

Thus, please all Nvidia users enable and like adopt the NVIDIA HDAU patch for your particular Nvidia GPU in dependence of the respective device-id.

Credits to @FreedWst and thanks to @fabiosun for pointing me to this solution.

Users of Whatevergreen.kext might be able to drop this KextToPatch entry, as the latter kext already properly implements the Nvidia HDAU PCI driver.


E.9.2.3) XGBE - 10GBit NIC PCI Implementation:


SSDT-X99-ACQU.aml, SSDT-X99-X540-T1.aml and SSDT-X99-P2EI0G-2T.aml perform a 10-Gigabit NIC XGBE (XGBF) PCI implementation of an Acquantia AQC107-AFW, Intel X540-T1 or Small-Tree P2EI0G-2T 10GB NIC, respectively and are mainly of cosmetic nature. For each PCIe Adapter and for different PCIe slot populations or mainboard implementations, the XGBE PCI device implementation needs to be adopted/modified accordingly. This also states for the respective ACPI path entries "PCI0", "BR3A" and respective H000 -> D07C and D07C -> XGBE ACPI Replacements (in compliance with the iMac Pro 10GB ACPI variable nomenclature), directly performed within each SSDT. Those not employing any 10-GBit NIC in their system, can simply skip the corresponding SSDT PCI device implementation.


E.9.2.4) ETH0 - onboard LAN Controller PCI Implementation:

The SSDT-X99-ETH0.aml onboard Intel i218-V Ethernet controller ETH0 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 the ACPI path and the PCI device implementations by means of their IOREG entries. Note the GLAN -> ETH0 ACPI replacement directly performed within the SSDT.


E.9.2.5) SAT1 - Intel AHCI SATA Controller PCI Implementation:

The SSDT-X99-SAT1.aml onboard Intel AHCI SATA controller SAT1 PCI device implementation is valid for the ASUS X99-A II and for all other X99 mainboards with the same AHCI SATA controller chipset.


E.9.2.6) EVSS - Intel X99 sSata Controller PCI Implementation:

The SSDT-X99-EVSS.aml onboard Intel X99 sSATA controller EVSS 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.EVSS" and PCI device implementations by means of IOREG.


E.9.2.7) ANS1 - NVMe Controller PCI Implementation:

The SSDT-X99-ANS1.aml Apple NVMe Controller ANS1 PCI implementation is of purely cosmetic nature and is valid for the ASUS X99-A II. Note ACPI Replacements D075 -> D081 and D081 -> ANS2 directly performed within the SSDT, in concordance with the respective SMBIOS iMacPro1,1 variable naming!


E.9.2.8) - USBX:

When using the XHCI device name for USB (see the XHCI PCI Device Implementation below), one observes a bunch of USB Power Errors when booting the system. The SSDT-X99-USBX.aml PCI device implementation fixes this errors.


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

The SSDT-X99-XHCI.aml onboard USB3.0 controller XHCI 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.10) XHC2 - ASMedia ASM1142 USB 3.1 Controller PCI Implementation:

The SSDT-X99-XHC2.aml onboard ASMedia ASM1142 USB 3.1 AHCI SATA controller XHC2 PCI device implementation is valid for the ASUS X99-A II and for all other X99 mainboards with the same XHC USB3.1 controller chipset configuration. Note the D07D -> D082 and D082 -> XHC2 ACPI replacements directly performed within the SSDT!


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

The SSDT-X99-ARPT.aml 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 5 of the ASUS X99-A II. Users of this PCIe Adapter within a PCIe slot population different from PCIe Slot 5 or on a mainboard different form the ASUS X99-A II have to likely adapt/modify the respective device path "PCI0","RP07","ARPT". Users with a completely different WIFI/Bluetooth configuration have to adopt the entire Airport PCI implementation by means of IOREG.


E.9.2.12) GC-Titan Ridge / GC-Alpine Ridge / ASUS TBEX 3 Thunderbolt HotPlug System Implementation:

The current Thunderbolt development carefully focuses on iMac Pro SSDT-9.aml and DSDT.aml from @TheOfficialGypsy 's iMac Pro dump, which appear to be the cornerstone for a correct, proper and complete Thunderbolt Hackintosh Local Node implementation.

The current development status is briefly reflected in posts #9708 and #9702.. Constructive contributions by experts are highly desired.

Until reaching a complete Thunderbolt Hackintosh Local Node implementation, SSDT-X99-TB3HP.aml constitutes workarounds for achieving TB and USB-C HotPlug as well as sleep/wake functionality, which has been 100% successfully verified with the GC-AlpineRidge on the ASUS X99-A II with THB_C connected. I kindly ask all owners of the Asus TBEX 3, to carefully test and verify SSDT-X99-TB3HP.aml and report back about Asus TBEX 3 Thunderbolt and USB-C HotPlug as well as Sleep/Wake functionality. In case of the GC-Titan Ridge, apparently HotPlug functionality can be also reached with the THB_C connected. However there seems to exist some incompatibility fo the GC-Titan Ridge USB2.0 header and the onboard USB2.0 headers of at least some X99 mainboards, thus one seems not able to connected the USB2.0 cable attached to the GC-Titan Ridge adapter. Without the missing USB2.0 cable, USB-C devices however seem non functional on the GC-Titan Ridge adapter.

For the TB3 SSDT provided above, partial contributions by @apfelnico, @nmano, @Mork_vom_Ork , @Matthew82, @maleorderbride and @TheRacerMaster shall be mentioned and outlined. Its use with mainboards different from ASUS and within PCIe slot populations different from PCIe Slot 4 requires the adaptation/modification of respective ACPI path definitions ("PC01", "BR1A") or ACPI DSDT Table replacements (SL01 -> PEGP and PEGP -> UPSB), directly performed within the SSDTs.

>>> https://youtu.be/Jakp5dCoFvY <<<


E.9.2.13) DTGP Method:

SSDT-DTPG.aml is mandatory for all SSDT implementations listed above (note the external DTPG method call in the definition block of each respective SSDT) and must be always part of /EFI/Clover/ACPI/patched..

Code:
    External (DTGP, MethodObj)    // 5 Arguments (from opcode)


E.9.2.14) - Debugging Sleep Issues:

For debugging sleep issues as proposed by Pike Alpha, one can add SSDT-SLEEP.aml to /EFI/CLOVER/ACPI/patched and follow Pike's comment and advices provided at https://pikeralpha.wordpress.com/2017/01/12/debugging-sleep-issues/


E.10) iMac Pro Boot Splash Screen Cosmetics

338133


The procedure to implement an iMac Pro Boot Splash Screen Image in any BIOS firmware distribution is detailed in Section E.11 of 10.13-iMP-X299-BDG.


E.11) iMac Pro Desktop Background cosmetics

It might be nice to equip your iMac Pro X99 also with the adequate iMac Pro Desktop Background.

1.) Download, unzip and copy imac-pro-wallpaper.jpg to your Dektop

2.) Right-click with the mouse on your Desktop and select "Change Desktop Background.."

3.) In the left column click on the "+" and add your Desktop Folder

4.) Select imac-pro-wallpaper.jpg to be your new Desktop Background

E.12) iStatMenus Hardware Monitoring


Thanks to extended tweet session between @BJango, @gxsolace and myself, we achieved a major step forward in properly monitoring Skylake-X/X299 Hardware with iStatMenus. iStatMenus v6.2 now correctly interfaces with the HWSensor and FakeSMC kext distribution provided by @interferenc and can now be also used for Broadwell-E/EP, Haswell-E/EP, X99 system monitoring. My distributed EFI-Folder already contains all necessary HWSensor and FakeSMC kexts.

The actual iStatMenus v6.2 distribution can be assessed at https://bjango.com/mac/istatmenus/

The actual HWSensor and FakeSMC kext distribution of @interferenc can be assessed at https://github.com/interferenc/HWSensors

How to compile the the HWSensor and FakeSMC kexts of @interferenc is detailed in Section Section E.12 of 10.13-iMP-X299-BDG.

Many thanks to both @interferenc and @Bjango for their awesome and extensive contributions and brilliant work!


Note that I recently modified the Kozlek/Interferenc Source Code distribution locally to also support GPU Temp sensor information for all Vegas and the new Radeon VII. In my recent 10.14 X99 EFI-Folder distributions, the resulting FakeSMC.kext and HWSensor.kexts supporting all Vegas already have been implemented by default in /EFI/CLOVER/kexts/Other. The actual 10.14.5 Beta X99 EFI-Folder distribution contains FakeSMC.kext and HWSensor.kexts also supporting the new Radeon VII.

Skylake-X/X299 iStatMenus Hardware Sensor Data:

338139


Broadwell-E/EP, Haswell-E/EP CPU Thread Utilisation Graphs:

338140


To change from CPU core to thread utilisation monitoring, uncheck "Hide Hyper-Threading cores" in Section "CPU & GPU" of iStatMenus Preferences.

338141


Temperature unites can be adjusted between Celsius, Fahrenheit and Kelvin in Section "Sensors" of iStatMenus Preferences.

338142


F.) Benchmarking

F.1) i7-6950X CPU Benchmarks


353171

353172


353175


F.2) Nitro+ RX Vega 64 Gaming OC 8GB (Air-Flow) OpenGL and Metal Benchmarks

353176


353177


353179


353180


353181


353182


353183


G.) Summary and Conclusions

Already under macOS 10.12 Sierra and macOS 10.13 High Sierra, Broadwell-E/EP, Haswell-E/EP, X99 systems reached full functionality together with flawless stability. Now with macOS 10.14 Mojave, it might be another opportunity to follow my iMac Pro Build and Desktop Guide to unfold the unbelievable Broadwell-E/EP, Haswell-E/EP, X99 potential!

High-end builds based on Broadwell-E/EP, Haswell-E/EP, X99 technology have found manifold application, not only in science and research at universities or research institutions, engineering facilities, or medical labs, etc... Broadwell-E/EP, Haswell-E/EP, X99 with up to 22 cores (44 threads) and turbo frequencies up to 4.4 GHz have made X99 to a "relatively cheap" but really serious alternative to real iMac Pro's and Mac Pro's. The principal intention of my desktop guides is to demonstrate, that we are able to build and configure fully functional and relatively "low-cost" high-end systems, which go far beyond of what Apple is able to offer at present or will be ever able to offer for some reasonable pricing. Broadwell-E/EP, Haswell-E/EP, X99 Systems that allow 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 configuration). The flexibility between different mainboards (Asus, Gigabyte, ASRock, MSI, etc.), different Broadwell-E/EP, Haswell-E/EP processors, and different RAM memory configurations (16-128GB) make such systems affordable for anybody (also home office, audio and video editing/production, etc.) and allows their perfect adaptation for each specific purpose, requirement and available budget. It might not be necessary to outline, that current Broadwell-E/EP, Haswell-E/EP, X99 Systems perform absolutely stable on a 24/7/365 basis.

338144
 

Attachments

  • VegaGraphicsFixup.kext.zip
    10.4 KB · Views: 438
  • UnSolid.kext.zip
    13.9 KB · Views: 615
  • SSDT-NVMe-extern-icon-patch.aml.zip
    1 KB · Views: 747
  • RehabMan-MaciASL-2018-0507.app.zip
    3.5 MB · Views: 560
  • IORegistryExplorer.app.zip
    221.6 KB · Views: 424
  • SSDT-SLEEP.aml.zip
    1 KB · Views: 657
  • imac-pro-wallpaper.jpg.zip
    1.4 MB · Views: 617
  • SSDT-DTPG.aml.zip
    933 bytes · Views: 421
  • VGTab-en.app.zip
    430 KB · Views: 492
  • X99A2.CAP.zip
    7 MB · Views: 936
  • KGP-ASUS-X99-A-II-iMacPro-XHCI-15port.kext.zip
    2.7 KB · Views: 453
  • KGP-ASUS-X99-A-II-iMacPro-XHCI.kext.zip
    2.5 KB · Views: 433
  • createInstaller-10.14.4-23042019.sh.zip
    1.4 KB · Views: 417
  • createInstaller-10.14.4-SB-23042019.sh.zip
    1.5 KB · Views: 388
Last edited by a moderator:
Guide History Log-File:

28 June 2018:
10.14 Mojave X99 Guide Setup completed

07 July 2018: Implementing Gigabyte Radeon RX Vega 64 Gaming OC 8GB. Revised Sections A.)- Hardware Summary, E9.2) - SSDT-ASUS-X99-A-II.aml and PCI Device Implementation, E.9.2.1) HDEF - onboard Audio Controller PCI Implementation and E.9.2.2) - GPU and HDMI/DP Audio PCI Implementation. Adding first Gigabyte Radeon RX Vega 64 Gaming OC 8GB OpenGL and Metal Benchmarks in Section F.2). Implementation of new SSDT-X99-10.14-iMacPro.aml (Default: Gigabyte Radeon RX Vega 64 Gaming OC 8GB PCI implementation. Optional: Nvidia GTX 1080 Ti implementation moved to guide text)

09 July 2018: Implementation of new TB-SSDTs for GB Alpine Ridge or ASUS TBEX 3 PCIe adaptors on ASUS X99-A II.

16 August 2018: Guide update to 10.14 PB6; Removal of Gigabyte Radeon RX Vega 64 Gaming OC 8GB; Implementation of Sapphire Nitro+ Radeon Vega 64 8GB. Revision of Table of Content, Section A.)- Hardware Configuration, Section C.2) - Error Prevention, Section D.) - macOS Installation, Section E.1) - XNU CPU Power Management (XCPM) Configuration, Section E.2) - Graphics Configuration, E.3) - Audio Configuration, E.4) - USB Configuration and entire Section E.9) - ASUS X99-A II PCI Device Implementation. Major update of Section E.9.1) - SSDT-ASUS-X99-A-II.aml PCI Device Implementation. Implementation of 2 new system SSDTs separately for Nvidia and ATI GPU users: SSDT-X99-10.14-iMacPro-Vega.aml and SSDT-X99-10.14-iMacPro-Nvidia.aml. New Section E.9.3) - Thunderbolt System Implementation. Implementation of new TB-SSDT: SSDT-9-minimal-hotlug-injector-Asus-X99.aml. Implementation of new EFI-Folder distribution: EFI-X99-10.14-PB6-Release-iMacPro1,1-160818.zip. EFI-Folder related changes: Implementation of Clover_v2.4k_r4647, implementation of Lilu.kext 1.2.6 and AppleALC.kext 1.3.1, config.plist implementation of 10.14 PB6 USB port limit kext patch and required 10.14 PB6 XCPM kernel patches.

22 August 2018: Guide Update to 10.14 PB7; Implementation of new EFI-Folder distribution EFI-X99-10.14-PB7-Release-iMacPro1,1-220818.zip; EFI-Folder related changes: Implementation of Clover_v2.4k_r4657; Adding AptioInputFix-64.efi, AppleImageLoader-64.efi and AppleUISupport-64.efi; Implementing XCPM performance patch 10.14 PB7 in config.plist. Still no OC with Broadwell-E on Asus X99-A II.

18 September 2018: Major revision and simplification of Section E.9.2. To facilitate a stepwise SSDT implementation, former SSDT-X99-iMacPro.aml has been split into device specific SSDT modules, which now form part of a new SSDT-X99-SSDTs Github repository. With SSDT-X99-TB3HP.aml, former SSDT-9-TB-minmal-hotplug-injector.aml is also part of this new repository. With Section E.9.2.12, Section E.9.3 is again part of Section E.9.2. All modifications have been finally performed in line with repetitive user requests during the last months.

19 September 2018: Guide Update to 10.14 PB10; New EFI-X99-10.14-PB10-Release-iMacPro1,1-190918.zip distribution: EFI-Folder related changes: Implementation of Clover_v2.4k_r4673; 10.14 PB10 XCPM performance patch; General revision of Kext and Kernel patches; Implementation of AppleALC.kext v1.3.2 and Lilu.kext v1.2.7

24 September 2018: System and Guide Update to 10.14.0 (18A391); Guide related changes: New Section D.2) with manual and automatic "Install macOS Mojave.app" full package installer creation approach; Revised Section E.7) GC-Titan Ridge / GC-Alpine Ridge /Asus TBEX 3 PCIe Add-In Implementation; Revised Section E.9.13) GC-Titan Ridge / GC-Alpine Ridge / Asus TBEX 3 Thunderbolt HotPlug System Implementation; New EFi-Folder EFI-X99-10.14.0-Release-iMacPro1,1-240918.zip; EFI-Folder related changes: Implementation of Clover_v2.4k_r4674; Removal of Beta Boot Flags for Lilu and Lilu Plugins from config.plist; Implementing 10.14.0 _xcpm performance patch in config.plist.

31 October 2018: Guide update to macOS Mojave 10.14.1 (18B75). Modified section E.4 - USB Configuration for 10.14.1 USB2.0 and USB3.0 compatibility. New EFI-Folder EFI-X99-10.14.1-Release-iMacPro1,1-311018.zip. EFI-Folder related changes: Implementation of Clover_v2.4k_r4726; Adding Lilu.kext 1.2.8 and AppleALC.kext 1.3.3; Disabling AppleUSBXHCI USB port limit kexts patch in config.plist..non functional under 10.14.1.

05 November 2018: Further Revision and modifications of section E.4) - USB Configuration

06 December 2018: Guide update to macOS Mojave 10.14.2 (18C54). New EFI-Folder EFI-X99-10.14.2-Release-iMacPro1,1-101218.zip . EFI-Folder related changes: Implementation of Clover_v2.4k_r4805; Implementation of new FakeSMC and HWSensor distribution; Implementation of 10.14.2 xcpm_performance_patch.

23 January 2019: Guide update to macOS Mojave 10.14.3 (18D42). New EFI-Folder EFI-X99-10.14.3-Release-iMacPro1,1-230119.zip. EFI-Folder related changes: Implementation of Clover_v2.4k_r4859; Implementation of latest AppleALC and Lilu distributions; Implementation of 10.14.3 xcpm_performance_patch.

25 January 2019: New EFI-Folders EFI-X99-10.14.3-Release-iMacPro1,1-250119.zip and EFI-X99-10.14.4-Beta1-Release-iMacPro1,1-250119.zip with Clover_v2.4k_r4862 and working USB port limit and XCPM_performance patches. Update of guide section E.4) USB Configuration.
1549117112353.gif

02 February 2019: New EFI-Folders EFI-X99-10.14.3-Release-iMacPro1,1-020219.zip and EFI-X99-10.14.4-Beta1-Release-iMacPro1,1-020219.zip with Clover_v2.4k_r4862, working USB port limit patches and a macOS independent XCPM_performance patch valid for 10.13.4+ and all version of 10.14. Fully vanilla EFI-Folders that should work with 10.13.4+ and all versions of 10.14, always provided that one also uses a truncated 15-port XHC USB kext in addition, with disabled USB port limit patches in the config.plist. There are still separate EFI-Folders for 10.14.3 and 10.14.4 Beta1, in case that somebody still wants to use a fully implemented XHC USB kext and the necessary respective USB port limit patches, which are disabled by default in the config.plist of each respective EFI-Folder distribution.

25 March 2019: Guide update to 10.14.4. New 10.14.4 EFI-Folder distribution EFI-X99-10.14.4-Release-iMacPro1,1-250319.zip in the X99 EFI-Folder Github repository. Clover_v2.4k_r4903 and new 10.14.4 USB port limit patch implementation. Updated FakeSMC and HWSensor distribution. Implementation of latest Lilu.kext and AppleALC.kext distributions. One should also add latest and Whatevergreen.kext distribution. Still no native vanilla Radeon VII macOS implementation (still no default Radeon VII device-ID 0x66AF1002 in the vanilla AMDRadeonX5000.kext). Also note new Xcode 10.2 and Xcode 10.2 Command Line distributions.

05 April 2019: New X99 10.14.5 Beta EFI-Folder distribution EFI-X99-10.14.5-Beta-iMacPro1,1-050419.zip. EFI-Folder related changes: Clover_v2.4k_r4918, Lilu.kext v.1.3.5 + AppleALC.kext v1.3.6, new XCPM_pkg_scope kernel patch for 10.14.5. I also modified Kozlek/Interferenc FakeSMC/HWSensor source code distribution for adding Radeon VII GPU Temp sensor information and subsequently added new FakeSMC.kext and HWSensor.kexts to /EFI/Clover/kexts/Other. The new GPU Sensor kext should now support all Vegas and also the new Radeon VII, when using iStatMenus.
 
Last edited:
Hey kgp!

Thanks for this great guide. Nearly everything is working and you described well so I could understand the guide and follow all the steps easily.
Excellent!

But I've got one issue: My CPU (i7 6800K) is only clocking constantly at 1,2GHz. I've checked the steps for XCPM and my BIOS, everything is fine. Do you know how to fix this issue?

Thanks
SmariMo
 
Hey kgp!

Thanks for this great guide. Nearly everything is working and you described well so I could understand the guide and follow all the steps easily.
Excellent!

But I've got one issue: My CPU (i7 6800K) is only clocking constantly at 1,2GHz. I've checked the steps for XCPM and my BIOS, everything is fine. Do you know how to fix this issue?

Thanks
SmariMo

I everything would be fine your CPU would not constantly clock at 1,2 GHz...

Note that the performance kernel patch actually seems not correctly working under 10.14 PB1.. Thus, no OC.. However your CPU definitely should exceed 1.2Ghz.
 
This SSDT for SSDT-X99-TB3-BR1A.aml If rename BR1X some things not work well.
I change data DSB2 now worked all ports I tested with usb 3.1 flash drive.
Please carefully inject this 2 SSDT.
 

Attachments

  • SSDT-TB3-BR1A -XHC3-HPME.aml
    774 bytes · Views: 447
  • SSDT-X99-TB3-BR1A.aml
    2.1 KB · Views: 483
This SSDT for SSDT-X99-TB3-BR1A.aml If rename BR1X some things not work well.
I change data DSB2 now worked all ports I tested with usb 3.1 flash drive.
Please carefully inject this 2 SSDT.

Could you please do the same for L69? so you think we should not further use BR1x? What did you change in DSB2?
 
Could you please do the same for L69? so you think we should not further use BR1x? What did you change in DSB2?
I add this code under
Device (DSB2)
{
Name (_ADR, 0x00020000) // _ADR: Address

I hack from your X99 ORI DSDT Device (RP05)
Because RP05 is USB 3.1
Code:
 OperationRegion (PXCS, PCI_Config, Zero, 0xE0)
            Field (PXCS, AnyAcc, NoLock, Preserve)
            {
                VDID,   32,
                Offset (0x54),
                    ,   6,
                HPCE,   1,
                Offset (0x5A),
                ABPX,   1,
                    ,   2,
                PDCX,   1,
                    ,   2,
                PDSX,   1,
                Offset (0x5B),
                Offset (0x60),
                Offset (0x62),
                PMEX,   1,
                Offset (0xDC),
                    ,   31,
                PMCS,   1
            }

            Method (DEVS, 0, NotSerialized)
            {
                If (LEqual (VDID, Ones))
                {
                    Return (Zero)
                }
                Else
                {
                    Return (0x0F)
                }
            }

            Method (HPME, 0, Serialized)
            {
                If (PMEX)
                {
                    Store (0xC8, Local0)
                    While (Local0)
                    {
                        Store (One, PMEX)
                        If (PMEX)
                        {
                            Decrement (Local0)
                        }
                        Else
                        {
                            Store (Zero, Local0)
                        }
                    }

                    Store (One, PMCS)
                }
            }

            Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
            {
                Return (GPRW (0x09, 0x04))
            }

            Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
            {
                If (PICM ())
                {
                    Return (AG16 ())
                }

                Return (PG16 ())
            }
 
Last edited:
My USB 3.1 (ASMedia ASM1142) is recognizable under: H000, better: PCI0/BR2A/H000. I can not implement it within the SSDT, it is recognized in the PCI menu only as: H000. both for 10.13.5 and for Mojave ... What am I doing wrong?
 
My USB 3.1 (ASMedia ASM1142) is recognizable under: H000, better: PCI0/BR2A/H000. I can not implement it within the SSDT, it is recognized in the PCI menu only as: H000. both for 10.13.5 and for Mojave ... What am I doing wrong?

Why you can't implement PCI0/BR2A/H000 in your SSDT?

Moreover, if you null H000 you might get H001 and once you have H001 you can null it too and you might get something like D07C. Then you would null D07C and you would create a new device called e.g. XHC2 and you are done...

Where is the problem?
 
Status
Not open for further replies.
Back
Top