Jump to content
fusion71au

Run Vanilla OS X El Capitan, Sierra, High Sierra or Mojave in VirtualBox 5.x.x on a Windows Host

84 posts in this topic

Recommended Posts

Run Vanilla OS X El Capitan, Sierra, High Sierra or Mojave in VirtualBox 5.x.x on a Windows Host

Following on from my previous guide on how to create a VMware virtual machine running Vanilla OS X El Capitan in Windows, I’ve decided to write a similar guide for creating a VirtualBox El Capitan VM. 

 

The virtual machine should be useful for testing El Capitan and also for creating installers for use on a real machine/hackintosh.

 

There are other tutorials and videos on the net about running OS X on Windows machines using pre-made VMDK disk images but you can never guarantee what else is in there….

 

I’ve gathered info for this guide from several threads in the Multibooting and Virtualisation section of this forum and also the wider internet eg

 

@colt2 HOW TO: Create a bootable El Capitan ISO for VMware

@dsmccombs comment on faking Ivybridge Processor

@E:V:A http://forum.xda-developers.com/showpost.php?p=55572430&postcount=6

@Tech Reviews video tutorial https://www.youtube.com/watch?v=t7X07U63lwg.

VirtualBox Forum: Status of OSX on OSX

 

Requirements

  •    Intel PC with four or more CPU cores running Windows 7 X64 or later OS (2 or more cores needed for OS X)
  •    4GB or more RAM (2GB or more will be needed for OS X)
  •    Hard Disk with at least 40GB free for Virtual Machine
  •    Oracle VM VirtualBox v 5.0.34
  •    Install OS X El Capitan app and Mac or Hack to prepare installation iso <-- Now, no longer necessary to have previous access to a Mac or Hack by building the Installer.app from scratch - see post#75
  •    16GB or larger exFAT formatted USB stick to transfer El Capitan iso from Mac/Hack to Host PC

 

Prepare Installation ISO on your Mac or Hack

1.  On your Mac or Hack, download "Install OS X El Capitan.app" from the App Store into your Applications folder.

2.  Download and unzip the CECI.tool (attached to this post) into your ~/Downloads folder. The commands in this executable script are shown below for informational purposes.  Note: you will need approx 16GB of free space on your hard disk for the script to complete.

 

 

 


  #!/bin/bash
 
 # Mount the Installer image
 hdiutil attach /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app
 
 # Create El Capitan sparseimage of 7316mb with a Single Partition - Apple Partition Map
 hdiutil create -o /tmp/ElCapitan -size 7316m -layout SPUD -fs HFS+J -type SPARSE
 
 # Mount the El Capitan sparseimage
 hdiutil attach /tmp/ElCapitan.sparseimage -noverify -nobrowse -mountpoint /Volumes/install_build
 
 # Restore the Base System into the El Capitan Blank sparseimage
 asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase
 
 # Remove Packages link and replace with actual files
 rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages
 cp -rp /Volumes/install_app/Packages /Volumes/OS\ X\ Base\ System/System/Installation/
 
 # Copy El Capitan installer dependencies
 cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/BaseSystem.chunklist
 cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/BaseSystem.dmg
 
 # Unmount the installer image
 hdiutil detach /Volumes/install_app
 
 # Unmount the Base System image
 hdiutil detach /Volumes/OS\ X\ Base\ System/
 
 # Optimise Sparseimage Size
 hdiutil compact /tmp/ElCapitan.sparseimage
 hdiutil resize -size min /tmp/ElCapitan.sparseimage
 
 # Convert the ElCapitan spareseimage to ISO/CD master
  hdiutil convert /tmp/ElCapitan.sparseimage -format UDTO -o /tmp/ElCapitan.iso
 
 # Rename the ElCapitan ISO image and move it to the desktop
  mv /tmp/ElCapitan.iso.cdr ~/Desktop/'EC 10.11.0.iso'
 
 # Delete ElCapitan.sparseimage file
  rm -f /tmp/ElCapitan.sparseimage

 

 

3.  Open OS X terminal, then run the following commands to execute the script:

cd downloads
chmod +x CECI.tool
./CECI.tool

4.  At the end of the process, you will have an El Capitan iso on your desktop - copy this onto an exFAT formatted USB for use on the PC Host later.

 

 

Create an El Capitan Virtual Machine in VirtualBox

1.  Open the VirtualBox program and click the "New" button to create a new VM.

 

post-846696-0-88912600-1448963845_thumb.png

 

2.  Select Mac OS X and Mac OS X 10.11 El Capitan (64 -bit) for Operating System type and version.  I named my Virtual Machine "El_Capitan", then clicked next...

 

post-846696-0-91169600-1448963869_thumb.png

 

3.  Leave the Memory size at the recommended 2048 MB, then click next.

 

post-846696-0-89412300-1448963896_thumb.png

 

4.  Choose to "Create a virtual hard disk now", then click the create button.

 

post-846696-0-29172100-1448963917_thumb.png

 

5.  For the hard disk file type, the default is VDI (VirtualBox Disk Image) but I have selected VMDK for inter-operability with VMWare.  Click next...

 

post-846696-0-95996100-1448963937_thumb.png

 

6.  For Storage on physical hard disk, I have chosen the default Dynamically allocated (grows larger to a set limit as you need more disk space).

 

post-846696-0-31109600-1448963961_thumb.png

 

7.  On the File location and size screen, you can set the location of the new virtual hard disk and its size - I recommend changing disk size to 40GB or larger.  When you click the create button, you will now see your new VM in the VirtualBox main GUI.

 

post-846696-0-32604500-1448963988_thumb.png

 

8.  Click the settings button on the Main Menu to tweak a few settings....

   a.  On the System/Motherboard tab in Boot Order, you can uncheck the Floppy Drive (who has these now?)

 

post-846696-0-06851900-1448964133_thumb.png

 

   b.  On the System/Processor tab, you can increase the allocated CPU cores to 2

 

post-846696-0-39713300-1448964166_thumb.png

 

   c.  On the Display tab, you can increase the allocated Video Memory to 128MB

 

post-846696-0-93416900-1448964191_thumb.png

 

   d.  On the Storage tab, click on the icon of the Optical Drive and select "Choose Virtual Optical Disk File". 

 

post-846696-0-43148400-1448964229_thumb.png

 

Navigate and select the El Capitan ISO we created earlier...

 

post-846696-0-46757100-1448964266_thumb.png

 

   e.  Click the OK button to finalise the VM settings.

 

 

Patch El Capitan vbox configuration file with DMI Settings from a Mac

1.  From the start menu, type cmd and click run as administrator to open an administrative command prompt. 

 

post-846696-0-13525000-1448964304_thumb.png

 

2.  Choose a Mac Model similar to your host system, then type the following lines, followed by <enter>  after each line.  Make sure you first close all VirtualBox Windows and the VirtualBox program, otherwise any changes you make won't stick...

 

Eg iMac11,3

cd "C:\Program Files\Oracle\VirtualBox\"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F2238BAE"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

MacBookPro11,3

cd "C:\Program Files\Oracle\VirtualBox\"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-2BD1B31983FE1663"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

Macmini6,2

cd "C:\Program Files\Oracle\VirtualBox\"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "Macmini6,2"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F65AE981FFA204ED"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

3.  Optional- For some host systems eg those with Haswell and newer CPUs, you might have to spoof an older CPU to avoid VirtualBox errors.  You can try from one of the following if this happens:

To spoof Lynnfield i5 750 CPU

VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000106e5 06100800 0098e3fd bfebfbff

To spoof IvyBridge CPU

VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000306a9 04100800 7fbae3ff bfebfbff

or

VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000306a9 00020800 80000201 178bfbff

4.  Close the command prompt window.

 

 

Installation of El Capitan

We are now ready to start the El_Capitan Virtual Machine....

 

post-846696-0-00458100-1448964384_thumb.png

post-846696-0-74046700-1448964397_thumb.png

post-846696-0-43170900-1448964411_thumb.png

 

Installation should be relatively straight forward, just following the prompts of the OS X installer:

1.  Select language, agree to legal terms

 

post-846696-0-05430100-1448964461_thumb.png

 

2.  Use Disk Utility from the Utilities Menu to erase and format the virtual hard drive as a single partition GUID Mac OS X Extended.  I named my drive "Macintosh HD" but you can enter whatever you like eg El_Capitan.

 

post-846696-0-91060500-1448964502_thumb.png

 

3.  Quit DU and choose Macintosh HD to install El Capitan on.

4.  After 20-30 min (depending on how fast your system is), the installation will complete.  At this point, unmount the El Capitan ISO by clicking the Devices menu from the VM window, click Optical Drives, then choose Remove disk from virtual drive.  The VM is now ready to reboot into OS X from the virtual hard drive.

5.  At the welcome screen, choose your country and keyboard layout.  You can skip transfer information, location services and logging in with your Apple ID if you wish…

6.  Create a User Account and select your Time Zone.  You can skip sending diagnostics and usage data to Apple….

7.  Finally, you will arrive at the El Capitan Desktop.

 

post-846696-0-14340200-1448964610_thumb.png

 

8.  Network/internet and audio should work OOB but on my system, the sounds were distorted.  Unfortunately, there is no QE/CI and the VM resolution will be fixed without the ability to dynamically resize the VM window (no VirtualBox additions for OS X guests atm). 

 

 

Customization with VBoxManage

1.  You can change the default resolution of 1024*768 (after shutting down the VM) with the VBoxManage command from the Windows Administrative Command Prompt:

cd "C:\Program Files\Oracle\VirtualBox\"
VBoxManage setextradata "El_Capitan" VBoxInternal2/EfiGopMode N (Where N can be one of 0,1,2,3,4,5)

referring to the 640x480, 800x600, 1024x768, 1280x1024, 1440x900, 1920x1200 screen resolution respectively.

 

Update:  For VirtualBox 5.2.x, the command for changing screen resolution has changed...

 

VBoxManage setextradata "<MyVM>" VBoxInternal2/EfiGraphicsResolution XxY (where X=Horizontal screen resolution, Y=Vertical screen resolution)

eg

VBoxManage setextradata "<MyVM>" VBoxInternal2/EfiGraphicsResolution 1280x1024

2.  Adding serials and other SMBIOS details for the System Information Screen

VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "W8#######B6"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" "W8#########1A"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVendor" "Apple Inc."
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemFamily" "iMac"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBIOSVersion" "IM112.0057.03B"

A listing of known issues with Mac OS X guests can be found in the VirtualBox Manual - link https://www.virtualbox.org/manual/ch14.html.

 

Vanilla Mavericks and Yosemite, Snow Leopard from Retail DVD

The same VM settings for El Capitan will also boot and run vanilla installations of OS X Mavericks and Yosemite :).  Attached to this post are installer scripts to create bootable Mavericks (CMI.tool) and Yosemite (CYI.tool) ISOs for VirtualBox and VMware.

 

With the respective OS X installer apps in the Applications folder, download and run the installer tools using terminal ie

 

To create a Mavericks ISO on your desktop

cd downloads
chmod +x CMI.tool
./CMI.tool

To create a Yosemite ISO on your desktop

cd downloads
chmod +x CYI.tool
./CYI.tool

Here is a screenshot of the VM running Mavericks 10.9.5...

 

post-846696-0-60483000-1449392442_thumb.png

 

Finally, those without a Mac/Hack to prepare the install media can purchase a retail Snow Leopard DVD directly from Apple and install OSX 10.6.3 on their virtual machines (Snow Leopard, Lion and Mountain Lion run quite happily in VirtualBox with 1 CPU, 1-2 GB of RAM and the rest of the settings unchanged from above).  Once you update by combo update to SL 10.6.8, you can directly download El Capitan from the App Store for free :thumbsup_anim:.

 

post-846696-0-87473800-1449565170_thumb.png

 

UPDATE macOS Sierra 10.12 to 10.12.6: For macOS Sierra, use CSI.tool in post#51.

UPDATE macOS High Sierra 17A365:  For macOS High Sierra, use CHSI.tool in post#73.

UPDATE macOS Mojave Beta:  For macOS Mojave Beta, use CMJI.tool on page 4 of thread.

 

Good luck and enjoy :)

CECI.tool.zip

CYI.tool.zip

CMI.tool.zip

Edited by fusion71au
Update for Mojave Beta

Share this post


Link to post
Share on other sites
Advertisement

Clover for VirtualBox OS X Guest <--- Update:  Legacy Clover no longer works in VirtualBox 5.1.x and VirtualBox 5.2.x (causes red screen error).  Need to install in UEFI mode only and press <F12>, select "EFI Hard Drive" from Boot Manager to start VM with Clover

 

Some users may want to install Clover onto their OS X Guest to spoof a Mac more closely and enable MLB & ROM to be injected for iMessage/Facetime activation. 

 

It is possible to install Clover for "UEFI booting only" if you set the Guest to use EFI BIOS but unfortunately, you have to use the <F12> key each time the VM boots up to select "EFI Hard Drive" and start Clover (VirtualBox's EFI Bios seems hardwired to give priority to boot.efi/Mac OS X above all other EFI options.  Even if you change boot priority, it doesn't seem to stick).

 

If you want to use Clover in VirtualBox, its much easier to use VirtualBox's legacy BIOS and install Clover in legacy mode.  During the setup of the Virtual Machine, you can use the same parameters as described in post#1 but uncheck EFI in the "Extended Features" and omit all the VBoxManage efi edits ie

 

Omit the lines which have "VBoxInternal/Devices/efi/0/Config/" but leave in

VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

If you have already created a VM with the offending lines, you can remove them with VBoxManage eg Open a Windows Administrative Command Prompt and type the following null entries....

cd "C:\Program Files\Oracle\VirtualBox\"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" ""
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" ""
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" ""

Clover Installation

Choose a custom legacy install of Clover into the EFI System Partition as shown below...

 

post-846696-0-38582200-1449486143_thumb.png

 

After Clover is installed, you can edit the config.plist with Clover Configurator to remove all injections and patches ---> leave a minimal config.plist but enter your generated/real MLB/ROM in Rt Variables etc.

 

Make sure to include the following -

 

boot arguments: -v usb=0x800 keepsyms=1 -serial=0x1 size=36

GUI Screen Resolution: 1024*768

 

 eg of VirtualBox compatible Minimal Clover config.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Debug</key>
			<false/>
			<key>DropOEM_DSM</key>
			<false/>
			<key>Name</key>
			<string>DSDT.aml</string>
			<key>ReuseFFFF</key>
			<false/>
		</dict>
		<key>DropTables</key>
		<array>
			<dict>
				<key>Signature</key>
				<string>SSDT</string>
				<key>TableId</key>
				<string>CpuPm</string>
			</dict>
			<dict>
				<key>Signature</key>
				<string>DMAR</string>
			</dict>
			<dict>
				<key>Signature</key>
				<string>SSDT</string>
				<key>TableId</key>
				<string>Cpu0Ist</string>
			</dict>
		</array>
		<key>SSDT</key>
		<dict>
			<key>DropOem</key>
			<false/>
			<key>Generate</key>
			<false/>
		</dict>
	</dict>
	<key>Boot</key>
	<dict>
		<key>Arguments</key>
		<string>-v usb=0x800 keepsyms=1 -serial=0x1 size=36</string>
		<key>Debug</key>
		<false/>
		<key>DefaultLoader</key>
		<string>boot.efi</string>
		<key>DefaultVolume</key>
		<string>LastBootedVolume</string>
		<key>Legacy</key>
		<string>PBR</string>
		<key>Secure</key>
		<false/>
		<key>Timeout</key>
		<integer>5</integer>
		<key>XMPDetection</key>
		<false/>
	</dict>
	<key>Devices</key>
	<dict>
		<key>USB</key>
		<dict>
			<key>FixOwnership</key>
			<false/>
			<key>Inject</key>
			<false/>
		</dict>
	</dict>
	<key>GUI</key>
	<dict>
		<key>Mouse</key>
		<dict>
			<key>DoubleClick</key>
			<integer>500</integer>
			<key>Enabled</key>
			<false/>
			<key>Mirror</key>
			<false/>
			<key>Speed</key>
			<integer>8</integer>
		</dict>
		<key>Scan</key>
		<dict>
			<key>Entries</key>
			<true/>
			<key>Legacy</key>
			<false/>
			<key>Tool</key>
			<true/>
		</dict>
		<key>ScreenResolution</key>
		<string>1024x768</string>
		<key>Theme</key>
		<string>BGM</string>
	</dict>
	<key>Graphics</key>
	<dict>
		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<false/>
			<key>Intel</key>
			<false/>
			<key>NVidia</key>
			<false/>
		</dict>
		<key>NvidiaSingle</key>
		<false/>
	</dict>
	<key>KernelAndKextPatches</key>
	<dict>
		<key>AppleRTC</key>
		<false/>
		<key>AsusAICPUPM</key>
		<false/>
		<key>Debug</key>
		<false/>
		<key>KernelCpu</key>
		<false/>
		<key>KernelHaswellE</key>
		<false/>
		<key>KernelLapic</key>
		<false/>
		<key>KernelPm</key>
		<false/>
	</dict>
	<key>RtVariables</key>
	<dict>
		<key>BooterConfig</key>
		<string>0x28</string>
		<key>CsrActiveConfig</key>
		<string>0x0</string>
		<key>MLB</key>
		<string>C02032109R5DC771H</string>
		<key>ROM</key>
		<string>UseMacAddr0</string>
	</dict>
	<key>SMBIOS</key>
	<dict>
		<key>Manufacturer</key>
		<string>Apple Inc.</string>
		<key>Trust</key>
		<false/>
	</dict>
	<key>SystemParameters</key>
	<dict>
		<key>InjectKexts</key>
		<string>No</string>
		<key>InjectSystemID</key>
		<true/>
	</dict>
</dict>
</plist>

Minimal Clover config.plist.zip

Share this post


Link to post
Share on other sites

Thanks for this great guide, actually what I was looking for for weeks. It works also under Virtualbox for Linux, and everything went fine until I tried to install Clover in legacy mode.

It boots fine in UEFI mode, but in legacy I get a kernel panic with "zone_init: kmem_suballoc failed". And the virtual machine goes to "Guru Meditation".

 

Any clues?

Share this post


Link to post
Share on other sites

@Gwan,

 

You're right, I get the same error with Clover legacy/El Capitan :no:At the moment with El Capitan and Clover in VirtualBox 5, only UEFI mode works so you have to use F12 on start up of your VM to load Clover first.

 

It seems like a bug/incompatibility with El Capitan only since Clover legacy works on my system to boot Mavericks and Yosemite without issue.

Share this post


Link to post
Share on other sites

Is this necessary to do this:

 

 

An alternative model to spoof is MacBookPro11,3 with an IvyBridge i7-3770 CPU - substitute the second to fifth lines above with

VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000306a9 04100800 7fbae3ff bfebfbff
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-2BD1B31983FE1663"

 

on HP Probook 450 G0 packed with:

 

  Name Intel Core i5 3230M   Codename Ivy Bridge   Specification Intel® Core i5-3230M CPU @ 2.60GHz

 

?????

If not!!!!!!

I am facing an issue, my installation got stuck at DSMOS has arrived. Screenshot attached. Can someone help. 

post-1485537-0-75778900-1451173770_thumb.png

Share this post


Link to post
Share on other sites

@totbatotammo,

 

Not 100% sure about your errors but worth trying the VM with the IvyBridge i7 CPUID or even leaving the --cpuidset  line out.

 

Make sure you have made the El Capitan ISO with a Vanilla app downloaded from the App Store and prepared with the CECI tool.

Also cut and paste the text from the guide to avoid typing/syntax errors.

 

To determine whether the problem lies with your VirtualBox settings or your installer ISO, you can always try the ISO on VMware instead of VirtualBox :).

 

Edit:

Make sure you close all VirtualBox Windows and the VirtualBox program before you patch the vbox configuration file with VBoxManage, otherwise any changes you make won't stick.

 

Also try a different Mac model if iMac doesn't work eg

 

MacBookPro11,3

MacBookPro8,2

Macmini6,2

 

You can confirm the Mac model being used during verbose boot - look for the prefix to the line

 

###.local.com.apple.xpc.launchd[1] (MyListenerSocket)

 

where ### will be iMac, MacBookPro, Macmini etc.

Share this post


Link to post
Share on other sites

I too am stuck on DSMO has arrived as well. I'm installing Yosemite.

Went back and tried Lynnfield and Ivy bridge patches. I've even tried Clover following your instructions closely.

 

Quite the puzzle.

 

 

Share this post


Link to post
Share on other sites
Hi pals!

 

I'm followed this guide but without a luck.

 

I have tried this approach on two different machines:

Core i3 + 4Gb RAM win 7

Core i5 + 16Gb RAM win 8

 

I've tried either to make ISO manually (on my MBP), using CECI.tool and finally I've downloaded VDI from TechReviews.

 

In all cases I see default pointer or spinning rainbow ball on black screen, so it seems installation indeed loads and works but for some unknown reason it fails to start UI properly.  Can you suggest something?  I would be very happy if I manage to run El Cap as guest system on my office windows machine.

 

P.S. I had installed Hackintosh successfully several times in past, but in case of office machine I can go only virtual box way.

Share this post


Link to post
Share on other sites

May I ask what the main drawbacks are for this?

 

I'm thinking of doing this for my 80 year old uncle to have iMessage on his PC running Windows 10 as he also uses an iPhone & iPad (but has a Windows PC...very new one too)

 

Would iMessage work on a virtual ElCap install?

Perhaps Photos too?

 

Thx all

Share this post


Link to post
Share on other sites

The good news: Mac OSX EC boots and works in VB on my Laptop.

 

The problem: 1024x768 is a postage stamp on my monitor(okay, a large postage stamp) and is too cramped to get anything done.

 

The attempted solution: Installed Clover.

 

The result: Mac OSX EC boots in 1920x1200, which now makes OSX too big for my 1920x1080 monitor.

 

I've been fiddling with the config.plist and vbox file, but no matter what I try Clover is stuck at 1920x1200. I can't even make it go to a low resolution like 1024x768. Am I missing something? Before it's suggested, I'm avoiding the "EfiGopMode" method since it doesn't provide a 16:9 aspect option.

Share this post


Link to post
Share on other sites

I have Internet on my El Capitan Virtual Box but I can't login to my App store account. When I try, the Spinning pinwheel turn undefinitely. Any idea ?

 

Edit : 

 

I added serials and other SMBIOS details for the System Information Screen like mentionned in the guide and it seems to work now. I didn't know it was for this purpose, sorry. 

Share this post


Link to post
Share on other sites

The good news: Mac OSX EC boots and works in VB on my Laptop.

 

The problem: 1024x768 is a postage stamp on my monitor(okay, a large postage stamp) and is too cramped to get anything done.

 

The attempted solution: Installed Clover.

 

The result: Mac OSX EC boots in 1920x1200, which now makes OSX too big for my 1920x1080 monitor.

 

I've been fiddling with the config.plist and vbox file, but no matter what I try Clover is stuck at 1920x1200. I can't even make it go to a low resolution like 1024x768. Am I missing something? Before it's suggested, I'm avoiding the "EfiGopMode" method since it doesn't provide a 16:9 aspect option.

 

Did you try :

VBoxManage setextradata "El_Capitan" "VBoxInternal2/EfiGopMode" N (Where N can be one of 0,1,2,3,4,5)

Share this post


Link to post
Share on other sites

 

Did you try :

VBoxManage setextradata "El_Capitan" "VBoxInternal2/EfiGopMode" N (Where N can be one of 0,1,2,3,4,5)

 

Before it's suggested, I'm avoiding the "EfiGopMode" method since it doesn't provide a 16:9 aspect option.

Share this post


Link to post
Share on other sites

Well it's in the manual chapter 9.8.1: https://www.virtualbox.org/manual/ch09.html#idp46730497496080

VBoxManage setextradata "VM name" "CustomVideoMode1" "1400x1050x16"

You have to change "VM name" by your real VM name (put it in "") then change the "1400x1050x16" to whatever res you would like, for eg: "1920x1080x32".

Write a feedback if it worked.

Thanks :D

Share this post


Link to post
Share on other sites

Well it's in the manual chapter 9.8.1: https://www.virtualbox.org/manual/ch09.html#idp46730497496080

VBoxManage setextradata "VM name" "CustomVideoMode1" "1400x1050x16"

You have to change "VM name" by your real VM name (put it in "") then change the "1400x1050x16" to whatever res you would like, for eg: "1920x1080x32".

Write a feedback if it worked.

Thanks :D

Already tried that and it didn't work. :(

Share this post


Link to post
Share on other sites

Thank you so much for this post!

 

Too bad virtual box doesn't support guest additions for OSX to setup native shared folders between host and guest.

 

I'm only left with options like SMB or NFS but both seem to be bottle necking in speeds by the network adapter type options (i.e. Intel PRO/1000 MT Server), I would really like faster than gigabit internet adapters.

 

After getting an NFS share between host and guest, I am only transferring at 12 MB/s :(

 

Darn this would have been absolutely awesome. So close!

 

I'm going to snoop around and see if there's any chance to activate PCI pass through.

Share this post


Link to post
Share on other sites

Very best guide so far. Thank you.

 

Here are my working cpuidset:

 

(on HP i7 15.6in laptop, vbox 5.0.2, in EFI mode, with osx 10.9-10-11)

::MacBookPro8,2 with an IvyBridge i7-3770 CPU
VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000006fb 00000800 80000209 078bfbff
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro8,2"
VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
 

Few more that you may test: 

# unknown cpu
00000001 000206a7 02100800 1fbae3bf bfebfbff
# only for new i3/i5/i7 ivy bridge processor
00000001 000306a9 00020800 80000201 178bfbff
# MacBookPro11,3 with an IvyBridge i7-3770 CPU
00000001 000306a9 04100800 7fbae3ff bfebfbff
# iMac11,3 (27-inch, Mid 2010)
00000001 000106e5 00100800 0098e3fd bfebfbff
In my tests, some of the cpuid's gave errors like "vbox error", DSMOS and disk errors. I kept testing until one worked.

 

Here's the windows script I use to boot in EFI mode:

osx_efi_launch.bat 

@echo off
set VM_NAME=%1

::echo 'configuring cpuid and extradata for %VM_NAME%'
set MANAGE="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
set VBOX="C:\Program Files\Oracle\VirtualBox\VirtualBox.exe"


:: MacBookPro8,2 with an IvyBridge i7-3770 CPU
%MANAGE% modifyvm %VM_NAME% --cpuidset 00000001 000006fb 00000800 80000209 078bfbff
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro8,2"
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"

%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

%MANAGE% setextradata %VM_NAME% VBoxInternal2/EfiGopMode 4
:: 0 640x480
:: 1 800x600
:: 2 1024x768
:: 3 1280x1024
:: 4 1440x900
:: 5 1920x1200

::%MANAGE% showvminfo %VM_NAME%
::pause
start "" %VBOX% --startvm %VM_NAME%
 

Then I simply create as many shortcuts as I need, in which I modify the target according to the VM name.

d:\path\to\scrpit\osx_efi_launch.bat VIRTUAL_MACHINE_NAME
 

Script to remove extra data (useful when testing): 

@echo off
set VM_NAME=%1

set MANAGE="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
set VBOX="C:\Program Files\Oracle\VirtualBox\VirtualBox.exe"

:: note CPUID will be taken out from the .vbox file
:: %MANAGE% modifyvm %VM_NAME% --cpuidset 0
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct"
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion"
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct"
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/smc/0/Config/DeviceKey"
%MANAGE% setextradata %VM_NAME% "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC"
%MANAGE% setextradata %VM_NAME% "CustomVideoMode1"

pause
Hope it helps someone. :)

I've been fiddling with the config.plist and vbox file, but no matter what I try Clover is stuck at 1920x1200. I can't even make it go to a low resolution like 1024x768. Am I missing something? Before it's suggested, I'm avoiding the "EfiGopMode" method since it doesn't provide a 16:9 aspect option.

According to my test, the cpuid used may override the EfiGopMode. For example this one

# iMac11,3 (27-inch, Mid 2010)
00000001 000106e5 00100800 0098e3fd bfebfbff

would bypass my EfiGopMode=4, while others did not.

 

Worth the try.

Share this post


Link to post
Share on other sites

I followed all the instructions exactly but every time I start it I get stuck here:

QDKemzo.png

 

I got same problem here..

but I still can not get into installation of el capitan step. it showing these error every time I start the installation.

 

I have tried to change the cpuidset become those that listed by clauden, still always error.

Share this post


Link to post
Share on other sites

probably caused the graphics card these problems, if the system should get stuck here:  “....Waiting for DSMOS” or “....DSMOS has arrived” .... ...or "IOBluetooth ....missing bluetooth...."

boot with your recent bootargs but in singel user mode as: -s .........   (if a dsdt is used, then boot with: DSDT=NO)

 

fsck -fy               (press the enter key)


mount -uw /                 (press the enter key)

mkdir /backup                      (write these and press the enter key)

cd /System/Library/Extensions                            (write these and press the enter key)

mv AppleIntelHD* AppleIntelSNB* AMDRadeon* ATI* GeForce* NVDA* /backup        (write these and press the enter key)

rm ../Caches/com.apple.kext.caches/Startup/kernelcache      (write these and press the enter key)

reboot              (press the enter key)

 

 

alternatively:

connect the USB flash disk or your external HDD to an runnable OS X system

and remove all graphics drivers, as described above from S/L/E, then fix the permissions and reboot.

Share this post


Link to post
Share on other sites

 

probably caused the graphics card these problems, if the system should get stuck here:  “....Waiting for DSMOS” or “....DSMOS has arrived” .... ...or "IOBluetooth ....missing bluetooth...."
boot with your recent bootargs but in singel user mode as: -s .........   (if a dsdt is used, then boot with: DSDT=NO)
 
fsck -fy               (press the enter key)
mount -uw /                 (press the enter key)
mkdir /backup                      (write these and press the enter key)
cd /System/Library/Extensions                            (write these and press the enter key)
mv AppleIntelHD* AppleIntelSNB* AMDRadeon* ATI* GeForce* NVDA* /backup        (write these and press the enter key)
rm ../Caches/com.apple.kext.caches/Startup/kernelcache      (write these and press the enter key)
reboot              (press the enter key)
 
 
alternatively:
connect the USB flash disk or your external HDD to an runnable OS X system
and remove all graphics drivers, as described above from S/L/E, then fix the permissions and reboot.

 

 

I have no idea what you mean by this? What console do I type those commands in?

So I did everything the same except instead of using the SATA optical drive I used an IDE one to mount the .iso

 

It gets to here:

S0W6wRp.png

 

Then this happens:

vgeLOtg.png

 

About every 2 mins a new blank line appears and no matter how long I leave it is never progresses.

 

Does this method not work for the 10 Dec 2015 build of El Capitan?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By fantomas1
      -----------------------------
      Mise à jour 12/07/2018
      -----------------------------
       
      La sortie de macOS 10.14 Beta m'oblige à mettre ce topic à jour. Plus de détails dans ce post.
       

       

       
      -----------------------------
      Mise à jour 09/06/2017
       
      -----------------------------
       
      La sortie de macOS 10.13 Beta m'oblige à mettre ce topic à jour. Plus de détails dans ce post.
       

       
       
       
      -----------------------------
      Mise à jour 15/06/2016
      -----------------------------
       
      Une petite mise à jour du topic pour confirmer le bon fonctionnement du patch à la volé de Clover (r3561) avec macOS Sierra.
       

       
       
       
      -----------------------------
      Mise à jour 24/08/2015
      -----------------------------
       
      ok, très bien,
       
      comme pour la HD6770, la nouvelle méthode du patch à la volé est de nouveau fonctionnel et avec les dernières versions de Clover.
       
      pour ma part, je suis sur El Capitan DB7 et Clover r3259
       

       
       
      par contre, je suis toujours obligé de m’aider de l’astuce avec FakeSMC pour que mes kexts soient toujours chargés, mais au moins cela marche.   
       
       
       
       
      et pour config.plist, cela donne ça :
       

       
       
      ceci est juste un exemple avec ma HD4830, il va de soi que vous devez mettre Device-ID de votre carte graphique !!!
       
       
       
       
       
      Salut à tou(te)s
       
      Comme certain(e)s le savent, les cartes graphiques dites "Exotiques" ne sont pas supportés par le système d'exploitation d'Apple.
      En sus d'ajouter l'identifient de la carte graphique (Device ID) dans l'Info.plist du ou des kexts concernés, il faut aussi interagir sur la partie "binaire" du kext par le biais du "patching".
       
      Dans notre cas, les cartes graphiques exotiques sont les cartes AMD (anciennement ATI) de la série HD 48xx, et plus précisément les HD 4830, HD4850, HD4870x2 et HD4890.*
       
      Donc le but est de faire fonctionner ces cartes graphiques de manière stable et fluide en activant QE_CI, chose nécessaire pour en profiter pleinement du système d'exploitation.
       
      * Juste avant de commencer, vous l'avez peut-être remarqué, la HD4870 n'est pas sur la liste suscitée et pour cause c'est que cette carte graphique est nativement supportée par le système d'exploitation d'Apple. Son Device ID est 0x94401002 que vous pouvez trouvé dans l'Info.plist des kexts concernés et c'est celui-ci que nous allons utiliser afin de le remplacer par le Device ID de notre carte graphique.
       
      ** Ce tuto est fait pour fonctionner sous OS X Mavericks, mais il doit fonctionner aussi avec les autres. La seule chose différente c'est l'adresse binaire à patcher.    
       
       
      Très bien, comme le titre le suggère, nous allons voir comment faire reconnaître ces cartes graphiques sous Clover et obtenir par la même un QE_CI activé et parfaitement fonctionnelle.
       
      Je vais utiliser ma Sapphire HD4830 512 MB GDDR3 PCI-E (comme cobaye    ) pour ce test et qui a pour Device ID 0x944c1002.
       
      Pour que ce test réussisse, nous allons donc utiliser ces 2 kexts, à savoir AMD4800Controller.kext (pour la partie QE) et ATIRadeonX2000.kext (pour la partie CI) et allons ajouter notre Device ID dans l'Info.plist. via le tweak "KernelAndKextPatches"
       
      Donc les valeurs à entrer dans notre config.plist sont celle-ci :
      <key>KernelAndKextPatches</key>     <array>         <dict>             <key>Name</key>             <string>AMD4800Controller</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>         <dict>             <key>Name</key>             <string>ATIRadeonX2000</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>     </array> Comme vous pouvez le voir, la clé "InfoPlistPatch" sert à injecter notre Device ID "uniquement" dans Info.plist, sans y toucher à la partie "binaire" de nos kexts. La clé "Find" a pour fonction de trouver le Device ID que l'on veut remplacer par le notre en utilisant la clé "Replace".
       
      Très bien, maintenant comme nous l'avons dit au début de ce tutoriel, ajouter notre Device ID n'est pas suffisant pour faire fonctionner pleinement notre carte graphique, il faut encore interagir sur la partie "binaire" de nos kexts. Dans notre cas, il va falloir agir uniquement sur un kext, çàd sur ATIRadeonX2000.kext et plus particulièrement sur ATIRadeonX2000.kext/Contents/MacOS/ATIRadeonX2000
       
      Et pour cela, nous allons faire comme ceci :
      <key>KextsToPatch</key> <array> <dict>     <key>Name</key>     <string>ATIRadeonX2000</string>     <key>Find</key>     <data>0F8394010000</data>     <key>Replace</key>     <data>909090909090</data> </dict> </array> Là nous pouvons voir que la clé "InfoPlistPatch" n'est pas utilisée et donc ces valeurs n'auront aucun effet sur l'Info.plist mais agiront uniquement au niveau de la partie "binaire". 
       
      Et voici les valeurs en leur forme complète que vous devrez ajouter dans votre config.plist
      <key>KernelAndKextPatches</key>     <array>         <dict>             <key>Name</key>             <string>AMD4800Controller</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>         <dict>             <key>Name</key>             <string>ATIRadeonX2000</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>         <dict>             <key>Name</key>             <string>ATIRadeonX2000</string>             <key>Find</key>             <data>0F8394010000</data>             <key>Replace</key>             <data>909090909090</data>        </dict>     </array> Très bien, maintenant il ne nous reste plus qu'à autoriser l'injection des kexts, sans quoi le patch ne fonctionnera pas. Et nous allons le faire via le tweak "InjectKexts" comme ceci :
      <key>SystemParameters</key> --> clé principale <dict>       <key>InjectSystemID</key>       <true/>       <key>InjectKexts</key> --> sous clé       <string>Yes</string> </dict>  
       
      Si certain(e)s d'entre vous préfèrent utiliser le logiciel "Clover Configurator" pour plus de facilité, voici comment entrer ces valeurs :
       
      Allez sur l'onglet "Kernel And Kext Patches" et faites comme ceci :
       
       
       
      *Ne faites pas attention sur le majuscule/minuscule, cela ne fait aucune différence
       
       
      Et pour injecter les kexts, aller sur l'onglet "System Parameters" et mettez l'option Inject Kexts sur Yes comme ceci :
       

       
       
      Voilà, vous n'avez plus qu'à enregistrer les ajustements, redémarrer votre pc et apprécier le résultat.
       
       
      MAIS ... seulement voilà ... il y a un problème ... 
       
      Quoi ? 
       
      Initialement, les kexts ne sont pas présents dans le kernelcache à cause de "OSBundleRequired=Safe Boot" (ils ne sont pas chargés en local par défaut mais en mode sans échec) et donc le patchage "à la volé" (on the fly) ne fonctionnera pas.
       
      Donc quoi, tout ça pour rien ?
       
      Non, bien-sûr, voici l'astuce pour remédier à cela :
       
      Dans un premier temps, il vous faut booter l'OS sans kernelcache. Si vous utiliser Clover Configurator, il vous suffit juste de cocher l'option "No Caches" dans l'onglet "System and Parameters" ou bien vous le faites directement dans votre config.plist :
      <key>SystemParameters</key> <dict>       <key>InjectSystemID</key>       <true/>       <key>InjectKexts</key>       <string>Yes</string>       <key>NoCaches</key>       <true/> </dict> Ceci aura donc pour effet de bloquer kernelcache et obliger boot.efi de charger le kernel et les kexts séparément. Clover et FSInject vont ensuite intercepter tous les chargements des kexts par boot.efi et changer "OSBundleRequired=Safe Boot" en "OSBundleRequired=Root" à la volé (on the fly) et forceront boot .efi à charger les kexts. Et ensuite dans un second temps, Clover va patcher l'Info.plist de ces deux kexts et la partie binaire de ATIRadeonX2000, kernel va les charger et ils seront rattachés à votre carte graphique.
       
      Une fois ceci fait (donc les kexts utilisés), il vous suffit de faire sudo touch /System/Library/Extensions. Ceci créera un nouveau kernelcache qui cette fois-ci contiendra vos kexts utilisés. Ensuite il ne vous reste plus qu'à redémarrer normalement (en décochant l'option No Caches dans Clover Configurator) et le patch fonctionnera à merveille.
       
       
      Oui, mais ... là aussi ...
       
      Quoi encore ?
       
      Seulement voilà, pour une raison ou une autre, il peut arriver que kernelcache se reconstruit tout seul et le patch "à la volé" ne fonctionne plus.
       
      Alors je fais quoi moi en attendant ?
       
      L'astuce la plus efficace pour le moment est d'injecter les infos de vos kexts à l'intérieur de l'Info.plist de FakeSMC.kext comme des IOKitPersonalities additionnels.
       
      ????Kézako????
       
      Ces infos vous les trouverez dans l'Info.plist de ces 2 kexts, sous IOKitPersonalities. Les voici :
       
      Pour AMD4800Controller.kext
      <key>Controller</key> <dict>         <key>ATY,Cardinal</key>         <dict>                 <key>aty_config</key>                 <dict>                         <key>CFG_NO_PP</key>                         <true/>                 </dict>          </dict>          <key>CFBundleIdentifier</key>          <string>com.apple.kext.AMD4800Controller</string>          <key>IOClass</key>          <string>AMD4800Controller</string>          <key>IOMatchCategory</key>          <string>IOFramebuffer</string>          <key>IOName</key>          <string>AMD4800Controller</string>          <key>IOPCIMatch</key>          <string>0x94401002 0x944a1002</string>          <key>IOProbeScore</key>          <integer>65050</integer>          <key>IOProviderClass</key>          <string>IOPCIDevice</string>         <key>aty_config</key>          <dict>                 <key>CFG_NO_PP</key>                  <false/>                  <key>CFG_PAA</key>                  <integer>0</integer>                  <key>CFG_USE_USCN</key>                  <false/>          </dict>          <key>aty_properties</key>          <dict>                  <key>PP_GFXClockGatingEnabled</key>                  <integer>1</integer>          </dict> </dict> Et pour ATIRadeonX2000.kext
      <key>ATIRadeonX2000</key> <dict>         <key>ATIEnableWideBlitSupport</key>         <true/> <key>ATIUseTearingWideBlit</key> <false/> <key>CFBundleIdentifier</key> <string>com.apple.ATIRadeonX2000</string> <key>GpuDebugPolicy</key> <integer>0</integer> <key>IOCFPlugInTypes</key> <dict> <key>ACCF0000-0000-0000-0000-000a2789904e</key> <string>ATIRadeonX2000GA.plugin</string> </dict> <key>IOClass</key> <string>ATIRadeonX2000</string> <key>IODVDBundleName</key> <string>ATIRadeonX2000VADriver</string> <key>IOKitDebug</key> <integer>0</integer> <key>IOMatchCategory</key> <string>IOAccelerator</string> <key>IOPCIMatch</key> <string>0x94001002 0x94011002 0x94021002 0x94031002 0x95811002 0x95831002 0x95881002 0x94c81002 0x94c91002 0x95001002 0x95011002 0x95051002 0x95071002 0x95041002 0x95061002 0x95981002 0x94881002 0x95991002 0x95911002 0x95931002 0x94401002 0x94421002 0x944A1002 0x945A1002 0x94901002 0x949E1002 0x94801002 0x95401002 0x95411002 0x954E1002 0x954F1002 0x95521002 0x95531002 0x94a01002</string> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>IOSourceVersion</key> <string>8.24.11</string> <key>IOVARendererID</key> <integer>16908288</integer> <key>sensor-properties</key> <array> <dict> <key>device_type</key> <data> Z3B1LXNlbnNvcg== </data> <key>location</key> <string>GPU</string> <key>name</key> <string>gpu-sensor</string> <key>polling-period</key> <data> AAAAAQAAAAA= </data> <key>reg</key> <data> AAAAAg== </data> <key>sample-period</key> <data> AAAAAACYmAA= </data> <key>sensor-id</key> <data> AAAABg== </data> <key>version</key> <data> AAAAAg== </data> <key>zone</key> <data> AAAAAg== </data> </dict> </array </dict>  
      Et voici donc l'Info.plist de FakeSMC.kext dans son intégrité, vous pouvez jeter un oeil, histoire de voir à quoi cela ressemble :
       
      FakeSMC_Info.plist.zip
       
      Et pour les moins casse-têtes, voici FakeSMC.kext modifié que j'utilise pour charger les 2 kexts :
       
      FakeSMC.kext.zip
       
       
      Voilà, avec ceci, vous n'aurez plus besoin de savoir si oui ou non les kexts sont dans le kernelcache.
       
       
      Crédits attribués à :
       
      netkas  pour son incontournable QE_CI Exotic patch (même s'il n'importe plus son support)
       
      Slice  & co. pour leur bébé nommé Clover
       
      dmazar  pour son astuce avec FakeSMC.kext   (pour plus d'info, voir ici)
       
      duffs (rarement ici, plus sur le site de netkas) pour son astuce de comment patcher la partie binaire avec Clover, ce fût lors de la sortie de OS X Mavericks DP1
       
      nyolc8  pour le support de QE_CI Exotic patch pour Mavericks
       
      fantomas1  pour ......... pour ... quoi déjà ? Ah ben non ... non ... pour rien ...
    • By fantomas1
      hi people  
       
      you can use this thread to link / talk about of the future Nvidia Web Driver updates for El Capitan
       
      10.11.6
      Nvidia Web Driver - 346.03.15f16 --> build 15G22010 (thanks to BreBo)  New!
      Nvidia Web Driver - 346.03.15f15 --> build 15G21013 (thanks to BreBo) 
      Nvidia Web Driver - 346.03.15f14 --> build 15G20015 (thanks to DMCrimson)
      Nvidia Web Driver - 346.03.15f13 --> build 15G20015 (thanks to Louvier)
      Nvidia Web Driver - 346.03.15f12 --> build 15G19009 (thanks to WeBeRiO)
      Nvidia Web Driver - 346.03.15f11 --> build 15G18013 (thanks to BreBo)
      Nvidia Web Driver - 346.03.15f10 --> build 15G17023 (thanks to Badruzeus)
      Nvidia Web Driver - 346.03.15f09 --> build 15G1611 (thanks to Badruzeus)
      Nvidia Web Driver - 346.03.15f08 --> build 15G1510 (thanks to Badruzeus)
      Nvidia Web Driver - 346.03.15f07 --> build 15G1421 (thanks to bb1045)
      Nvidia Web Driver - 346.03.15f06 --> build 15G1217 (thanks to bb1045)
      Nvidia Web Driver - 346.03.15f05 --> build 15G1212 (thanks to WeBeRiO)
      Nvidia Web Driver - 346.03.15f04 --> build 15G1108 (see this post)
      Nvidia Web Driver - 346.03.15f03 --> build 15G1004 (thanks to BreBo)
      Nvidia Web Driver - 346.03.15f02 --> build 15G31 (thanks to Moviemakergr)
      Nvidia Web Driver - 346.03.15f01 --> build 15G31 (thanks to WeBeRiO)
      [uPDATE_3]Nvidia Web Driver - 346.03.15b01 --> build 15G24b (thanks to DMCrimson)
       
      10.11.5
      Nvidia Web Driver - 346.03.10f02 --> build 15F34 (thanks to marcozardi)
      Nvidia Web Driver - 346.03.10f01 --> build 15F34 (thanks to WeBeRiO)
      [uPDATE_2] Nvidia Web Driver - 346.03.10b01 --> build 15F31a (see this post)
       
      10.11.4
      Nvidia Web Driver - 346.03.06f01 --> build 15E65 (see this post)
      Nvidia Web Driver - 346.03.06b01 --> build 15E (see this post)
       
      10.11.3
      Nvidia Web Driver - 346.03.05f02 --> second release for build 15D21 (thanks to Fljagd)
      Nvidia Web Driver - 346.03.05f01  --> build 15D21 (see this post)
      Nvidia Web Driver - 346.03.05b02 --> build 15D (see this post)
       
      10.11.2
      Nvidia Web Driver - 346.03.04f02 --> second public release (see this post)
      Nvidia Web Driver - 346.03.04f01 --> build 15C50 (see this post)  
      Nvidia Web Driver - 346.03.04b02 --> build 15C48a (see this post) 
      Nvidia Web Driver - 346.03.04b01 --> build 15C47a (see this post)
       
      10.11.1
      Nvidia Web Driver - 346.03.03f02 --> second public release (see this post) 
      Nvidia Web Driver - 346.03.03f01 --> build 15B42 (thanks to jperkins909)
       
      10.11.0
      Nvidia Web Driver - 346.03.02f02 --> build 15A284 (thanks to MTWomg)
      Nvidia Web Driver - 346.03.02f01 --> build 15A284 (see this post)
       
      DP
      Nvidia Web Driver - 346.03.01b07 --> GM/DB/PB6/DB7/PB5 (thanks to BreBo) 
      Nvidia Web Driver - 346.03.01b06 --> build 15A (thanks to MTWomg) 
    • By Slice
      Now I want to add vector graphics support in Clover. See rev 4560 and later.
      It is not working yet but designers may begin to create Vector Themes.
      It supposed to consist of SVG elements and has design size. It will be rendered to any screen size scaled from design size.
       
      What application in macOS can create SVG graphics?
      Inkscape is not working in macOS 10.11+. Pity.
      LibreOffice Draw works with SVG but buggy.
      Boxy SVG cost 10$ but looks good enough. It creates the best in simplicity files and have more then enough features.
      Illustrator is good but expensive.
       
      How to improve SVG file?
      Clover has restricted support for SVG. It is your job to make compatible file and as small as possible to speedup rendering.
      Some helps:
      Help:Inkscape – From invalid to valid SVG Inkscape files
      From invalid to valid SVG Adobe Illustrator files
      From invalid to valid SVG files of other editors: BKchem, ChemDraw and CorelDRAW
      Help:Illustrator – Assistance with creating and saving SVG images in Adobe Illustrator that will pass W3C validation
      User:Quibik/Cleaning up SVG files manually
      Later I will write own instructions specific to Clover abilities.
       
      How to create SVG fonts?
      You can google to find ready-to-use SVG fonts.  I found some problems with too beaty fonts: slow rendering and overflow crash. Be careful.
      You can get ttf or otf fonts and convert them into svg by using online WEB services. Not a problem to google.
      But then I want to find a way to simplify the font to reduce a size and speedup rendering.
      You can create own font by FontForge It is opensource and available for Windows, Mac and GNU+Linux. It creates otf font which you can convert to svg font.
       
       
    • By KGP-iMacPro
      Up and running macOS Mojave 10.14 DP2 (18A314h) on iMac Pro Skylake-X/X299 Hackintosh!
       

       

       

       
      Abstract and Introduction: 

      This originating post constitutes a new macOS 10.14 Mojave Desktop Guide for Skylake-X/X299, which certainly will grow along the 10.14 Betas not only thanks to your estimated feedback and contributions. It is the logical continuation of my successful iMac Pro Skylake-X/X299 Build and Desktop Guide published for macOS High Sierra 10.13. To avoid jumping back and forth, I will make this guide as consistent as the former, which however implies also some redundancy.    
       
      As everybody already might now, my Skylake-X/X299 Desktop Guide bases on the ASUS Prime X299 Deluxe. However, also other X299 ASUS mainboard models or X299 mainboards of other brands might be compatible after likely considering and implementing few mandatory modifications. The same states for guide compatibility with all Skylake-X/299 CPUs different form the i9-7980XE 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 Overview Details about the build configuration that states the baseline of this guide.   B.) Mainboard BIOS B1.) ASUS BIOS Firmware Patching B2.) ASUS BIOS Configuration B3.) Gigabyte BIOS Configuration   C.) Important General Note/Advice and Error Prevention Hardware and System Configuration recommendations. Make sure you've read all of this before complaining that something does not work.   D.) iMac Pro macOS 10.14 Mojave System Setup This chapter includes a general guideline how to perform the initial setup of your iMac Pro with macOS Mojave 10.14 DP2 (18A314h). D.1) iMac Pro EFI-Folder Preparation D.2) iMac Pro macOS Mojave 10.14 DP2 (18A314h) Installer Package Creation D.3) iMac Pro macOS Mojave 10.14 DP2 (18A314h) USB Flash Drive Installer Creation D.4) iMac Pro macOS Mojave 10.14 DP2 (18A314h) Clean Install on Skylake-X/X299 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 D.6) iMac Pro macOS 10.14 Mojave Update Procedure   E.) Post Installation Process E.1) HWP (Intel SpeedShift Technology) CPU Power Management Configuration E.2) Graphics Configuration General ATI and Nvidia GPU advices including a detailed guideline for Nvidia Web Driver Installation and Black Screen Prevention E.3) Audio Configuration Use only one of the following, where E.3.1 is recommended by the author. E.3.1.) AppleALC Audio Implementation E.3.2) VoodooHDA Audio Implementation E.3.3) cloverALC Audio Implementation E.4) USB Configuration including some initial benchmarks E.5) ASUS Prime X299 Deluxe Thunderbolt EX3 PCIe Add-On Implementation E.6) NVMe compatibility E.7.) SSD/NVMe TRIM Support Extend the life of your SSD and maintained its normal speed E.8) Gbit and 10-Gbit Ethernet Implementations E.8.1) ASUS Prime X299 Deluxe 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 Prime X299 Deluxe PCI Device Implementation E.9.1) ACPI DSDT Replacement Implementation E.9.2) SSDT-X299-iMacPro.aml PCI Implementation E.9.2.1) - HDEF - onboard PCI Audio Controller PCI Implementation E.9.2.2) - GFX0, HDAU - Nvidia Graphics Card and HDMI/DP Audio PCI implementation E.9.2.3) - PMCR - onboard Power Management Controller (PMC) PCI Implementation E.9.2.4) - USBX - fixing XHCI USB Power errors during Boot E.9.2.5) - XHCI - onboard Extended Host Controller Interface (XHCI) PCI Implementation E.9.2.6) - XHC2,3,4 - ASMedia ASM3142 USB 3.1 Controller PCI Implementation E.9.2.7) - ANS1, ANS2 - Apple NVMe Controller PCI Implementation E.9.2.8) - SAT1 - Intel AHCI SATA Controller PCI Implementation E.9.2.9) XGBE - 10GBit NIC Implementation E.9.2.10) - ETH0/ETH1 - onboard LAN 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) - DTGP Method E.9.2.13) - Debugging Sleep Issues E.9.3)  SSDT-X299-TB3-iMacPro-KGP.aml PCI Implementation E.10) iMac Pro Boot Splash Screen Cosmetics E.11) iMac Pro Desktop Background cosmetics E.12) iStatMenus Hardware Monitoring   F.) Benchmarking F.1) Sylake-X Intel I9-7980XE CPU Benchmarking F.2) Gigabyte AORUS GTX 1080 Ti Waterforce EB 11GB Extreme Edition Benchmarking   G.) Summary and Conclusion  
      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      A.)  Hardware Overview
       
      Mainboard: Asus Prime X299 Deluxe CPU: i9-7980XE (18 core, 4.4Ghz)  RAM Memory: Tridentz DDR-4 3200 Mhz 128GB (8x16GB) Kit (F4-3200C14Q2-128GTZSW)  GPU: Gigabyte Aorus GTX 1080 Ti Waterforce WB Extreme Edition 11GB  System Disks: EVO 960 NVMe M.2 1TB (system disk macOS High Sierra 10.13.3) [450€]; EVO 960 NVMe M.2 1TB (system disk macOS Sierra 10.12.6 Sierra)  Power Supply: Corsair AX1500i  Monitor: LG 38UC99-W 38" curved 21:9 Ultra Wide QHD+ IPS Display (3840 pix x 1600 pix)  WebCam: Logitech C930e  Mouse: Apple Magic Mouse 2  Keyboard: Apple Magic Keyboard Wireless Bluetooth + Wifi: PC/HACKINTOSH - APPLE BROADCOM BCM94360CD - 802.11 A/B/G/N/AC + BLUETOOTH 4.0  Internal USB2.0 HUB: NZXT AC-IUSBH-M1T  Case: Thermaltake Core X71 Tempered Glass Edition Full Tower Chassis  
      10Gbit Ethernet components: - 1x ASUS XG-C100C AQC107 PCIe x4 10GBit LAN Adapter (for testing purposes) - 1x Intel X540-T1 single port 10GBit LAN PCIe Adapter (for testing purposes, now installed in my X99 rig) - 1x Small-Tree P2EI0G-2T 2-Port 10GBit LAN PCIe Adapter (now default configuration) - 1x NetGear ProSave XS508M 8-port 10GBit switch - 1x QNAP TS-431X2 Quad-core 4-Bay NAS tower with Built-in 10GbE SFP+ Port and 4x 12 TB Seagate IronWolf in RAID 0 configuration.   Let me express once more my gratitude to [USER=159779]@gxsolace[/USER] at this place for providing me with 1x Intel X540-T1, 1x Small-tree P2EI0G-2T and 4x 12 TB Seagate IronWolf hardware.   CPU/GPU Cooling: Water Cooling main components: - 1x EK-FB ASUS Prime X299 RGB Monoblock - Nickel - 1x EK-CoolStream PE 360 (Triple, 39 mm, Roof)  - 1x EK-CoolStream Ce 280 (Dual, 45mm, Front)  - 2x EK-CoolStream XE 360 (Triple, 60 mm, Cellar) - 1x XSPC Twin D5 Dual Bay Reservoir/Pump Combo - 15x Thermaltake Riing 12 High Static Pressure LED Radiator Fan (120mm) - 5x Thermaltake Riing 14 High Static Pressure LED Radiator Fan (140mm) - 3x Phantek PMW Fan Hub (up to 12 fans or 30W power consumption) - 1x Alphacool Eisflügel Flow Indicator Black G1/4 IG  - 1x Phobya Temperatur Sensor G1/4 + C/F Display   
      Most of the components purchased at Amazon.de, Caseking.de, Mindfactory.de, Alernate.de
       
       
      B.) Mainboard BIOS
        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 was usually read only for ages.  When the kernel tried to write to this locked register, it caused a kernel panic. This panic could happen very early in the boot process, with the result that the system freezes or reboots during the boot process. We could 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.   Thanks to recent modifications in CodeRush's Longsoft UEFIPatch distributions and thanks to three sophisticated MSR 0xE2 Register patches provided by @interferenc (partly former work of CodeRush, Pike Alpha and Adrian_dsl), we were able to successfully patch any ASUS X299 mainboard BIOS firmware distribution and unlock the MSR 0xE2 register. The patched ASUS mainboard BIOS firmware finally has been uploaded to the specific ASUS X299 mainboard by means of the ASUS EZ BIOS Flashback Procedure. This made the "xcpm_core_scope_msrs © Pike R. Alpha" KernelToPatch entry obsolete and allowed full native read/write MSR 0xE2 register access by the OSX kernel.   Within ASUS Prime X299 Deluxe BIOS firmware 1301 and 1401, ASUS now allows upon my user request for the first time to manually unlock the MSR 0xE2 register within the most recent BIOS settings. This makes the ASUS BIOS firmware patching obsolete. MSI and ASRock X299 mainboards allowed  the manual unlock of the MSR 0xE2 BIOS Register right from the beginning and the MSR 0xE2 BIOS Register of all Gigabyte mainboards is anyway unlocked by factory default. However, yet we witness some TSC desynchronisation of the Skylake-X threads at boot and wake from S3. Until further microcode updates are performed by the mainboard manufacturers, we therefore have to use  the TSCAdjustRest.kext provided by @inteferenc (see error prevention C.4 of this guide) to circumvent this TSC desynchronisation issue.    By this we achieve fully native HWP (Intel SpeedShift Technology) CPU Power Management for all Skylake-X processors on all X299 mainboards with unlocked MSR 0xE2 BIOS Register, resulting in absolutely brilliant and top-end CPU performance (see Section E.1).   Before summarising all necessary ASUS and Gigabyte BIOS settings,  let me provide X299D.CAP, the most recent ASUS Prime X299 Deluxe BIOS Firmware 1401 with an iMacPro Splash Screen Image (see Section E.10), which can be flashed by means of the well known ASUS EZ BIOS Flashback procedure.      B2.) ASUS BIOS Configuration   After Updating System time and System Date, enable X.M.P for your DDR4 modules. Don't forget to enable the EZ XMP Switch previously to this step on your ASUS Mainboard! Subsequently switch form the easy to the advanced ASUS BIOS Setup mode by pressing F7.   I use all optimized BIOS settings (OoB, no OC yet) despite a few changes listed in detail below:   1.) /AI Tweaker/ a.) ASUS MultiCore Enhancement: Auto  b.) AVX Instruction Core Ratio Negative Offset: "3"  c.) AVX-512 Instruction Core Ratio Negative Offset: "2"  d.) CPU Core Ratio: Sync All Cores e.) CPU SVID Support: Enabled  f.) DRAM Frequency: DDR4-3200MHz (in my particular case)   2.) /Advanced/CPU Configuration/ a.) Hyper Threading [ALL]: Enabled b.) MSR Lock Control: Disabled   3.) /Advanced/CPU Configuration/CPU Power Management Configuration/ a.) Enhanced Intel Speed Step Technology (EIST): Enabled b.) Autonomous Core C-States: Enabled c.) Enhanced Halt State (C1E): Enabled d.) CPU C6 report: Enabled e.) Package C-State: C6(non retention) state f.) Intel SpeedShift Technology: Enabled g.) MFC Mode Override: OS Native   4.) /Advanced/Platform Misc Configuration/   a.) PCI Express Native Power Management: Disabled b.) PCH DMI ASPM: Disabled d.) ASPM: Disabled e.) DMI Link ASPM Control: Disabled f.)  PEG - ASMP: Disabled   5.) /Advanced/System Agent Configuration/ a.) Intel VT for Directed I/O (VT-d): Disabled/Enabled   6.) /Boot/ a.) Fast Boot: Disabled b.) Above 4G Decoding: Off c.) Set your specific Boot Option Priorities   7.) /Boot/Boot Configuration a.) Boot Logo Display: Auto  b.) Boot up NumLock State: Disabled c.) Setup Mode: Advanced   8.) /Boot/Compatibility Support Module/ a.) Launch CSM: Disabled   9.) /Boot/Secure Boot/ a.) OS Type: Other OS   With F7 and F10 you can save the modified BIOS settings.   Note the important additional comments to the above BIOS settings provided in Section B.2) of my iMac Pro Syklake-X/X299 macOS 10.13 High Sierra Build and Desktop Guide.    B.3) - Gigabyte BIOS Configuration   Please find below the BIOS settings for the Gigabyte Designare EX kindly provided by @jyavenard and @DSM2.   1.) /M.I.T/Advanced Frequency Settings/ a.) Extreme Memory Profile: (X.M.P): Profile1   2.) /M.I.T/Advanced Frequency Settings/Advanced CPU Core Settings   a.) Active Cores Control: Auto b.) Hyper-Threading Technology: Enabled c.) Intel Turbo Boost Max Technology 3.0 : Enabled d.)  Intel Speed Shift Technology : Enabled e.) Enhanced Multi-Core Performance: Enabled/Disabled  f.) CPU Enhanced Halt (C1E): Enabled g.) C6/C7 State Support: Enabled h.) Package C State limit: C6 i.) CPU EIST Function: Enabled j.)  Energy Efficient Turbo : Disabled   3.) /M.I.T/Advanced Memory Settings/ a.) Extreme Memory Profile (X.M.P): Profile1   4.) /BIOS/ a.) Boot Numlock State: Disabled/Enabled  b.) Security option: Setup c.) Full Screen Logo Show: Enabled d.) Fast Boot: Disabled e.) CSM Support: Disabled   5.) /BIOS/Secure Boot/ a.) Secure Boot Enable: Disabled   6.) /Peripherals/USB Configuration/ a.) XHCI Hand-off: Enabled   7.) /Peripheral/Thunderbolt Configuration/  a.) Security Level : SL0 - No Security   8.) /Chipset/ a.) VT-d: Disabled/Enabled   9.) /Save& Exit/ a.) Save & Exit  
      C.) Important General Note/Advice and Error Prevention
       
      Please note the following important General Note / Advice and Error Prevention, when implementing macOS Mojave on your Skylake-X/X299 System.
       
      1.) The /EFI/Clover/drivers64UEFI/-directory of EFI-X299-10.14-DP2-Release-iMacPro1,1-190618 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:
      sudo rm -rf /etc/rc.boot.d sudo rm -rf /etc/rc.shutdown.d  
      Also the "slide" boot flag needs to be disabled.
       
      2.a.) Most ATI GPUs, e.g. RX Vega 64, RX Vega Frontier, RX 580, RX 560 are natively implemented.  However, it is recommended not to use RX 560 and RX 580 GPUs due to the lacking iGPU implementation when using SMBIOS iMacPro1,1. Remaining HDMI/DP port errors, hot plug errors and flaws with multi-monitor or 5K display configurations when using ATI Vega GPUs can be fixed by means of VegaGraphicsFixup.kext, kindly provided by @jyavenard. Important comment for all Vega users with 4K monitors though:  when connecting e.g. the Vega Frontier 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). @DSM2 reported similar issues with his true 4K display and with both the ASUS Prime X299 Deluxe and the Gigabyte Designare EX. Thus 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 Prime X299 Deluxe firmware. It is definitely a Vega firmware problem in combination with 4K displays, as the DP 4K boot screen resolution issue is totally absent with my 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 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. Although, in the latter case the monitor frequency seems to be limited to 30 Hz, compared with the 60 Hz or 75 Hz under macOS Mojave obtained within a DP connection.  
       
      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. Over the last weeks, I was actively requesting Web Driver development for macOS 10.14 Betas from Nvidia. I really hope that Nvidia will not leave us again without Web Driver support until the official release of Mojave by September 2018. In the meanwhile, we have to live with e.g. patched Web Driver xxx.35.106 for macOS High Sierra 10.13.5 after a simple patching procedure detailed in Section E.2), although the latter Web Driver is not really suited for 10.14 and just works with strong limitations. 
       
      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.       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  export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" && buildclover to the Build_Clover.command script,     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 Skylake-X thread TSC desynchronisation errors during boot and wake from S3 with unpatched X299 mainboards, likely induced by yet erroneous Skylake-X 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.    To access TSCAdjustRest.kext, download primarily its source distribution from Github with the following terminal command: git clone https://github.com/interferenc/TSCAdjustReset Subsequently copy the TSCAdjustRest source distribution to your Desktop using the following terminal command:
      mv /TSCAdjustReset ~/Desktop Now change in the terminal to the TSCAdjustReset source distribution on your Desktop with the following terminal command:
      cd ~/Desktop/TSCAdjustReset/ Now compile the source distribution with Xcode by using the following terminal command:
      xcodebuild After successful compilation, you will find the TSCAdjustRest.kext in ~/Desktop/TSCAdjustReset/build/Release/
        Please note that the TSCAdjustRest.kext by default is configured for a 8-core CPU (16 threads) like the i7-7820X. To adopt the kext for Skylake-X 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 8 core i7-7820X, the IOCPUNumber is 15 (16 threads - 1).   <key>IOCPUNumber</key> <integer>15</integer>   By following this methodology, the correct IOCPUNumber for the 10-core i9-7900X would be 19 (20 threads -1)   <key>IOCPUNumber</key> <integer>19</integer>   and the IOCPUNumber for the 18-core i9-7980XE would result in 35 (36 threads -1).   <key>IOCPUNumber</key> <integer>35</integer>   e.) After adopting the IOCPUNumber for your particular Skylake-X processor, save the info.plist file and copy the modified TSCAdjustRest.kext to the /EFI/CLOVER/kexts/Other/ - directories of both USB Flash Drive Installer and System Disk and you are save and all done!  
      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: diskutil list In the output which you can read by scrolling back, you will find all internal disks named /dev/disk0, /dev/disk1, depending upon how many physical disks are present in your system.
        Make a note of the disk identifier for the disk you intend to format (you can eliminate risk by removing all disks but the intended target).   In the Terminal app, type: diskutil unmount /dev/diskX where diskX is a place holder for the disk to be unmounted.
        Now delete the APFS container of diskX: diskutil apfs deleteContainer /dev/diskX Subsequently, you can erase the entire disk with HFS+ and a GPT by typing the following terminal command:
      diskutil partitionDisk /dev/diskX 1 GPT jhfs+ "iMacPro" R where /dev/diskX is again a place holder for disk to be erased and iMacPro would be the label for the single partition created. The remaining 1 GPT jhfs+ and R arguments tell diskutil to create a single partition, within a GUID partition table, formatted as Journaled HFS+ and using the entire disk, respectively.
        Alternatively one can also use the following terminal command: diskutil partitionDisk /dev/diskX GPT JHFS+ iMacPro 0b where /dev/diskX is again a place holder for disk to be erased and iMacPro is again the label for the disk partition created. The GPT HFFS+ and 0b arguments again tell diskutil to create a single partition, within a GUID partition table, formatted as Journaled HFS+ and covering the entire disk, respectively.
        In the Terminal app, type now: diskutil mount /dev/diskX where diskX is again a place holder for the disk to be remounted.
        Note, that by means of the "diskutil approach", brand new unformatted or not compatibly formatted system NVMe, SSD and HDD system drives can be also directly formatted within the macOS Clean Install procedure. When presented with the initial install screen where you are presented options to Restore From Backup or Install, select Terminal from the Utilities menu bar item;   The "diskutil" terminal approach is also able to convert a HFS+ macOS 10.14 Mojave System Disk to APFS. To do so enter the following terminal command: diskutil apfs convert /dev/diskX where diskX is again a place holder for the HFS+ disk to be converted to APFS. The same procedure again can also be directly performed by means of Apple's Disk Utility.
        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.) All ASUS Prime X299 Deluxe users, who enabled the second LAN controller in the ASUS Prime X299 Deluxe BIOS, are advised to download, unzip and copy the SmallTree-Intel-211-AT-PCIe-GBE.kext  to the EFI-Folders of both USB Flash Drive Installer and 10.14 System Disk, or to disable the second LAN port in the BIOS during the MacOS Installation.
       
      7.) All Gigabite mainboard users need to add the "npci=0x2000" boot flag to their config.plist by checking the latter in Section "Boot" of Clover Configurator under "Arguments".
       
      8.) For the proper function of Lilu.kext and Lilu plugins like AppleALC.kext, NvidiaGraphicsFixup.kext, Whatevergreen.kext etc. one also needs to add boot flag "-lilubetaall" to the config.plist during the 10.14 Mojave Betas.
       
       
      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 DP2 (18A314h). This also includes the EFI-Folder Preparation (D.1), the macOS Mojave 10.14 DP2 (18A314h) Installer Package creation (D.2), the macOS Mojave 10.14 DP2 (18A314h) USB Flash Drive Installer Creation (D.3) and the macOS Mojave 10.14 DP2 (18A314h) Clean Install. One also finds instructions for a direct iMac Pro conversion of a functional Skylake-X/X299 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 EFI-X299-10.14-DP2-Release-iMacPro1,1-190618  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 EFI-X299-10.14-DP2-Release-iMacPro1,1-190618.   Press several times the "Generate New" Button next to serial number text field.   Open a terminal, enter repeatedly the command "uuidgen", and copy the output value to the SMUUID field in the "SMBIOS" Section of the Clover Configurator.   Users of mainboards with locked MSR Register (disabled MSR OSX Kernel write access) have to enable the xcpm_pkg_scope_msrs © Pike R. Alpha Kernel patch in their config.plist under "KernelToPatch" in Section "Kernel and Kext Patches" of Clover Configurator.   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.   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 Pro macOS Mojave 10.14 DP2 (18A314h) Installer Package Creation    To derive the macOS Mojave 10.14 DP2 (18A314h) Full-Package Installer just download and execute macOSDeveloperBetaAccessUtility.dmg and complete the subsequent steps you are asked for.    D.3) iMac Pro macOS Mojave 10.14 DP2 (18A314h) USB Flash Drive Installer Creation    Follow the individual steps detailed below to successfully create a bootable iMac Pro macOS Mojave 10.14 DP2 (18A314h) 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 DP2 (18A314h) Installer Package in your /Application Folder,  connect your USB Flash Drive (named USB) and run the following terminal command: sudo /Applications/Install\ macOS\ 10.14\ Beta.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --nointeraction Alternatively, one can create the iMac Pro macOS USB Flash Drive Installer also by means of the Install Disk Creator.app.
        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 yourmacOS USB Flash Drive Installer.   You now have a fully functional and bootable macOS Mojave 10.14 DP2 (18A314h) USB Flash Drive Installer.     D.4) iMac Pro macOS Mojave 10.14 DP2 (18A314h) Clean Install on Skylake-X/X299   Follow the individual steps detailed below to successfully setup macOS Mojave 10.14 DP2 (18A314h)  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 DP2 (18A314h), 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 DP2 (18A314h) 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 DP2 (18A314h).    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 ("Install macOS 10.14 Beta.app") to your /Applications folder.   4.) Double click on the "Install macOS Mojave Beta.app" in the /Applications Folder to start the macOS Mojave 10.14 DP2 (18A314h) 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 High Sierra" 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 macOS Mojave 10.14 DP2 (18A314h) build.   Proceed with Section D.6) - iMac Pro macOS High Sierra Build Updates (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 Skylake-X/X299 guide to setup a 10.13 iMac Pro 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. This way you also will be able to perform any future update of macOS 10.14 Mojave.   Let me conclude with a general recommendation:  In case of macOS beta builds one should clone the current macOS System Drive with Carbon Copy Cloner (CCC) to a test drive and update to macOS Betas on the latter.   E.) Post Installation Process   E.1) HWP (Intel SpeedShift Technology) CPU Power Management Configuration   On Skylake-X/X299 Systems with unlocked mainboard BIOS MSR 0xE2 BIOS register and SMBIOS iMacPro1,1 we gain fully native HWP (IntelSpeedShift) Power Management after disabling the last remaining XCPM KernelToPatch entry "xcpm_core_scope_msrs" in the config.plist under Section "Kernel and Kext Patches" of Clover Configurator, which by default is still implemented but disabled in the config.plist of the distributed EFI-Folder EFI-X299-10.14-DP2-Release-iMacPro1,1-190618.     Users with locked mainboard BIOS MSR 0xE2 register, still have to use the "xcpm_core_scope_msrs" XCPM KernelToPatch entry to successfully boot their systems. Otherwise the OSX Kernel will write to that BIOS register and cause KP at boot!     HWP is a way for the processor itself to manage the power consumption, with minor input from OSX on what it thinks it needs. In contrary, XCPM is the OSX power management part. It directly controls older hardware like Broadwell-E/EP or Haswell-E/EP and enables HWP on newer hardware like Skylake-X. It also sets some HWP variables, like the desired frequency at the maximum.   XCPM is enabled by default.   For it's complete configuration, XCPM still requires the CPU "plugin-type" injection to properly load the required XCPM frequency vectors from the iMacPro.plist, which can be directly achieved within the config.plist by checking "PluginType" in Section "ACPI" of Clover Configurator.     How to verify a working xcpm configuration?   a.) Typically the command "sysctl machdep.xcpm.mode" reveals 1, which means that XCPM is active.   b.) Verify that in the IORegistryExplorer you have now under CP00@0 the following entry: Property:         Type:         Value: plugin-type       Number        0x1 c.) Also verify with the terminal command:
      kextstat|grep -y x86plat that the "X86PlatformPlugin.kext" is now loaded. If the command returns something like
      112    1 0xffffff7f822bc000 0x17000    0x17000    com.apple.driver.X86PlatformPlugin (1.0.0) FD88AF70-3E2C-3935-99E4-C48669EC274B <111 19 18 13 11 7 6 5 4 3 1> 146    1 0xffffff7f822d3000 0x7000     0x7000     com.apple.driver.X86PlatformShim (1.0.0) DCEA94A4-3547-3129-A888-E9D5C77B275E <112 111 13 7 4 3> d.) Verify with the following terminal command:
      kextstat|grep -y appleintelcpu that you got rid of the Apple Intel CPU power management. If the result is empty you are fine.
        e.)  Verify with the following terminal command: sysctl -n machdep.xcpm.vectors_loaded_count If this command returns "1", the XCPM FrequencyVectors are properly loaded and you are all set.
        E.2) Graphics Configuration   Most ATI GPUs, e.g. RX Vega 64, RX Vega Frontier, RX 580, RX 560 are natively implemented.  However, it is recommended not to use RX 560 and RX 580 GPUs due to the lacking iGPU implementation when using SMBIOS iMacPro1,1. Remaining HDMI/DP port errors, hot plug errors and flaws with multi-monitor or 5K display configurations when using ATI Vega GPUs can be fixed by means of VegaGraphicsFixup.kext, kindly provided by @jyavenard. Important comment for all Vega users with 4K monitors though:  when connecting e.g. the Vega Frontier 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). @DSM2 reported similar issues with his true 4K display and with both the ASUS Prime X299 Deluxe and the Gigabyte Designare EX. Thus 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 Prime X299 Deluxe firmware. It is definitely a Vega firmware problem in combination with 4K displays, as the DP 4K boot screen resolution issue is totally absent with my 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 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. Although, in the latter case the monitor frequency seems to be limited to 30 Hz, compared with the 60 Hz or 75 Hz under macOS Mojave obtained within a DP connection.  
       
      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. Over the last weeks, I was actively requesting Web Driver development for macOS 10.14 Betas from Nvidia. I really hope that Nvidia will not leave us again without Web Driver support until the official release of Mojave by September 2018. In the meanwhile, we have to live with e.g. patched Web Driver xxx.35.106 for macOS High Sierra 10.13.5 after a simple patching procedure detailed below, although the latter Web Driver is not really suited for 10.14 and just works with strong limitations. 
        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 e.g. the patched Nvidia Web Driver xxx.35.106 under macOS Mojave 10.14 DP2 (18A314h)   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 10.13 System Disk. However, the most actual releases of NvidiaGraphicsFixup.kext v.1.2.7 and Lilu.kext v1.2.3 apparently 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 "18A314h", the corresponding build number of MacOS Mojave 10.14 DP2.   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: sudo chmod -R 755 /Library/Extensions/NVDAStartupWeb.kext sudo chown -R root:wheel /Library/Extensions/NVDAStartupWeb.kext sudo touch /System/Library/Extensions && sudo kextcache -u / sudo touch /Library/Extensions && sudo kextcache -u /  
      vii.) Reboot.
        viii.) The 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 will have a fully functional patched Web Driver for MacOS Mojave 10.14 DP2 (18A314h).   E.3) Audio Configuration   Note that opposite to my previous EFI-Folder distributions, EFI-X299-10.14-DP2-Release-iMacPro1,1-190618 does not contain any default audio configuration. You have to implement the audio approach of your choice during the Post Installation process! Please select between one out of three possible audio implementations detailed below. To avoid the loss of analogue onboard audio (S1220A in case of the ASUS Prime X299 Deluxe) on Wake from Sleep, please download, unzip and copy the latest CodecCommander.kext distribution of [USER=429483]@RehabMan[/USER] from bitbucket.org to the /EFI/Clover/kexts/Other directory in the EFI-Folder of your System Disk: https://bitbucket.org/RehabMan/os-x-eapd-codec-commander/downloads/.   E.3.1.) AppleALC Audio Implementation   The actual AppleALC audio implementation traces back to the extensive efforts and brilliant work of @vit9696  and @apfelnico. This new AppleALC audio approach bases on AppleALC.kext v1.2.7, which further requires the Lilu.kext v1.2.3 in the /EFI/CLOVER/kexts/Other/ directory of your System Disk.   Provided that you use the EFI-Folder contained in EFI-X299-10.14-DP2-Release-iMacPro1,1-190618, you need to open the config.plist in the /EFI/CLOVER/ directory of your System Disk with the Clover Configurator and add the CAVS -> HDEF ACPI replacement patch in Clover Configurator Section "ACPI" under "DSDT Patches".   Comment:          Find*[Hex]     Replace [Hex] CAVS -> HDEF      43415653       48444546 When implementing the SSDT in Section 9.2), we will perform the  CAVS -> HDEF ACPI replacement directly within the SSDT. We then have to remove again the CAVS -> HDEF ACPI replacement from the config.plist!
        Note that opposite to the alternative VoodooHDA and CLoverALC approach detailed below, the AppleALC audio implementation requires an Audio ID in injection of "7" instead of "1". Implement the latter Audio ID in the config.plist of your System Disk under "Audio" and "Injection" in the Section "Devices" of the Clover Configurator.   The correct HDAU HDMI/DP digital Audio PCI implementation will be detailed in Section E.9) in line with the HDEF and GPU PCI device implementation.   To remove the AppleALC Audio Approach Implementation perform the following steps:   1.) Remove AppleALC.kext v1.2.7  from the /EFI/CLOVER/kexts/Other/ directory of your System Disk.   2.) Disable in the config. plist the CAVS -> HDEF DSDT Replacement Patch in Clover Configurator Section "ACPI" under "DSDT Patches".   3.) Adopt the Audio ID Injection in your respective config.plist in Clover Configurator Section "Devices" for the alternative audio approach you intent to use.   4.) Reboot   E.3.2) VoodooHDA Audio Implementation   1.) Provided that you use the EFI-Folder contained in  EFI-X299-10.14-DP2-Release-iMacPro1,1-190618, you need to open the config.plist in the /EFI/CLOVER/ directory of your System Disk with the Clover Configurator and enable the CAVS -> HDEF ACPI Replacement Patch in Clover Configurator Section "ACPI" under "DSDT Patches". Comment                         Find*[HEX]      Replace*[HEX] Rename CAVS to HDEF      43415653        48444546 When implementing the SSDT in Section 9.2), we will perform the  CAVS -> HDEF ACPI replacement directly within the SSDT. We then have to remove again the CAVS -> HDEF ACPI replacement from the config.plist!
        2.) Download VoodooHDA.kext v2.9.0d10 to your Desktop. Mouse Right-Click on VoodooHDA.kext -> select "Show Package Contents" -> click on "Contents" -> Right-Click on "Info.plist" -> "Open With" -> "Other" -> select "TextEdit.app"   3.) a.) In the TextEdit.app select in the menu "Edit" -> "Find" -> "Find..." -> search for  "IOPCIClassMatch" and   replace <key>IOPCIClassMatch</key> <string>0x04020000&amp;0xfffe0000</string> with
      <key>IOPCIPrimaryMatch</key> <string>0x43831002</string>  
      b.) Download, unzip and run IORegistryExplorer.   Search for HDEF and write down the "IOName"-entry under e.g. PC00@0/AppleACPIPCI/HDEF@1F,3 which can slightly deviate on mainboards different from the ASUS Prime X299 Deluxe.     The HDEF-IOName on the ASUS Prime X299 Deluxe is "pci8086,a2f0"   Concert the IOName as shown below in case of the HDEF-IOName of the ASUS Prime X299 Deluxe:   "0xa2f08086"   c.) Now replace in the "Info.plist" of "VoodooHDA.kext"   "0x43831002"   by   "0xa2f08086"   and save the "Info.plist".   d.) Copy the modified "VoodooHDA.kext" to the /EFI/Clover/kexts/Other/ - directory of your System Disk.   4.) Download and copy the VoodooHDA.prefPane v1.2 attached below to ~/Library/PreferencePanes/   5.) Note that the VoodooHDA audio approach requires an Audio ID in injection of "1". The corresponding modification of the config.plist has to be implemented by means of the Clover Configurator by modifying the respective entry in Section "Devices".   6.) Reboot   To remove the VoodooHDA audio implementation, perform the following steps:   1.)  Disable in the config. plist the CAVS -> HDEF ACPI Replacement Patch in Clover Configurator Section "ACPI" under "DSDT Patches".   2.) Remove VoodooHDA.kext  from the /EFI/CLOVER/kexts/Other/ directory of your System Disk.   3.) Remove VoodooHDA.prefPane from ~/Library/PreferencePanes/   4.) Adopt the Audio ID Injection in your config.plist in Section "Devices" of the Clover Configurator for the alternative audio approach you intent to use   5.) Reboot   E.3.3) cloverALC Audio Implementation   @toleda 's cloverALC audio approach has been implemented thanks to the respective advices and help of user @Ramalama. Note that in contrary to the AppleALC and VoodooHDA approaches, the cloverALC audio approach detailed below will patch the native vanilla AppleHDA.kext in the /S/L/E directory of your System Disk! This before implementing the cloverALC audio approach, backup your native vanilla AppleHDA.kext from the /S/L/E directory on your System Disk! You will have to reinstall the native vanilla AppleHDA.kext from the /S/L/E directory on your System Disk with the appropriate permissions during a removal of the cloverALC Audio Implementation! Thus you need a backup of the latter native vanilla kext in any case!      CloverALC audio approach installation:   1.) Provided that you use the EFI-Folder contained in EFI-X299-10.14-DP2-Release-iMacPro1,1-190618 you need to open the config.plist in the /EFI/CLOVER/ directory of your System Disk with the Clover Configurator and enable the CAVS -> HDEF ACPI Replacement Patch in Clover Configurator Section "ACPI" under "DSDT Patches". Comment                  Find*[Hex]    Replace[Hex] Rename CAVS to HDEF      43415653      48444546 When implementing the SSDT in Section 9.2), we will perform the  CAVS -> HDEF ACPI replacement directly within the SSDT. We then have to remove again the CAVS -> HDEF ACPI replacement from the config.plist!   2.) Change the Audio ID Injection in the config.plist on your System Disk in Section "Devices" under "Audio" and "Inject" to "1".   3.) Add the following cloverALC related KextToPatch entries to your config.plist on your System Disk in section "Kerneland Kext Patches" of Clover Configurator in the "KextsToPatch" listing: Name*         Find*[Hex]         Replace* [Hex]    Comment AppleHDA      8a19d411           00000000          t1-10.12-AppleHDA/Realtek ALC... AppleHDA      8b19d411           2012ec10          t1-10.12-AppleHDA/RealtekALC1220 AppleHDA      786d6c2e 7a6c      7a6d6c2e 7a6c     t1-AppleHDA/Resources/xml>zml  
      4.) Download, unzip and copy the realtekALC.kext v2.8  to the /EFI/CLOVER/kexts/Other/ directory on your System Disk   5.) Download and execute audio_cloverALC-130.sh, which will patch the native vanilla AppleHDA.kext in the /S/L/Edirectory of your System Disk   6.) Reboot   To remove the cloverALC audio implementation, perform the following steps:   1.) Remove realtekALC.kext from the /EFI/CLOVER/kexts/Other/ directory on your System Disk   2.) Remove all cloverALC related KextToPatch entries from the config.plist on your System Disk  in the "Kernel andKext Patches" section of Clover Configurator.   3.) Disable in the config. plist the CAVS -> HDEF ACPI Replacement Patch in Clover Configurator Section "ACPI" under"DSDT Patches".   4.) Delete the patched AppleHDA.kext in the /S/L/E/ Directory on your System Disk   5.) Reinstall the original vanilla AppleHDA.kext with the appropriate permission in the /S/L/E/ directory on yourSystem Disk using Kext Utility   6.) Adopt the Audio ID Injection in your config.plist in Section "Devices" of the Clover Configurator for the alternative audioapproach you intent to use   7.) Reboot   E.4) USB Configuration:   Since 10.13 SU and with AppleIntelPCHPMC, Apple implements IOPCIPrimaryMatchID "a2af8068" and AppleUSBXHCISPT on the ASUS Prime X299 Deluxe. Thus, 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) ports should work at expected data transfer rates for all X299 mainboards.  All external and internal USB 3.1 (USB 3.1 Gen 2 Type-A and Type-C) ports are anyway natively implemented on different controllers than XHC.    All ASUS Prime X299 Deluxe users, not content with the current OSX XHC USB implementation,  can download, unzip and use my board-specific XHC USB Kext KGP-iMacPro-XHCI.kext in /EFI/Clover/kexts/Other/. All users of mainboards different from the ASUS Prime X299 Deluxe, can create their own board specific XHC USB kext by following my XHC USB Kext Creation guide line  in the other forum.    Note that in addition one needs to implement the XHC USB port limit patch for 10.14 DP2 in the config.plist under "KextsToPatch"  in Section "Kernel and Kext Patches" of Clover Configurator, as else not all available XHC USB ports will be implemented. Name*          Find*[Hex]             Replace* [Hex]         Comment com.apple.driver.usb.AppleUSBXHCI   83FB0F0F 83030500 00   83FB0F90 90909090 90   USB Port Limit Patch ©PMHeart Many thanks to @PMheart from InsanelyMac for providing the respective XHC USB port limit patch.
        E.5.) NVMe Compatibility   In contrary to macOS Sierra 10.12 and as already in macOS High Sierra 10.13, under macOS 10.14 Mojave, there is native support of non-4Kn NVMe SSDs, like my Samsung EVO 960 M.2 NVME. All patches applied under macOS Sierra 10.12 are therefore 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.   E.6.) SSD/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 in the EFI-folder of EFI-X299-10.14-DP2-Release-iMacPro1,1-190618 attached towards the end of this guide, contains an SSD/NVMe "TRIM Enabler" KextsToPatch entry, which can be found in the " Kernel and Kext Patches" Section of the Clover Configurator.     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 on your 10.13 System. See your Apple's System Report.   E.7) ASUS Prime X299 Deluxe Thunderbolt EX3 PCIe Add-On Implementation   For the successful implementation of the Thunderbolt EX3 PCIe Add-On Adapter, a fully working Dual Boot System with an UEFI Windows Implementation is unfortunately absolutely mandatory. You will not be able to configure your Thunderbolt EX3 PCIe Add-On 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 driveto 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 drivers and programs implemented on theASUS Prime X299 Series DVD attached to your mainboard. This will further allow you to properly adjust the desired AURA Mainboard Settings and offer many other  mainboard configuration options.   7.) Now switch of your rig and start with the installation of the Thunderbolt EX3 PCIe Add-On Adapter   a.) I recommend to install the adapter in third PCIe Slot from the bottom which is PCIEX_3     b.)  For full TB hot plug functionality skip or remove the THB_C cable between the TBEX 3 and the respective mainboard connector.   8.) Reboot into windows and install the ASUS ThunderboltEX 3 DVD accompanying your ASUS Prime X299 Deluxe mainboard.   9.) Reboot and enter the Mainboard BIOS (F2)        a.) Go to /Advanced/ Thunderbolt(TM) Configuration/ and apply the following BIOS Settings detailed below:   /Advanced/ Thunderbolt(TM) Configuration/ TBT Root por Selector                               PCIE16_3 Thunderbolt USB Support                             Enabled Thunderbolt Boot Support                            Enabled Wake From Thunderbolt(TM Devices)                   Off Thunderbolt(TM) PCIe Cache-line Size                128 GPIO3 Force Pwr                                     On Wait time in ms after applying Force Pwr            200 Skip PCI OptionRom                                  Enabled Security Level                                      SL0-No Security Reserve mem per phy slot                            32 Reserve P mem per phy slot                          32 Reserve IO per phy slot                             20 Delay before SX Exit                                300 GPIO Filter                                         Enabled Enable CLK REQ                                      Disabled Enable ASPM                                         Enabled Enable LTR                                          Disabled Extra Bus Reserved                                  65 Reserved Memory                                     386 Memory Alignment                                    26 Reserved PMemory                                    960 PMemory Alignment                                   28 Reserved I/O                                        0 Alpine Ridge XHCI WA                                Disabled  
        b.) Verify in /Boot/ that Above 4G Decoding is Off   /Boot/ Above 4G Decoding              Off  
      10.) Shut down your rig, connect the Thunderbolt Device with the Thunderbolt EX3 Adaptor and boot   11.) You are done!  Your Thunderbolt EX3 PCIe Adapter and connected devices should be now fully implemented and functional.   12.) We will add TB XHC USB and TB Hot Plug functionality by means of the SSDT-X299-TB3-iMacPro-KGP.aml described in Section E.9.3) of this guide.      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 Skylake-X/X299 systems.   E.8.1) ASUS Prime X299 Deluxe on-board Gbit Ethernet Functionality   Thanks to the SmallTree-Intel-211-AT-PCIe-GBE.kext, also the Intel I211_AT Gigabit on-board LAN controller of the ASUS Prime X299 Deluxe will be correctly implemented and fully functional, in addition to the Intel I219-V Gigabyte on-board LAN controller of the ASUS Prime X299 Deluxe implemented by means of IntelMausiEthernet.kext (already part of my EFI-Folder distributions). Thus, both ethernet ports on the ASUS Prime X299 Deluxe should now be fully operational..   Just download , unzip  and copy the SmallTree-Intel-211-AT-PCIe-GBE.kext attached below to the /EFI/Clover/kexts/Other/, reboot and you should be done.   E.8.2) 10-GBit Lan Implementations ASUS Prime X299 Deluxe on-board Gbit Ethernet Functionality   E.8.2.1) ASUS XG-C100C Aquantia AQC107 10-Gbit NIC   Starting with 10.13.2 there is native support for Aquantia based 10GBit network cards, which are implemented by means of a Apple Vanilla kext called "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.   How to successfully implement the ASUS XG-C100C AQC107 PCIe x4 10GBit Ethernet Adapter:   1.) A temporal macOS High Sierra 10.13.3 (17D2047 in case of the iMac Pro) installation is absolutely mandatory at first place. Only within the latter macOS High Sierra build, the ASUS XG-C100C will receive the proper AQC107 Apple firmware to be recognised and fully implemented by OSX. The firmware update will be performed during system boot. Several boot intents might be necessary until the firmware update finally succeeds. Only subsequently, the ASUS XG-C100C will be natively implemented in macOS High Sierra 10.13.3 and fully functional.   2.) To finally use the ASUS XG-C100C with macOS builds >10.13.4 and finally also with 10.14, one has to implement the following AppleEthernetAquantiaAqtion KextPatch provided by @Mieze:     Name*                            Find*[HEX]         Replace*[HEX]      Comment AppleEthernetAquantiaAqtion      0F84C003 0000      90909090 9090      Aquantia patch ©Mieze  
      3.) The proper XGBE ASUS XG-C100C PCI SSDT implementation is detailed in Section E.9.2)   4.) Note that after the firmware update under macOS High Sierra 10.13.3, the ASUS XG-C100C will refuse the official Windows Lan drivers provided by ASUS and will only work with Apple's customised Aquantia64v2.0.015.0 boot camp drivers attached below.   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 above link.   1.) When creating your Ubuntu USB Flash Drive, use RUFUS 3.0 and select the GPT option to obtain a Ubuntu USB boot drive, fully compatible with your UEFI BIOS implementation!   2.) To install "net-tools", enter the following terminal command sudo apt install net-tools  
        3.) To install "ethtool" enter the following terminal command: sudo apt-get install ethtool  
        4.) Within the latest Ubuntu distributions, ETH0, ETH1, etc. have been replaced by some weird "enp" port-nomenclature, thus the command "ifconfig" would reveal something like the following:     My Intel X540-T1 was assigned to enp225s0.   5.) With the command "lspci -nn -vvv | grep Ethernet" you have to use in 6.) the Vendor/Device-ID entry highlighted by the green rectangle.     6.) By running the "sudo ethtool -e enp225s0 | less" command and eyeballing the offsets, be aware that the latter can be distributed over two lines:       You have to count from left to right 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f for each pair of digits for each offset.   Thus, the commands I had to run to mod the Intel X540-T1 EEPROM were: sudo ethtool -E enp225s0 magic 0x15288086 offset 0x48e value 0x0a sudo ethtool -E enp225s0 magic 0x15288086 offset 0x48f value 0x00  
      Note that the "magic" value implemented in this command has been taken from the "lspci -nn -vvv | grep Ethernet" command output, again encircled by a green rectangle:     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   1.) Use SMB 3.0 instead of AFS for your Ethernet communication. 2.) Enable Jumbo Frames on your NAS and macOS network settings. 3.) The service order in your macOS network settings should have your 10-Gbit NIC at first position. 4.) You can turn off the SMB packet signing of the client and server in a secure network.   Incoming SMB Enter the following terminal commands: sudo -s
 echo "[default]" >> /etc/nsmb.conf 
echo "signing_required=no" >> /etc/nsmb.conf 
exit  
      Outgoing SMB:   Enter the following terminal commands: smbutil statshares -a sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server SigningRequired 0  
      E.9) ASUS Prime X299 Deluxe 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 SSDT. 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 Replacement Patches and SSDT in concordance with SMBIOS iMacPro1,1. The actual ACPI DSDT Replacements are part of the config.plist contained in EFI-X299-10.14-DP2-Release-iMacPro1,1-190618. I also further link the SSDT-X299-iMacPro.aml and SSDT-X299-TB3-iMacPro-KGP.aml further developed with @apfelnico and @nmano.   Note that the ACPI DSDT Replacements, SSDT-X299-iMacPro.aml and SSDT-X299-TB3-iMacPro-KGP.aml can be build and PCIe slot population dependend and have to be verified and likely adopted or modified for all mainboards different from the ASUS Prime X299 Deluxe and builds or PCIe slot populations different from the one that constitutes the baseline of this guide.   For the ASUS Prime X299 Deluxe I will use in the following the PCIe Slot nomenclature depicted below:     The verification and likely adaptation/modification can be performed by the help of IORegistryExplorer.   Important Note: It is strongly recommend to perform a stepwise PCI Device implementation by means of a minimalistic starter SSDT-X299-iMacPro.aml, which just contains the Definition Block and Device Implementation for one single specific device. Once this PCI device has been successfully implemented, other PCI Device definitions can be added to the SSDT-X299-iMacPro.aml. In case that subsequently the implementation of a specific PCI Device would be erroneous and fail, also all other already successfully implemented PCI devices would disappear from Section "PCI" of Apple's System report and the entire "PCI" Device implementation would fail. Thus a stepwise PCI device implementation/adaptation is highly recommended and sometimes deemed necessary!   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, SSDT-X299-iMacPro.aml and SSDT-X299-TB3-iMacPro-KGP.aml detailed below require SMBIOS iMacPro1,1.     E.9.1)  ACPI DSDT Replacement Implementation   All required ACPI DSDT Replacements are already implemented in the config.plist in the /EFI/CLOVER/ directory of the EFI-Folder contained in EFI-X299-10.14-DP2-Release-iMacPro1,1-190618 or are directly part of the SSDT-X299-iMacPro.aml and SSDT-X299-TB3-iMacPro-KGP.aml. 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 your 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.) The PC00 -> PCI0 ACPI DSDT replacement patch has the main aim to achieve a SMBIOS iMacPro1,1specific PCI implementation. Note that under SMBIOS iMacPro1,1 all other PC0x definitions remain unchanged.   Please enable now the PC0x -> PCIx ACPI DSDT replacement patch. Comment:            Find*[Hex]     Replace [Hex] PC00 -> PCI0        50433030       50434930  
      b.) OSI -> XOSI, EC0_ -> EC__ and H_EC  -> EC__ are once more ACPI DSDT replacement patches to achieveconsistency with the SMBIOS iMacPro1,1 variable naming.   i.) XOSI functionality is required as explained by @RehabMan.   The ACPI code can use the_OSI method (implemented by the ACPI host) to check which Windows version is running. Most DSDT implementations will vary the USB configuration depending on the active Windows version. When running OS X, none of the DSDT _OSI("Windows <version>") checks will return "true" as there is only response from "Darwin". This issue can be solved by implementing the "OS Check Fix" family of DSDT patches in the SSDT. By DSDT patching we can simulate a certain version of Windows although running Darwin and we can obtain a system behaviour similar to a windows version specific environment.   ii.) On the Asus X299 Prime Deluxe and most likely on all other X299 mobos we have the EC0 and H_EC controllers,which have to be renamed to 'EC' for proper USB power management.  Thus once more investigate your mainboard specific IOREG entry and enable both EC0_ -> EC__ or and H_EC  -> EC__ DSDT Replacement Patches. Comment:             Find*[Hex]      Replace [Hex] OSI -> XOSI          5f4f5349        584f5349 EC0_ -> EC__         4543305f        45435f5f H_EC  -> EC__        485f4543        45435f5f  
      c.) The HEC1 -> IMEI and IDER->MEID ACPI DSDT Replacement patches are Intel Management Engine Interface relatedand 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 ACPI DSDT Replacement patches independent from your mainboard. Comment:             Find*[Hex]       Replace [Hex] HEC1 -> IMEI         48454331         494d4549 IDER->MEID          49444552         4d454944  
      d.) The LPC0 -> LPCB ACPI DSDT Replacement Patch is AppleLPC and SMBus related and is applied for consistency withthe variable naming on a real Mac. Note that LPCB injects AppleLPC, which however is not required in the X299 environment. X299 Systems seem to have sleep problems with the SMBus properties injected. Thus, the LPCB functionality will be disabled within the SSDT-X299-iMacPro.aml.   Please enable now this ACPI DSDT replacement patch independent from your mainboard. Comment:             Find*[Hex]         Replace [Hex] LPC0 -> LPCB         4c504330           4c504342  
      e.) FPU_->MATH, TMR_->TIMR, PIC_->IPIC are all ACPI DSDT Replacement Patches for consistency with the variablenaming on a real Mac. The variables are however functionless on either our X299 boards or real Macs.   Please enable now all three ACPI DSDT Replacement Patches independent from your mainboard. Comment:             Find*[Hex]        Replace [Hex] FPU_ -> MATH         4650555f          4d415448 TMR_ -> TIMR         544d525f          54494d52 PIC_ -> IPIC         5049435f          49504943  
      f.) The SMBS._ADR -> XSBU.XADR Replacement frees SBUS two show up in IOREG. In principle we have two devices with the same address, one called SMBS and the other one called SBUS. SBUS will never show up in IOREG as long SMBS exists. But SBUS is exactly the variable we need in concordance with the IOREG from the iMacPro Dump.   Please enable now this ACPI DSDT replacement patch independent from your mainboard. Comment:                       Find*[Hex]                     Replace [Hex] SMBS._ADR -> XSBU.XADR         534d4253 085f4144 52           58534255 08584144 52  
      g.) The DSM -> XDSM DSDT replacement patch is vital for loading the SSDT-X299-iMacPro.aml, as all DSM methods used in theoriginal 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! Comment:             Find*[Hex]         Replace [Hex] _DSM -> XDSM         5f44534d            5844534d  
      h.) The 56 CPxx -> PRxx replacements are i9-7980XE specific and result in a proper CPU core reordering as well as in a iMac Pro specific CPU core variable naming.   All i9-7980XE users can now enable all 56 CPxx -> PRxx replacements. All users of CPUs different from the i9-7980XE have to adopt/modify the 56 CPxx -> PRxx replacements in concordance with their original IOREG CPU core values. 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 CP0E -> PR10         43503045          50523130 CP0F -> PR11         43503046          50523131 CP10 -> PR12         43503130          50523132 CP11 -> PR13         43503131          50523133 CP12 -> PR14         43503132          50523134 CP13 -> PR15         43503133          50523135 CP14 -> PR16         43503134          50523136 CP15 -> PR17         43503135          50523137 CP1C -> PR18         43503143          50523138 CP1D -> PR19         43503144          50523139 CP1E -> PR20         43503145          50523230 CP1F -> PR21         43503146          50523231 CP20 -> PR22         43503230          50523232 CP21 -> PR23         43503231          50523233 CP22 -> PR24         43503232          50523234 CP23 -> PR25         43503233          50523235 CP24 -> PR26         43503234          50523236 CP25 -> PR27         43503235          50523237 CP2A -> PR28         43503241          50523238 CP2B -> PR29         43503242          50523239 CP2C -> PR30         43503243          50523330 CP2D -> PR31         43503244          50523331 CP2E -> PR32         43503245          50523332 CP2F -> PR33         43503246          50523333 CP30 -> PR34         43503330          50523334 CP31 -> PR35         43503331          50523335 CP0A -> PR36         43503041          50523336 CP0B -> PR37         43503042          50523337 CP0C -> PR38         43503043          50523338 CP0D -> PR39         43503044          50523339 CP16 -> PR40         43503136          50523430 CP17 -> PR41         43503137          50523431 CP18 -> PR42         43503138          50523432 CP19 -> PR43         43503139          50523433 CP1A -> PR44         43503141          50523434 CP1B -> PR45         43503142          50523435 CP26 -> PR46         43503236          50523436 CP27 -> PR47         43503237          50523437 CP28 -> PR48         43503238          50523438 CP29 -> PR49         43503239          50523439 CP32 -> PR50         43503332          50523530 CP33 -> PR51         43503333          50523531 CP34 -> PR52         43503334          50523532 CP35 -> PR53         43503335          50523533 CP36 -> PR54         43503336          50523534 CP37 -> PR55         43503337          50523535  
      Resulting CPU Core Implementation:         E.9.2)  SSDT-X299-iMacPro.aml PCI Implementation     For the proper PCI device driver implementation (detailed in the Figure above), which is mostly directly related with the PCI device functionality, we now have to revise and likely adopt or modify the attached SSDT-X299-iMacPro.aml with MaciASL to our specific build and system configuration with the help of the IORegistryExplorer.   Note that for each device, the SSDT-X299-iMacPro.aml contains a DefinitionBlock entry and the underlying PCI device implementation. In case of necessary modifications/adaptations, don't forget to also modify/adapt the respective DefinitionBlock entries in concordance with your IOREG entries. The entire SSDT structure is module like. Each module can be independently added, changed or removed in dependence of your specific build, needs and requirements. A stepwise implementation of the individual PCI devices is recommended!   E.9.2.1) - HDEF - onboard PCI Audio Controller PCI Implementation:   DefintionBlock entry: External (_SB_.PCI0.CAVS, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
        PCI Device Implementation: Scope (\_SB.PCI0)     {         Scope (CAVS)         {             Name (_STA, Zero)  // _STA: Status         }         Device (HDEF)         {             Name (_ADR, 0x001F0003)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 Store (Package (0x16)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "model",                         Buffer (0x1C)                         {                             "Realtek ALC S1220A HD Audio"                         },                         "name",                         Buffer (0x27)                         {                             "Realtek ALC S1220A HD Audio Controller"                         },                         "hda-gfx",                         Buffer (0x0A)                         {                             "onboard-1"                         },                         "device_type",                         Buffer (0x14)                         {                             "HD-Audio-Controller"                         },                         "device-id",                         Buffer (0x04)                         {                              0xF0, 0xA2, 0x00, 0x00                         },                         "compatible",                         Buffer (0x0D)                         {                             "pci8086,0C0C"                         },                         "MaximumBootBeepVolume",                         Buffer (One)                         {                              0xEE                                        },                         "MaximumBootBeepVolumeAlt",                         Buffer (One)                         {                              0xEE                                        },                         "layout-id",                         Buffer (0x04)                         {                              0x07, 0x00, 0x00, 0x00                         },                         "PinConfigurations",                         Buffer (Zero) {}                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
      The HDEF PCI device implementation is valid for the ASUS Prime X299 Deluxe and likely for all other mainboards with the Realtek ALC S1220A Audio Controller chipset. It is a build-in device and does not have any slot specific dependency. Note the CAVS -> HDEF replacement directly performed within the SSDT!     E.9.2.2) - GFX0, HDAU - Nvidia Graphics Card and HDMI/DP Audio PCI implementation    DefintionBlock entry: External (_SB_.PC02.BR2A, DeviceObj)    // (from opcode) External (_SB_.PC02.BR2A.SL05, DeviceObj)    // (from opcode) External (_SB_.PC02.BR2A.PEGP, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
        PCI Device Implementation: Scope (_SB.PC02.BR2A)     {         Scope (SL05)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (PEGP)         {             Name (_STA, Zero)  // _STA: Status         }         Device (GFX0)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 Store (Package (0x14)                     {                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "device-id",                         Buffer (0x04)                         {                              0x06, 0x1B, 0x00, 0x00                         },                         "hda-gfx",                         Buffer (0x0A)                         {                             "onboard-2"                         },                         "AAPL,slot-name",                         Buffer (0x07)                         {                             "Slot-1"                         },                         "@0,connector-type",                         Buffer (0x04)                         {                              0x00, 0x08, 0x00, 0x00                         },                         "@1,connector-type",                         Buffer (0x04)                         {                              0x00, 0x08, 0x00, 0x00                         },                         "@2,connector-type",                         Buffer (0x04)                         {                              0x00, 0x08, 0x00, 0x00                         },                         "@3,connector-type",                         Buffer (0x04)                         {                              0x00, 0x08, 0x00, 0x00                         },                         "@4,connector-type",                         Buffer (0x04)                         {                              0x00, 0x08, 0x00, 0x00                         },                         "@5,connector-type",                         Buffer (0x04)                         {                              0x00, 0x08, 0x00, 0x00                         }                     }, 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 (0x0C)                     {                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "device-id",                         Buffer (0x04)                         {                              0xEF, 0x10, 0x00, 0x00                         },                         "AAPL,slot-name",                         Buffer (0x07)                         {                             "Slot-1"                         },                         "device_type",                         Buffer (0x16)                         {                             "Multimedia Controller"                         },                         "name",                         Buffer (0x1D)                         {                             "NVIDIA High Definition Audio"                         },                         "hda-gfx",                         Buffer (0x0A)                         {                             "onboard-2"                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
        The actual GFX0 and HDAU PCI device implementation is valid for SMBIOS iMacPro1,1 (GFX0), the ASUS Prime X299 Deluxe 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 graphics card, or with an Nvidia graphics card in a PCIe slot different from PCIe Slot 1, will have to adopt the respective device path entries PC02.BR2A, PCIe Slot definitions and PCI device properties following their respective IOREG entries. Note the SL05 -> PEGP and PEGP -> GFX0 ACPI replacements directly performed within the SSDT.   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, one needs to add the following KextToPatch entry in Section "Kernel and kext Patches" of Clover Configurator, as already implemented in the config.plist contained in EFI-X299-10.14-DP2-Release-iMacPro1,1-190618: Name*                                 Find* [HEX]         Replace* [HEX]        Comment com.apple.driver.AppleHDAController   DE100B0E            DE10EF10              FredWst DP/HDMI patch  
      Credits to @FreedWst and thanks to @fabiosun for pointing me to this solution. The KextToPatch entry might defer for Nvidia GPUs different from the Geforce GTX 1080.     Users of NvidiaGraphicsfixup.kext v1.2.6 and above might be able to drop this KextToPatch entry, as the latter kext already properly implements the Nvidia HDAU PCI driver.    Below one finds an example of @apfelnico for a GFX and HDAU PCI implementation of 1x Radeon Vega Frontier in PCIe Slot 1:   DefintionBlock entry: External (_SB_.PC02.BR2A, DeviceObj) // (from opcode) External (_SB_.PC02.BR2A.PEGP, DeviceObj) // (from opcode) External (_SB_.PC02.BR2A.SL05, DeviceObj) // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (\_SB.PC02.BR2A) { Scope (SL05) { Name (_STA, Zero) // _STA: Status } Scope (PEGP) { 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-2" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } } }  
      as well as one example of @apfelnico for the GFX and HDAU PCI implementation of 1x Radeon Vega 64 in PCIe Slot 1, pimped to 1442 Mhz:
       
      DefintionBlock entry: External (_SB_.PC02.BR2A, DeviceObj) // (from opcode) External (_SB_.PC02.BR2A.PEGP, DeviceObj) // (from opcode) External (_SB_.PC02.BR2A.SL05, DeviceObj) // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (\_SB.PC02.BR2A) { Scope (SL05) { Name (_STA, Zero) // _STA: Status } Scope (PEGP) { Device (EGP0) { Name (_ADR, Zero) // _ADR: Address Device (GFX0) { Name (_ADR, Zero) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store (Package (0x20) { "built-in", Buffer (One) { 0x00 }, "AAPL,slot-name", Buffer (0x07) { "Slot-1" }, "model", Buffer (0x12) { "Radeon RX Vega 64" }, "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" }, "PP_PhmSoftPowerPlayTable", Buffer (One) { /* 0000 */ 0xB6, 0x02, 0x08, 0x01, 0x00, 0x5C, 0x00, 0xE1, /* 0008 */ 0x06, 0x00, 0x00, 0xEE, 0x2B, 0x00, 0x00, 0x1B, /* 0010 */ 0x00, 0x48, 0x00, 0x00, 0x00, 0x80, 0xA9, 0x03, /* 0018 */ 0x00, 0xF0, 0x49, 0x02, 0x00, 0x8E, 0x00, 0x08, /* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0028 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, /* 0030 */ 0x5C, 0x00, 0x4F, 0x02, 0x46, 0x02, 0x94, 0x00, /* 0038 */ 0x9E, 0x01, 0xBE, 0x00, 0x28, 0x01, 0x7A, 0x00, /* 0040 */ 0x8C, 0x00, 0xBC, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0048 */ 0x72, 0x02, 0x00, 0x00, 0x90, 0x00, 0xA8, 0x02, /* 0050 */ 0x6D, 0x01, 0x43, 0x01, 0x97, 0x01, 0xF0, 0x49, /* 0058 */ 0x02, 0x00, 0x71, 0x02, 0x02, 0x02, 0x00, 0x00, /* 0060 */ 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, /* 0068 */ 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, /* 0070 */ 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0078 */ 0x00, 0x00, 0x01, 0x08, 0x84, 0x03, 0x84, 0x03, /* 0080 */ 0xB6, 0x03, 0xE8, 0x03, 0x1A, 0x04, 0x4C, 0x04, /* 0088 */ 0x60, 0x04, 0x7E, 0x04, 0x01, 0x01, 0x33, 0x04, /* 0090 */ 0x01, 0x01, 0x84, 0x03, 0x00, 0x08, 0x60, 0xEA, /* 0098 */ 0x00, 0x00, 0x00, 0x40, 0x19, 0x01, 0x00, 0x01, /* 00A0 */ 0x80, 0x38, 0x01, 0x00, 0x02, 0xDC, 0x4A, 0x01, /* 00A8 */ 0x00, 0x03, 0x90, 0x5F, 0x01, 0x00, 0x04, 0x00, /* 00B0 */ 0x77, 0x01, 0x00, 0x05, 0x90, 0x91, 0x01, 0x00, /* 00B8 */ 0x06, 0x50, 0xBD, 0x01, 0x00, 0x07, 0x01, 0x08, /* 00C0 */ 0xD0, 0x4C, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, /* 00C8 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x8D, 0x01, /* 00D0 */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 00D8 */ 0x00, 0x00, 0xDC, 0xC7, 0x01, 0x00, 0x02, 0x00, /* 00E0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, /* 00E8 */ 0xFC, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* 00F0 */ 0x00, 0x00, 0x00, 0x00, 0xD8, 0x1B, 0x02, 0x00, /* 00F8 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0100 */ 0x00, 0xF4, 0x40, 0x02, 0x00, 0x05, 0x00, 0x00, /* 0108 */ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x64, /* 0110 */ 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, /* 0118 */ 0x00, 0x00, 0x00, 0x68, 0x81, 0x02, 0x00, 0x07, /* 0120 */ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, /* 0128 */ 0x00, 0x05, 0x60, 0xEA, 0x00, 0x00, 0x00, 0x40, /* 0130 */ 0x19, 0x01, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00, /* 0138 */ 0x00, 0xDC, 0x4A, 0x01, 0x00, 0x00, 0x90, 0x5F, /* 0140 */ 0x01, 0x00, 0x00, 0x00, 0x08, 0x28, 0x6E, 0x00, /* 0148 */ 0x00, 0x00, 0x2C, 0xC9, 0x00, 0x00, 0x01, 0xF8, /* 0150 */ 0x0B, 0x01, 0x00, 0x02, 0x80, 0x38, 0x01, 0x00, /* 0158 */ 0x03, 0x90, 0x5F, 0x01, 0x00, 0x04, 0xF4, 0x91, /* 0160 */ 0x01, 0x00, 0x05, 0xD0, 0xB0, 0x01, 0x00, 0x06, /* 0168 */ 0x38, 0xC1, 0x01, 0x00, 0x07, 0x00, 0x08, 0x6C, /* 0170 */ 0x39, 0x00, 0x00, 0x00, 0x24, 0x5E, 0x00, 0x00, /* 0178 */ 0x01, 0xFC, 0x85, 0x00, 0x00, 0x02, 0xAC, 0xBC, /* 0180 */ 0x00, 0x00, 0x03, 0x34, 0xD0, 0x00, 0x00, 0x04, /* 0188 */ 0x68, 0x6E, 0x01, 0x00, 0x05, 0x08, 0x97, 0x01, /* 0190 */ 0x00, 0x06, 0xB0, 0xAD, 0x01, 0x00, 0x07, 0x00, /* 0198 */ 0x01, 0x68, 0x3C, 0x01, 0x00, 0x00, 0x01, 0x04, /* 01A0 */ 0x3C, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, /* 01A8 */ 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x38, /* 01B0 */ 0x01, 0x00, 0x02, 0x00, 0x00, 0x34, 0x98, 0x01, /* 01B8 */ 0x00, 0x04, 0x00, 0x00, 0x01, 0x08, 0x00, 0x98, /* 01C0 */ 0x85, 0x00, 0x00, 0x40, 0xB5, 0x00, 0x00, 0x60, /* 01C8 */ 0xEA, 0x00, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x01, /* 01D0 */ 0x80, 0xBB, 0x00, 0x00, 0x60, 0xEA, 0x00, 0x00, /* 01D8 */ 0x94, 0x0B, 0x01, 0x00, 0x50, 0xC3, 0x00, 0x00, /* 01E0 */ 0x02, 0x00, 0xE1, 0x00, 0x00, 0x94, 0x0B, 0x01, /* 01E8 */ 0x00, 0x40, 0x19, 0x01, 0x00, 0x50, 0xC3, 0x00, /* 01F0 */ 0x00, 0x03, 0x78, 0xFF, 0x00, 0x00, 0x40, 0x19, /* 01F8 */ 0x01, 0x00, 0x88, 0x26, 0x01, 0x00, 0x50, 0xC3, /* 0200 */ 0x00, 0x00, 0x04, 0x40, 0x19, 0x01, 0x00, 0x80, /* 0208 */ 0x38, 0x01, 0x00, 0x80, 0x38, 0x01, 0x00, 0x50, /* 0210 */ 0xC3, 0x00, 0x00, 0x05, 0x80, 0x38, 0x01, 0x00, /* 0218 */ 0xDC, 0x4A, 0x01, 0x00, 0xDC, 0x4A, 0x01, 0x00, /* 0220 */ 0x50, 0xC3, 0x00, 0x00, 0x06, 0x00, 0x77, 0x01, /* 0228 */ 0x00, 0x00, 0x77, 0x01, 0x00, 0x90, 0x5F, 0x01, /* 0230 */ 0x00, 0x50, 0xC3, 0x00, 0x00, 0x07, 0x90, 0x91, /* 0238 */ 0x01, 0x00, 0x90, 0x91, 0x01, 0x00, 0x00, 0x77, /* 0240 */ 0x01, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x01, 0x18, /* 0248 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, /* 0250 */ 0x00, 0x00, 0xBC, 0x02, 0x48, 0x26, 0x46, 0x00, /* 0258 */ 0x0A, 0x00, 0x54, 0x03, 0x90, 0x01, 0x90, 0x01, /* 0260 */ 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, /* 0268 */ 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, /* 0270 */ 0x04, 0x31, 0x07, 0x90, 0x01, 0x90, 0x01, 0x90, /* 0278 */ 0x01, 0x90, 0x01, 0x00, 0x00, 0x59, 0x00, 0x69, /* 0280 */ 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x5F, 0x00, 0x73, /* 0288 */ 0x00, 0x73, 0x00, 0x64, 0x00, 0x40, 0x00, 0x90, /* 0290 */ 0x92, 0x97, 0x60, 0x96, 0x00, 0x90, 0x55, 0x00, /* 0298 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 02A0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 02A8 */ 0x02, 0x02, 0xD4, 0x30, 0x00, 0x00, 0x02, 0x10, /* 02B0 */ 0x60, 0xEA, 0x00, 0x00, 0x02, 0x10 }, "hda-gfx", Buffer (0x0A) { "onboard-2" }, "PP_DisablePowerContainment", Buffer (One) { 0x01 }, "PP_FuzzyFanControl", Buffer (One) { 0x00 } }, 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 (0x14) { "Radeon RX HD-Audio" }, "model", Buffer (0x14) { "Radeon RX HD-Audio" }, "hda-gfx", Buffer (0x0A) { "onboard-2" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } } E.9.2.3) - PMCR - onboard Power Management Controller (PMC) PCI Implementation:   DefintionBlock entry: External (_SB_.PCI0.PMC1, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (\_SB.PCI0)     {         Scope (PMC1)         {             Name (_STA, Zero)  // _STA: Status         }         Device (PMCR)         {             Name (_ADR, 0x001F0002)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 Store (Package (0x0E)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "model",                         Buffer (0x1E)                         {                             "Intel X299 Series Chipset PMC"                         },                         "name",                         Buffer (0x0A)                         {                             "Intel PMC"                         },                         "device-id",                         Buffer (0x04)                         {                              0xA1, 0xA2, 0x00, 0x00                         },                         "device_type",                         Buffer (0x0F)                         {                             "PMC-Controller"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "compatible",                         Buffer (0x0D)                         {                             "pci8086,a2a1"                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
      The PMCR PCI device implementation should be valid for all X299 mainboards and should not require any build specific adaptation/modification. Note the PMC1 -> PMCR ACPI replacement directly performed within the SDDT.   E.9.2.4) - USBX:   PCI Device Implementation: Device (_SB.USBX)     {         Name (_ADR, Zero)  // _ADR: Address         Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method         {             If (LNot (Arg2))             {                 Return (Buffer (One)                 {                      0x03                 })             }             Return (Package (0x08)             {                 "kUSBSleepPortCurrentLimit",                 0x0834,                 "kUSBSleepPowerSupply",                 0x13EC,                 "kUSBWakePortCurrentLimit",                 0x0834,                 "kUSBWakePowerSupply",                 0x13EC             })         }     }  
      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 USBX PCI device implementation fixes this errors.     E.9.2.5) - XHCI - onboard Extended Host Controller Interface (XHCI) PCI Implementation:   DefintionBlock entry: External (_SB_.PCI0.XHCI, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (\_SB.PCI0.XHCI)     {         Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method         {             Store (Package (0x1B)                 {                     "AAPL,slot-name",                     Buffer (0x09)                     {                         "Built In"                     },                     "built-in",                     Buffer (One)                     {                          0x00                     },                     "device-id",                     Buffer (0x04)                     {                          0xAF, 0xA2, 0x00, 0x00                     },                     "name",                     Buffer (0x34)                     {                         "ASMedia / Intel X299 Series Chipset XHCI Controller"                     },                     "model",                     Buffer (0x34)                     {                         "ASMedia ASM1074 / Intel X299 Series Chipset USB 3.0"                     },                     "AAPL,current-available",                     0x0834,                     "AAPL,current-extra",                     0x0A8C,                     "AAPL,current-in-sleep",                     0x0A8C,                     "AAPL,max-port-current-in-sleep",                     0x0834,                     "AAPL,device-internal",                     Zero,                     "AAPL,clock-id",                     Buffer (One)                     {                          0x01                     },                     "AAPL,root-hub-depth",                     0x1A,                     "AAPL,XHC-clock-id",                     One,                     Buffer (One)                     {                          0x00                     }                 }, Local0)             DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))             Return (Local0)         }     }  
      The XHCI USB3.0 ASMedia ASM1074 / Intel X299 Series Chipset PCI device implementation is valid for the ASUS Prime X299 Deluxe and for all other X299 mainboards with the same XHC controller chipset. Verify and adopt/modify if necessary device path "PCI0.XHCI" and PCI device implementations by means of IOREG.   E.9.2.6) - XHC2,3,4 - ASMedia ASM3142 USB 3.1 Controller PCI Implementation:   DefintionBlock entry: External (_SB_.PCI0.RP01, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP01.PXSX, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP05, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP05.PXSX, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP07, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP07.PXSX, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (\_SB.PCI0.RP01)     {         Scope (PXSX)         {             Name (_STA, Zero)  // _STA: Status         }         Device (XHC2)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                                    })                 }                 Store (Package (0x1B)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "device-id",                         Buffer (0x04)                         {                              0x42, 0x21, 0x00, 0x00                         },                         "name",                         Buffer (0x17)                         {                             "ASMedia XHC Controller"                         },                         "model",                         Buffer (0x2F)                         {                             "ASMedia ASM3142 #1 1x USB 3.1 Type-C Internal "                         },                         "AAPL,current-available",                         0x0834,                         "AAPL,current-extra",                         0x0A8C,                         "AAPL,current-in-sleep",                         0x0A8C,                         "AAPL,max-port-current-in-sleep",                         0x0834,                         "AAPL,device-internal",                         Zero,                         "AAPL,clock-id",                         Buffer (One)                         {                              0x01                                        },                         "AAPL,root-hub-depth",                         0x1A,                         "AAPL,XHC-clock-id",                         One,                         Buffer (One)                         {                              0x00                                        }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }     Scope (\_SB.PCI0.RP05)     {         Scope (PXSX)         {             Name (_STA, Zero)  // _STA: Status         }         Device (XHC3)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                                    })                 }                 Store (Package (0x1B)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "device-id",                         Buffer (0x04)                         {                              0x42, 0x21, 0x00, 0x00                         },                         "name",                         Buffer (0x17)                         {                             "ASMedia XHC Controller"                         },                         "model",                         Buffer (0x2E)                         {                             "ASMedia ASM3142 #2 2x USB 3.1 Type-A External"                         },                         "AAPL,current-available",                         0x0834,                         "AAPL,current-extra",                         0x0A8C,                         "AAPL,current-in-sleep",                         0x0A8C,                         "AAPL,max-port-current-in-sleep",                         0x0834,                         "AAPL,device-internal",                         Zero,                         "AAPL,clock-id",                         Buffer (One)                         {                              0x01                                        },                         "AAPL,root-hub-depth",                         0x1A,                         "AAPL,XHC-clock-id",                         One,                         Buffer (One)                         {                              0x00                                        }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }     Scope (\_SB.PCI0.RP07)     {         Scope (PXSX)         {             Name (_STA, Zero)  // _STA: Status         }         Device (XHC4)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, 0x00020000))                 {                     Return (Buffer (One)                     {                          0x03                                    })                 }                 Store (Package (0x1B)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "device-id",                         Buffer (0x04)                         {                              0x42, 0x21, 0x00, 0x00                         },                         "name",                         Buffer (0x17)                         {                             "ASMedia XHC Controller"                         },                         "model",                         Buffer (0x4A)                         {                             "ASMedia ASM3142 #3 1x USB 3.1 Type-A / ASM1543 1x USB 3.1 Type-C External"                         },                         "AAPL,current-available",                         0x0834,                         "AAPL,current-extra",                         0x0A8C,                         "AAPL,current-in-sleep",                         0x0A8C,                         "AAPL,max-port-current-in-sleep",                         0x0834,                         "AAPL,device-internal",                         Zero,                         "AAPL,clock-id",                         Buffer (One)                         {                              0x01                                        },                         "AAPL,root-hub-depth",                         0x1A,                         "AAPL,XHC-clock-id",                         One,                         Buffer (One)                         {                              0x00                                        }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
      The XHC2,XHC3,XHC4 ASMedia ASM3142/ASM1543 USB 3.1 onboard Intel XHCI controller PCI device implementation is valid for the ASUS Prime X299 Deluxe and for all other X299 mainboards with the same XHC USB3.1 controller ASMedia ASM3142 chipset configuration. Note that this SSDT-X299-iMacPro.aml device implementation also performs the following ACPI Replacements
        PCI0.RP01.PXSX -> PCI0.RP01.XHC2 PCI0.RP05.PXSX -> PCI0.RP01.XHC3 PCI0.RP07.PXSX -> PCI0.RP01.XHC4   in concordance with the respective SMBIOS iMacPro1,1 variable naming. Verify and adopt/modify if necessary the corresponding "PCI0.RP01.XHC2", "PCI0.RP05.XHC3", "PCI0.RP07.XHC4" PCI device implementations by means of IOREG.   E.9.2.7) ANS1, ANS2 - Apple NVMe Controller PCI Implementation:   DefintionBlock entry: External (_SB_.PCI0.RP09, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP09.PXSX, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP21, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP21.PXSX, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
        PCI Device Implementation: Scope (\_SB.PCI0.RP09)     {         Scope (PXSX)         {             Name (_STA, Zero)  // _STA: Status         }         Device (ANS1)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                                    })                 }                 Store (Package (0x08)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "name",                         Buffer (0x17)                         {                             "Apple SSD Controller I"                         },                         "model",                         Buffer (0x14)                         {                             "Apple SSD AP1024M I"                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }     Scope (\_SB.PCI0.RP21)     {         Scope (PXSX)         {             Name (_STA, Zero)  // _STA: Status         }         Device (ANS2)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                                    })                 }                 Store (Package (0x08)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "name",                         Buffer (0x18)                         {                             "Apple SSD Controller II"                         },                         "model",                         Buffer (0x15)                         {                             "Apple SSD AP1024M II"                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
      The current ANS2 Apple NVMe Controller PCI implementation is of purely cosmetic nature and is valid for the ASUS Prime X299 Deluxe. Note that this SSDT-X299-iMacPro.aml device implementation also performs the following ACPI Replacements   PCI0.RP09.PXSX -> PCI0.RP09.ANS1 PCI0.RP21.PXSX -> PCI0.RP21.ANS2   in concordance with the respective SMBIOS iMacPro1,1 variable naming.   Verify and adopt/modify if necessary the "PCI0.RP09.ANS2" PCI device implementations by means of IOREG.     E.9.2.8) - SAT1 - Intel AHCI SATA Controller PCI Implementation:   DefintionBlock entry: External (_SB_.PCI0, DeviceObj)    // (from opcode) External (_SB_.PCI0.SAT1, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (\_SB.PCI0)     {         Scope (SAT1)         {             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 Store (Package (0x0C)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "name",                         Buffer (0x16)                         {                             "Intel AHCI Controller"                         },                         "model",                         Buffer (0x1F)                         {                             "Intel X299 Series Chipset SATA"                         },                         "device_type",                         Buffer (0x15)                         {                             "AHCI SATA Controller"                         },                         "device-id",                         Buffer (0x04)                         {                              0x82, 0xA2, 0x00, 0x00                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
        The SAT1 onboard Intel AHCI SATA controller PCI device implementation is valid for the ASUS Prime X299 Deluxe and for all other X299 mainboards with the same AHCI SATA controller chipset. Verify and adopt/modify if necessary device path "PCI0.SAT1" and PCI device implementations by means of IOREG.   E.9.2.9) XGBE - 10GBit NIC Implementation:   DefintionBlock entry: External (_SB_.PC03.BR3A, DeviceObj)    // (from opcode) External (_SB_.PC03.BR3A.PEGP, DeviceObj)    // (from opcode) External (_SB_.PC03.BR3A.SL09, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      ASUS XG-C100C AQC107 PCI Device Implementation: Scope (\_SB.PC03.BR3A)     {         Scope (SL09)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (PEGP)         {             Name (_STA, Zero)  // _STA: Status         }         Device (XGBE)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                     })                 }                 Store (Package (0x10)                     {                         "AAPL,slot-name",                         Buffer (0x07)                         {                             "Slot-6"                         },                         "built-in",                         Buffer (One)                         {                              0x00                         },                         "name",                         Buffer (0x33)                         {                             "ASUS XG-C100C Aquantia AQC107 10-Gigabit Ethernet"                         },                         "model",                         Buffer (0x11)                         {                             "Apple AQC107-AFW"                         },                         "location",                         Buffer (0x02)                         {                             "1"                         },                         "subsystem-id",                         Buffer (0x04)                         {                              0x87, 0x01, 0x00, 0x00                         },                         "device-id",                         Buffer (0x04)                         {                              0xB1, 0x07, 0x00, 0x00                         },                         "subsystem-vendor-id",                         Buffer (0x04)                         {                              0x6B, 0x10, 0x00, 0x00                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
        Intel X540-T1 PCI Device Implementation: Scope (\_SB.PC03.BR3A)     {         Scope (SL09)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (PEGP)         {             Name (_STA, Zero)  // _STA: Status         }         Device (XGBE)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                                   })                 }                 Store (Package (0x10)                     {                         "AAPL,slot-name",                         Buffer (0x07)                         {                             "Slot-6"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                       },                         "name",                         Buffer (0x22)                         {                             "Intel X540-T1 10-Gigabit Ethernet"                         },                         "model",                         Buffer (0x22)                         {                             "Intel X540-T1 10-Gigabit Ethernet"                         },                         "location",                         Buffer (0x02)                         {                             "1"                         },                         "subsystem-id",                         Buffer (0x04)                         {                              0x0A, 0x00, 0x00, 0x00                         },                         "device-id",                         Buffer (0x04)                         {                              0x28, 0x15, 0x00, 0x00                         },                         "subsystem-vendor-id",                         Buffer (0x04)                         {                              0x86, 0x80, 0x00, 0x00                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
      Small-Tree P2EI0G-2T PCI Device Implementation: Scope (\_SB.PC03.BR3A)     {         Scope (SL09)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (PEGP)         {             Name (_STA, Zero)  // _STA: Status         }         Device (XGBE)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                                   })                 }                 Store (Package (0x10)                     {                         "AAPL,slot-name",                         Buffer (0x07)                         {                             "Slot-6"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                       },                         "name",                         Buffer (0x30)                         {                             "Small-Tree P2EI0G-2T 10-Gigabit Ethernet Port 1"                         },                         "model",                         Buffer (0x29)                         {                             "Small-Tree P2EI0G-2T 10-Gigabit Ethernet"                         },                         "location",                         Buffer (0x02)                         {                             "1"                         },                         "subsystem-id",                         Buffer (0x04)                         {                              0x0A, 0x00, 0x00, 0x00                         },                         "device-id",                         Buffer (0x04)                         {                              0x28, 0x15, 0x00, 0x00                         },                         "subsystem-vendor-id",                         Buffer (0x04)                         {                              0x86, 0x80, 0x00, 0x00                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }         Device (XGBF)         {             Name (_ADR, One)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 If (LEqual (Arg2, Zero))                 {                     Return (Buffer (One)                     {                          0x03                                   })                 }                 Store (Package (0x10)                     {                         "AAPL,slot-name",                         Buffer (0x07)                         {                             "Slot-6"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                       },                         "name",                         Buffer (0x30)                         {                             "Small-Tree P2EI0G-2T 10-Gigabit Ethernet Port 2"                         },                         "model",                         Buffer (0x29)                         {                             "Small-Tree P2EI0G-2T 10-Gigabit Ethernet"                         },                         "location",                         Buffer (0x02)                         {                             "1"                         },                         "subsystem-id",                         Buffer (0x04)                         {                              0x0A, 0x00, 0x00, 0x00                         },                         "device-id",                         Buffer (0x04)                         {                              0x28, 0x15, 0x00, 0x00                         },                         "subsystem-vendor-id",                         Buffer (0x04)                         {                              0x86, 0x80, 0x00, 0x00                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
      The 10-Gigabit NIC XGBE PCI implementation is mainly of cosmetic nature. For each PCIe Adapter and for different slot populations the XGBE PCI device implementation needs to be adopted/modified (see details above). This also states for the respective ACPI path entries "PC03", "BR3A" and respective SL09 -> PEGP and PEGP -> XGBE ACPI Replacements (in compliance with the iMac Pro 10GB ACPI variable nomenclature), directly performed within the SSDT-X299-iMacPro.aml. Those not employing any 10-GBit NIC in their system, can simply remove the corresponding SSDT PCI device implementation.   E.9.2.10) - ETH0/ETH1 - onboard LAN Controller PCI Implementation:   DefintionBlock entry: External (_SB_.PCI0, DeviceObj)    // (from opcode) External (_SB_.PCI0.GBE1, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP02, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP02.D0A4, DeviceObj)    // (from opcode) External (_SB_.PCI0.RP02.PXSX, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (\_SB.PCI0)     {         Scope (GBE1)         {             Name (_STA, Zero)  // _STA: Status         }         Device (ETH0)         {             Name (_ADR, 0x001F0006)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 Store (Package (0x10)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "name",                         Buffer (0x16)                         {                             "Intel I219V2 Ethernet"                         },                         "model",                         Buffer (0x2A)                         {                             "Intel I219V2 PCI Express Gigabit Ethernet"                         },                         "location",                         Buffer (0x02)                         {                             "2"                         },                         "subsystem-id",                         Buffer (0x04)                         {                              0x72, 0x86, 0x00, 0x00                         },                         "device-id",                         Buffer (0x04)                         {                              0xB8, 0x15, 0x00, 0x00                         },                         "subsystem-vendor-id",                         Buffer (0x04)                         {                              0x43, 0x10, 0x00, 0x00                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }     Scope (\_SB.PCI0.RP02)     {         Scope (D0A4)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (PXSX)         {             Name (_STA, Zero)  // _STA: Status         }         Device (ETH1)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 Store (Package (0x10)                     {                         "AAPL,slot-name",                         Buffer (0x09)                         {                             "Built In"                         },                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "name",                         Buffer (0x16)                         {                             "Intel I211VA Ethernet"                         },                         "model",                         Buffer (0x2A)                         {                             "Intel I211VA PCI Express Gigabit Ethernet"                         },                         "location",                         Buffer (0x02)                         {                             "2"                         },                         "subsystem-id",                         Buffer (0x04)                         {                              0xF0, 0x85, 0x00, 0x00                         },                         "device-id",                         Buffer (0x04)                         {                              0x39, 0x15, 0x00, 0x00                         },                         "subsystem-vendor-id",                         Buffer (0x04)                         {                              0x43, 0x10, 0x00, 0x00                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
        Note that the ETH0/ETH1 Intel I219V2 PCI Express Gigabit Ethernet and Intel I211VA PCI Express Gigabit Ethernet onboard LAN controller PCI implementations are of pure cosmetic nature and only valid for ASUS Prime X299 Deluxe or X299 mainboards with the same LAN Controller configuration. Owners of different X299 mainboards have to verify and adopt/modify if necessary the device these PCI device implementations by means of IOREG. Note the PCI0.GBE1 -> PCI0.ETH0, PCI0.RP02.D0A4 -> PCI0.RP02.PXSX and PCI0.RP02.PXSX -> PCI0.RP02.ETH1 ACPI replacements directly performed within the DSDT.   E.9.2.11) - ARPT - OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 AirPort Controller PCI Implementation:   DefintionBlock entry: External (_SB_.PC03.BR3D, DeviceObj)    // (from opcode) External (_SB_.PC03.BR3D.PEGP, DeviceObj)    // (from opcode) External (_SB_.PC03.BR3D.SL0C, DeviceObj)    // (from opcode) External (DTGP, MethodObj) // 5 Arguments (from opcode)  
      PCI Device Implementation: Scope (_SB.PC03.BR3D)     {         Scope (SL0C)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (PEGP)         {             Name (_STA, Zero)  // _STA: Status         }         Device (ARPT)         {             Name (_ADR, Zero)  // _ADR: Address             Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method             {                 Store (Package (0x0E)                     {                         "built-in",                         Buffer (One)                         {                              0x00                                        },                         "device-id",                         Buffer (0x04)                         {                              0xA0, 0x43, 0x00, 0x00                         },                         "AAPL,slot-name",                         Buffer (0x07)                         {                             "Slot-3"                         },                         "device_type",                         Buffer (0x13)                         {                             "AirPort Controller"                         },                         "model",                         Buffer (0x4A)                         {                             "OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller"                         },                         "compatible",                         Buffer (0x0D)                         {                             "pci14e4,43a0"                         },                         "name",                         Buffer (0x10)                         {                             "AirPort Extreme"                         }                     }, Local0)                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                 Return (Local0)             }         }     }  
      The ARPT OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 AirPort Controller PCI device implementation is of pure cosmetic nature and only valid for users of the latter WIFI/Bluetooth PCIe Adapter in PCIe Slot 3. Users of this PCIe Adapter within a PCIe slot population different from PCIe Slot 3 have to adapt/modify the respective device path "PC03","BR3D","ARPT" and likely also the respective ACPI Replacements PC03.BR3D.SL0C -> PC03.BR3D.PEGP and PC03.BR3D.PEGP -> PC03.BR3D.ARPT, directly performed within the SSDT. Users of the Asus Prime X299 Deluxe onboard Bluetooth chipset controller or with a completely different WIFI/Bluetooth configuration have to adopt the entire Airport PCI implementation by means of IOREG.   E.9.2.12) - DTGP Method: Method (DTGP, 5, NotSerialized)     {         If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))         {             If (LEqual (Arg1, One))             {                 If (LEqual (Arg2, Zero))                 {                     Store (Buffer (One)                         {                              0x03                         }, Arg4)                     Return (One)                 }                 If (LEqual (Arg2, One))                 {                     Return (One)                 }             }         }         Store (Buffer (One)             {                  0x00             }, Arg4)         Return (Zero)     } }  
        The DTG Method Implementation is required for SSDT functionality and has not to be modified or adopted in any case.   E.9.2.13) - 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.9.3)  SSDT-X299-TB3-iMacPro-KGP.aml PCI Implementation   The Thunderbolt PCI device implementation was formerly part of the SSDT-X299-iMacPro.aml. Due to it's exponentially growing complexity and length, this latter PCI device implementation has now been outsourced from SSDT-X299-iMacPro.aml and newly realised within it's proper and mostly independent aml-file, namely SSDT-X299-TB3-iMacPro-KGP.aml.   The current Thunderbolt PCI device implementation is kept has close as possible to SSDT-9.aml of @TheOfficialGypsy's iMac Pro dumb. It also contains implementations mainly developed by @apfelnico and @nmano, but also @Mork vom Ork, @Matthew82, @maleorderbride and @TheRacerMaster.   It is valid for both, the ASUS TBEX 3 and Gigabyte Alpine Ridge and allows for TB and XHC USB sleep/wake functionality with the THB_C cable plugged to the thunderbolt onboard header of the ASUS Prime X299 Deluxe. While XHC USB hot plug seems to work fine within this configuration, TB hot plug seems to require the removal of the THB_C cable. Thank's to @crismac2013 and @LeleTuratti for their findings!   >>> https://youtu.be/Jakp5dCoFvY <<<   Users of this PCIe Adapter within a PCIe slot population different from PCIe Slot 4 have to adapt/modify the respective ACPI path entries "PC01", "BR1A" and respective SL01 -> PEGP and PEGP -> UPSB ACPI Replacements, directly performed within the SSDT.    DefintionBlock entry: External (_SB_, DeviceObj)    // (from opcode) External (_SB_.PC01, DeviceObj)    // (from opcode) External (_SB_.PC01.BR1A, DeviceObj)    // (from opcode) External (_SB_.PC01.BR1A.PEGP, DeviceObj)    // (from opcode) External (_SB_.PC01.BR1A.SL01, DeviceObj)    // (from opcode) External (_SB_.PWRB, DeviceObj)    // (from opcode) External (AG12, UnknownObj)    // (from opcode) External (DTGP, MethodObj)    // 5 Arguments (from opcode) External (IO80, UnknownObj)    // (from opcode) External (PG12, UnknownObj)    // (from opcode) External (PICM, UnknownObj)    // (from opcode) External (PWRB, DeviceObj)    // (from opcode)  
      PCI Device Implementation:   OperationRegion (GNVS, SystemMemory, 0x4FEE6918, 0x0403)     Field (GNVS, AnyAcc, Lock, Preserve)     {         OSYS,   16     }     Method (OSDW, 0, NotSerialized)     {         If (LEqual (OSYS, 0x2710))         {             Return (One)         }         Else         {             Return (Zero)         }     }     Method (PINI, 0, NotSerialized)     {         Store (0x07DC, OSYS)         If (XOSI ("Darwin"))         {             Store (0x2710, OSYS)         }         ElseIf (XOSI ("Linux"))         {             Store (0x03E8, OSYS)         }         ElseIf (XOSI ("Windows 2009"))         {             Store (0x07D9, OSYS)         }         ElseIf (XOSI ("Windows 2012"))         {             Store (0x07DC, OSYS)         }         Else         {             Store (0x07DC, OSYS)         }     }     Method (XOSI, 1, NotSerialized)     {         Store (Package (0x0E)             {                 "Darwin",                 "Linux",                 "Windows",                 "Windows 2001",                 "Windows 2001 SP2",                 "Windows 2001.1",                 "Windows 2001.1 SP1",                 "Windows 2006",                 "Windows 2006 SP1",                 "Windows 2006.1",                 "Windows 2009",                 "Windows 2012",                 "Windows 2013",                 "Windows 2015"             }, Local0)         Return (LNotEqual (Ones, Match (Local0, MEQ, Arg0, MTR, Zero, Zero)))     }     Scope (\_SB.PC01)     {         Scope (BR1A.SL01)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (BR1A.PEGP)         {             Name (_STA, Zero)  // _STA: Status         }         Scope (BR1A)         {             Name (_STA, Zero)  // _STA: Status         }         Device (BR1X)         {             Name (_ADR, Zero)  // _ADR: Address             OperationRegion (MCTL, SystemMemory, 0x60000188, 0x04)             Field (MCTL, ByteAcc, NoLock, Preserve)             {                     ,   3,                 HGPE,   1,                     ,   7,                     ,   8,                     ,   8             }             Method (_INI, 0, NotSerialized)  // _INI: Initialize             {                 Store (One, HGPE)             }             Name (_HPP, Package (0x04)  // _HPP: Hot Plug Parameters             {                 0x08,                 0x40,                 One,                 Zero             })             Name (SHPC, 0x40)             Name (SPDS, 0x40)             Name (MRLS, Zero)             Name (CCOM, 0x10)             Name (SPDC, 0x08)             Name (MRLC, 0x04)             Name (SPFD, 0x02)             Name (SABP, One)             Name (SPOF, 0x10)             Name (SPON, 0x0F)             Name (ALMK, 0x1C)             Name (ALON, One)             Name (ALBL, 0x02)             Name (ALOF, 0x03)             Name (PLMK, 0x13)             Name (PLON, 0x04)             Name (PLBL, 0x08)             Name (PLOF, 0x0C)             Name (HPEV, 0x0F)             OperationRegion (PPA4, PCI_Config, Zero, 0x0100)             Field (PPA4, ByteAcc, NoLock, Preserve)             {                 Offset (0xA0),                     ,   4,                 LDIS,   1,                 Offset (0xA2),                 Offset (0xA4),                 ATBP,   1,                     ,   1,                 MRSP,   1,                 ATIP,   1,                 PWIP,   1,                     ,   14,                 PSNM,   13,                 ABIE,   1,                 PFIE,   1,                 MSIE,   1,                 PDIE,   1,                 CCIE,   1,                 HPIE,   1,                 SCTL,   5,                 Offset (0xAA),                 SSTS,   7,                 Offset (0xAB),                 Offset (0xB0),                 Offset (0xB2),                 PMES,   1,                 PMEP,   1,                 Offset (0xB4)             }             Method (ATID, 0, NotSerialized)             {                 Return (And (SCTL, 0x03))             }             Method (PWID, 0, NotSerialized)             {                 Return (ShiftRight (And (SCTL, 0x0C), 0x02))             }             Method (PWCC, 0, NotSerialized)             {                 Return (ShiftRight (And (SCTL, 0x10), 0x04))             }             Method (ABPS, 1, NotSerialized)             {                 If (LEqual (Arg0, One))                 {                     Or (SSTS, One, SSTS)                 }                 Return (And (SSTS, One))             }             Method (PFDS, 1, NotSerialized)             {                 If (LEqual (Arg0, One))                 {                     Or (SSTS, 0x02, SSTS)                 }                 Return (ShiftRight (And (SSTS, 0x02), One))             }             Method (MSCS, 1, NotSerialized)             {                 If (LEqual (Arg0, One))                 {                     Or (SSTS, 0x04, SSTS)                 }                 Return (ShiftRight (And (SSTS, 0x04), 0x02))             }             Method (PDCS, 1, NotSerialized)             {                 If (LEqual (Arg0, One))                 {                     Or (SSTS, 0x08, SSTS)                 }                 Return (ShiftRight (And (SSTS, 0x08), 0x03))             }             Method (CMCS, 1, NotSerialized)             {                 If (LEqual (Arg0, One))                 {                     Or (SSTS, 0x10, SSTS)                 }                 Return (ShiftRight (And (SSTS, 0x10), 0x04))             }             Method (MSSC, 1, NotSerialized)             {                 If (LEqual (Arg0, One))                 {                     Or (SSTS, 0x20, SSTS)                 }                 Return (ShiftRight (And (SSTS, 0x20), 0x05))             }             Method (PRDS, 1, NotSerialized)             {                 If (LEqual (Arg0, One))                 {                     Or (SSTS, 0x40, SSTS)                 }                 Return (ShiftRight (And (SSTS, 0x40), 0x06))             }             Method (OSHP, 0, NotSerialized)             {                 Store (SSTS, SSTS)                 Store (Zero, HGPE)             }             Method (HPCC, 1, NotSerialized)             {                 Store (SCTL, Local0)                 Store (Zero, Local1)                 If (LNotEqual (Arg0, Local0))                 {                     Store (Arg0, SCTL)                     While (LAnd (LNot (CMCS (Zero)), LNotEqual (0x64, Local1)))                     {                         Store (0xFB, IO80)                         Sleep (0x02)                         Add (Local1, 0x02, Local1)                     }                     CMCS (One)                 }             }             Method (ATCM, 1, NotSerialized)             {                 Store (SCTL, Local0)                 And (Local0, ALMK, Local0)                 If (LEqual (Arg0, One))                 {                     Or (Local0, ALON, Local0)                 }                 If (LEqual (Arg0, 0x02))                 {                     Or (Local0, ALBL, Local0)                 }                 If (LEqual (Arg0, 0x03))                 {                     Or (Local0, ALOF, Local0)                 }                 HPCC (Local0)             }             Method (PWCM, 1, NotSerialized)             {                 Store (SCTL, Local0)                 And (Local0, PLMK, Local0)                 If (LEqual (Arg0, One))                 {                     Or (Local0, PLON, Local0)                 }                 If (LEqual (Arg0, 0x02))                 {                     Or (Local0, PLBL, Local0)                 }                 If (LEqual (Arg0, 0x03))                 {                     Or (Local0, PLOF, Local0)                 }                 HPCC (Local0)             }             Method (PWSL, 1, NotSerialized)             {                 Store (SCTL, Local0)                 If (Arg0)                 {                     And (Local0, SPON, Local0)                 }                 Else                 {                     Or (Local0, SPOF, Local0)                 }                 HPCC (Local0)             }             Method (_OST, 3, Serialized)  // _OST: OSPM Status Indication             {                 Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler                 Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler                 While (One)                 {                     Store (And (Arg0, 0xFF), _T_0)                     If (LEqual (_T_0, 0x03))                     {                         While (One)                         {                             Store (ToInteger (Arg1), _T_1)                             If (LNotEqual (Match (Package (0x04)                                             {                                                 0x80,                                                 0x81,                                                 0x82,                                                 0x83                                             }, MEQ, _T_1, MTR, Zero, Zero), Ones))                             {                                 If (LNot (PWCC ()))                                 {                                     PWCM (One)                                     Store (One, ABIE)                                 }                             }                             Break                         }                     }                     Break                 }             }             Method (EJ0L, 0, NotSerialized)             {                 Store (0xFF, IO80)                 Store (SCTL, Local0)                 If (LNotEqual (ATID (), One))                 {                     And (Local0, ALMK, Local0)                     Or (Local0, ALBL, Local0)                 }                 HPCC (Local0)                 Store (SCTL, Local0)                 Or (Local0, SPOF, Local0)                 HPCC (Local0)                 Store (SCTL, Local0)                 Or (Local0, PLOF, Local0)                 HPCC (Local0)                 Store (SCTL, Local0)                 Or (Local0, ALOF, Local0)                 HPCC (Local0)             }             Method (PMEH, 1, NotSerialized)             {                 If (And (HPEV, SSTS))                 {                     If (ABPS (Zero))                     {                         Store (Arg0, IO80)                         ABPS (One)                         Sleep (0xC8)                     }                 }                 Return (0xFF)             }             Method (HPEH, 1, NotSerialized)             {                 Store (0xFE, IO80)                 Sleep (0x64)                 Store (Zero, CCIE)                 If (And (HPEV, SSTS))                 {                     Store (0xFD, IO80)                     Sleep (0x0A)                     Store (Arg0, IO80)                     Sleep (0x0A)                     Store (PPXH (), Local0)                     Return (Local0)                 }                 Else                 {                     Return (0xFF)                 }                 Store (0xFC, IO80)                 Sleep (0x0A)             }             Method (PPXH, 0, NotSerialized)             {                 Sleep (0xC8)                 If (ABPS (Zero))                 {                     If (LNot (PRDS (Zero)))                     {                         Store (One, LDIS)                         PWSL (Zero)                         PWCM (0x03)                         If (LEqual (MSSC (Zero), MRLS))                         {                             ATCM (0x02)                         }                         Else                         {                             ATCM (0x03)                         }                         Store (Zero, ABIE)                         ABPS (One)                         Sleep (0xC8)                         Return (0xFF)                     }                     Store (Zero, ABIE)                     ABPS (One)                     Sleep (0xC8)                     If (PWCC ())                     {                         PWCM (0x03)                         ATCM (0x02)                         Return (0xFF)                     }                     Else                     {                         PWCM (0x02)                         Sleep (0x0258)                         Store (0x0258, Local0)                         ABPS (One)                         Sleep (0xC8)                         While (LNot (ABPS (Zero)))                         {                             Sleep (0xC8)                             Add (Local0, 0xC8, Local0)                             If (LEqual (0x1388, Local0))                             {                                 ABPS (One)                                 Sleep (0xC8)                                 Return (0x03)                             }                         }                         PWCM (One)                         ABPS (One)                         Sleep (0xC8)                         Store (One, ABIE)                         Return (0xFF)                     }                 }                 If (PFDS (Zero))                 {                     PFDS (One)                     PWSL (Zero)                     PWCM (0x03)                     ATCM (One)                     Store (One, LDIS)                     Return (0x03)                 }                 If (MSCS (Zero))                 {                     MSCS (One)                     If (LEqual (MSSC (Zero), MRLS))                     {                         If (PRDS (Zero))                         {                             ATCM (0x03)                             PWCM (0x02)                             Sleep (0x0258)                             Store (0x0258, Local0)                             ABPS (One)                             While (LNot (ABPS (Zero)))                             {                                 Sleep (0xC8)                                 Add (Local0, 0xC8, Local0)                                 If (LEqual (0x1388, Local0))                                 {                                     Store (One, ABIE)                                     ATCM (0x03)                                     Store (Zero, LDIS)                                     PWSL (One)                                     Sleep (0x01F4)                                     If (LNot (PFDS (Zero)))                                     {                                         PWCM (One)                                         Store (Zero, Local1)                                         Store (One, ABIE)                                     }                                     Else                                     {                                         PWSL (Zero)                                         PWCM (0x03)                                         ATCM (One)                                         Store (One, LDIS)                                         Store (0x03, Local1)                                     }                                     ABPS (One)                                     Sleep (0xC8)                                     Return (Local1)                                 }                             }                             ABPS (One)                             Sleep (0xC8)                             PWSL (Zero)                             PWCM (0x03)                             ATCM (0x02)                             Store (One, LDIS)                             Return (0xFF)                         }                         PWSL (Zero)                         PWCM (0x03)                         ATCM (0x02)                         Store (One, LDIS)                         Return (0xFF)                     }                     Else                     {                         If (PRDS (Zero))                         {                             ATCM (0x02)                             If (LNot (PWCC ()))                             {                                 PWSL (Zero)                                 PWCM (0x03)                                 Store (One, LDIS)                                 Return (0x03)                             }                             Else                             {                                 Return (0xFF)                             }                         }                         ATCM (0x03)                         Return (0xFF)                     }                 }                 If (PDCS (Zero))                 {                     PDCS (One)                     If (LNot (PRDS (Zero)))                     {                         PWSL (Zero)                         PWCM (0x03)                         If (LEqual (MSSC (Zero), MRLS))                         {                             ATCM (0x02)                         }                         Else                         {                             ATCM (0x03)                         }                         Store (One, LDIS)                         Return (0xFF)                     }                     Else                     {                         Store (Zero, LDIS)                         PWSL (One)                         Sleep (0x01F4)                         If (LNot (PFDS (Zero)))                         {                             PWCM (One)                             Store (Zero, Local1)                             Store (One, ABIE)                             ATCM (0x03)                         }                         Else                         {                             PWSL (Zero)                             PWCM (0x03)                             ATCM (One)                             Store (One, LDIS)                             Store (0x03, Local1)                         }                         ABPS (One)                         Sleep (0xC8)                         Return (Local1)                     }                 }                 Return (0xFF)             }             Method (SNUM, 0, Serialized)             {                 Store (PSNM, Local0)                 Return (Local0)             }             Method (_SUN, 0, NotSerialized)  // _SUN: Slot User Number             {                 Return (SNUM ())             }             Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table             {                 If (PICM)                 {                     Return (AG12)                 }                 Return (PG12)             }             Device (UPSB)             {                 Name (_ADR, Zero)  // _ADR: Address                 OperationRegion (A1E0, PCI_Config, Zero, 0x40)                 Field (A1E0, ByteAcc, NoLock, Preserve)                 {                     AVND,   32,                     BMIE,   3,                     Offset (0x18),                     PRIB,   8,                     SECB,   8,                     SUBB,   8,                     Offset (0x1E),                         ,   13,                     MABT,   1                 }                 OperationRegion (A1E1, PCI_Config, 0xC0, 0x40)                 Field (A1E1, ByteAcc, NoLock, Preserve)                 {                     Offset (0x01),                     Offset (0x02),                     Offset (0x04),                     Offset (0x08),                     Offset (0x0A),                         ,   5,                     TPEN,   1,                     Offset (0x0C),                     SSPD,   4,                         ,   16,                     LACR,   1,                     Offset (0x10),                         ,   4,                     LDIS,   1,                     LRTN,   1,                     Offset (0x12),                     CSPD,   4,                     CWDT,   6,                         ,   1,                     LTRN,   1,                         ,   1,                     LACT,   1,                     Offset (0x14),                     Offset (0x30),                     TSPD,   4                 }                 OperationRegion (A1E2, PCI_Config, 0x80, 0x08)                 Field (A1E2, ByteAcc, NoLock, Preserve)                 {                     Offset (0x01),                     Offset (0x02),                     Offset (0x04),                     PSTA,   2                 }                 Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                 {                     Return (SECB)                 }                 Method (_STA, 0, NotSerialized)  // _STA: Status                 {                     Return (0x0F)                 }                 Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                 {                     Return (One)                 }                 Device (DSB0)                 {                     Name (_ADR, Zero)  // _ADR: Address                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                     Field (A1E0, ByteAcc, NoLock, Preserve)                     {                         AVND,   32,                         BMIE,   3,                         Offset (0x18),                         PRIB,   8,                         SECB,   8,                         SUBB,   8,                         Offset (0x1E),                             ,   13,                         MABT,   1                     }                     OperationRegion (A1E1, PCI_Config, 0xC0, 0x40)                     Field (A1E1, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         Offset (0x08),                         Offset (0x0A),                             ,   5,                         TPEN,   1,                         Offset (0x0C),                         SSPD,   4,                             ,   16,                         LACR,   1,                         Offset (0x10),                             ,   4,                         LDIS,   1,                         LRTN,   1,                         Offset (0x12),                         CSPD,   4,                         CWDT,   6,                             ,   1,                         LTRN,   1,                             ,   1,                         LACT,   1,                         Offset (0x14),                         Offset (0x30),                         TSPD,   4                     }                     OperationRegion (A1E2, PCI_Config, 0x80, 0x08)                     Field (A1E2, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         PSTA,   2                     }                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                     {                         Return (SECB)                     }                     Method (_STA, 0, NotSerialized)  // _STA: Status                     {                         Return (0x0F)                     }                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                     {                         Return (One)                     }                     Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                     {                         If (LNot (Arg2))                         {                             Return (Buffer (One)                             {                                  0x03                                            })                         }                         Return (Package (0x02)                         {                             "PCIHotplugCapable",                             One                         })                     }                     Device (NHI0)                     {                         Name (_ADR, Zero)  // _ADR: Address                         Name (_STR, Unicode ("Thunderbolt"))  // _STR: Description String                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                         {                             Return (Zero)                         }                         OperationRegion (A1E0, PCI_Config, Zero, 0x40)                         Field (A1E0, ByteAcc, NoLock, Preserve)                         {                             AVND,   32,                             BMIE,   3,                             Offset (0x18),                             PRIB,   8,                             SECB,   8,                             SUBB,   8,                             Offset (0x1E),                                 ,   13,                             MABT,   1                         }                         Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                         {                             If (LEqual (Arg2, Zero))                             {                                 Return (Buffer (One)                                 {                                      0x03                                                })                             }                             Store (Package (0x13)                                 {                                     "AAPL,slot-name",                                     Buffer (0x07)                                     {                                         "Slot-4"                                     },                                     "built-in",                                     Buffer (One)                                     {                                          0x00                                                    },                                     "device_type",                                     Buffer (0x19)                                     {                                         "Thunderbolt 3 Controller"                                     },                                     "model",                                     Buffer (0x20)                                     {                                         "Intel DSL6540 Thunderbolt 3 NHI"                                     },                                     "name",                                     Buffer (0x25)                                     {                                         "Intel DSL6540 Thunderbolt Controller"                                     },                                     "pathcr",                                     Buffer (One)                                     {                                         /* 0000 */  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0008 */  0x00, 0x00, 0x07, 0x00, 0x10, 0x00, 0x10, 0x00,                                         /* 0010 */  0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0018 */  0x00, 0x00, 0x07, 0x00, 0x10, 0x00, 0x10, 0x00,                                         /* 0020 */  0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00,                                         /* 0028 */  0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0030 */  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0038 */  0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00,                                         /* 0040 */  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0048 */  0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x01, 0x00                                     },                                     "ThunderboltDROM",                                     Buffer (One)                                     {                                         /* 0000 */  0x6D, 0x01, 0xC5, 0x49, 0xD5, 0x3E, 0x21, 0x01,                                         /* 0008 */  0x00, 0x04, 0xCE, 0x8D, 0x61, 0x01, 0x5E, 0x00,                                         /* 0010 */  0x01, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x08, 0x81,                                         /* 0018 */  0x81, 0x02, 0x81, 0x00, 0x00, 0x00, 0x08, 0x82,                                         /* 0020 */  0x91, 0x01, 0x81, 0x00, 0x00, 0x00, 0x08, 0x83,                                         /* 0028 */  0x81, 0x04, 0x81, 0x01, 0x00, 0x00, 0x08, 0x84,                                         /* 0030 */  0x91, 0x03, 0x81, 0x01, 0x00, 0x00, 0x08, 0x85,                                         /* 0038 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x86,                                         /* 0040 */  0x20, 0x03, 0x87, 0x80, 0x02, 0xC8, 0x05, 0x89,                                         /* 0048 */  0x50, 0x00, 0x00, 0x05, 0x8A, 0x50, 0x00, 0x00,                                         /* 0050 */  0x02, 0xCB, 0x0D, 0x01, 0x41, 0x70, 0x70, 0x6C,                                         /* 0058 */  0x65, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x00, 0x0C,                                         /* 0060 */  0x02, 0x4D, 0x61, 0x63, 0x69, 0x6E, 0x74, 0x6F,                                         /* 0068 */  0x73, 0x68, 0x00                                        },                                     "ThunderboltConfig",                                     Buffer (One)                                     {                                         /* 0000 */  0x01, 0x02, 0xFF, 0xFF, 0x04, 0x00, 0x03, 0x01,                                         /* 0008 */  0x01, 0x00, 0x04, 0x00, 0x05, 0x01, 0x02, 0x00,                                         /* 0010 */  0x03, 0x00, 0x03, 0x01, 0x01, 0x00, 0x01, 0x00,                                         /* 0018 */  0x03, 0x01, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00                                     },                                     "power-save",                                     One,                                     Buffer (One)                                     {                                          0x00                                                    }                                 }, Local0)                             DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                             Return (Local0)                         }                         Return (Zero)                     }                 }                 Device (DSB1)                 {                     Name (_ADR, 0x00010000)  // _ADR: Address                     Name (_SUN, 0x04)  // _SUN: Slot User Number                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                     Field (A1E0, ByteAcc, NoLock, Preserve)                     {                         AVND,   32,                         BMIE,   3,                         Offset (0x18),                         PRIB,   8,                         SECB,   8,                         SUBB,   8,                         Offset (0x1E),                             ,   13,                         MABT,   1                     }                     OperationRegion (A1E1, PCI_Config, 0xC0, 0x40)                     Field (A1E1, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         Offset (0x08),                         Offset (0x0A),                             ,   5,                         TPEN,   1,                         Offset (0x0C),                         SSPD,   4,                             ,   16,                         LACR,   1,                         Offset (0x10),                             ,   4,                         LDIS,   1,                         LRTN,   1,                         Offset (0x12),                         CSPD,   4,                         CWDT,   6,                             ,   1,                         LTRN,   1,                             ,   1,                         LACT,   1,                         Offset (0x14),                         Offset (0x30),                         TSPD,   4                     }                     OperationRegion (A1E2, PCI_Config, 0x80, 0x08)                     Field (A1E2, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         PSTA,   2                     }                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                     {                         Return (SECB)                     }                     Method (_STA, 0, NotSerialized)  // _STA: Status                     {                         Return (0x0F)                     }                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                     {                         Return (Zero)                     }                     Device (UPS0)                     {                         Name (_ADR, Zero)  // _ADR: Address                         OperationRegion (ARE0, PCI_Config, Zero, 0x04)                         Field (ARE0, ByteAcc, NoLock, Preserve)                         {                             AVND,   16                         }                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                         {                             If (OSDW ())                             {                                 Return (One)                             }                             Return (Zero)                         }                         Device (DSB0)                         {                             Name (_ADR, Zero)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1,                                 Offset (0x3E),                                     ,   6,                                 SBRS,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                             Device (DEV0)                             {                                 Name (_ADR, Zero)  // _ADR: Address                                 Method (_STA, 0, NotSerialized)  // _STA: Status                                 {                                     Return (0x0F)                                 }                                 Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                 {                                     If (OSDW ())                                     {                                         Return (One)                                     }                                     Return (Zero)                                 }                             }                         }                         Device (DSB3)                         {                             Name (_ADR, 0x00030000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                             Device (UPS0)                             {                                 Name (_ADR, Zero)  // _ADR: Address                                 OperationRegion (ARE0, PCI_Config, Zero, 0x04)                                 Field (ARE0, ByteAcc, NoLock, Preserve)                                 {                                     AVND,   16                                 }                                 Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                 {                                     If (OSDW ())                                     {                                         Return (One)                                     }                                     Return (Zero)                                 }                                 Device (DSB0)                                 {                                     Name (_ADR, Zero)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1,                                         Offset (0x3E),                                             ,   6,                                         SBRS,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                     }                                 }                                 Device (DSB3)                                 {                                     Name (_ADR, 0x00030000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB4)                                 {                                     Name (_ADR, 0x00040000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB5)                                 {                                     Name (_ADR, 0x00050000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                                 Device (DSB6)                                 {                                     Name (_ADR, 0x00060000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                             }                         }                         Device (DSB4)                         {                             Name (_ADR, 0x00040000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                             Device (UPS0)                             {                                 Name (_ADR, Zero)  // _ADR: Address                                 OperationRegion (ARE0, PCI_Config, Zero, 0x04)                                 Field (ARE0, ByteAcc, NoLock, Preserve)                                 {                                     AVND,   16                                 }                                 Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                 {                                     If (OSDW ())                                     {                                         Return (One)                                     }                                     Return (Zero)                                 }                                 Device (DSB0)                                 {                                     Name (_ADR, Zero)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1,                                         Offset (0x3E),                                             ,   6,                                         SBRS,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB3)                                 {                                     Name (_ADR, 0x00030000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB4)                                 {                                     Name (_ADR, 0x00040000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB5)                                 {                                     Name (_ADR, 0x00050000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                                 Device (DSB6)                                 {                                     Name (_ADR, 0x00060000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                             }                         }                         Device (DSB5)                         {                             Name (_ADR, 0x00050000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                         }                         Device (DSB6)                         {                             Name (_ADR, 0x00060000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                         }                     }                 }                 Device (DSB2)                 {                     Name (_ADR, 0x00020000)  // _ADR: Address                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                     Field (A1E0, ByteAcc, NoLock, Preserve)                     {                         AVND,   32,                         BMIE,   3,                         Offset (0x18),                         PRIB,   8,                         SECB,   8,                         SUBB,   8,                         Offset (0x1E),                             ,   13,                         MABT,   1                     }                     OperationRegion (A1E1, PCI_Config, 0xC0, 0x40)                     Field (A1E1, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         Offset (0x08),                         Offset (0x0A),                             ,   5,                         TPEN,   1,                         Offset (0x0C),                         SSPD,   4,                             ,   16,                         LACR,   1,                         Offset (0x10),                             ,   4,                         LDIS,   1,                         LRTN,   1,                         Offset (0x12),                         CSPD,   4,                         CWDT,   6,                             ,   1,                         LTRN,   1,                             ,   1,                         LACT,   1,                         Offset (0x14),                         Offset (0x30),                         TSPD,   4                     }                     OperationRegion (A1E2, PCI_Config, 0x80, 0x08)                     Field (A1E2, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         PSTA,   2                     }                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                     {                         Return (SECB)                     }                     Method (_STA, 0, NotSerialized)  // _STA: Status                     {                         Return (0x0F)                     }                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                     {                         Return (Zero)                     }                     Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                     {                         If (LNot (Arg2))                         {                             Return (Buffer (One)                             {                                  0x03                                            })                         }                         Return (Package (0x02)                         {                             "PCIHotplugCapable",                             Zero                         })                     }                     Device (XHC5)                     {                         Name (_ADR, Zero)  // _ADR: Address                         Name (SDPC, Zero)                         OperationRegion (A1E0, PCI_Config, Zero, 0x40)                         Field (A1E0, ByteAcc, NoLock, Preserve)                         {                             AVND,   32,                             BMIE,   3,                             Offset (0x18),                             PRIB,   8,                             SECB,   8,                             SUBB,   8,                             Offset (0x1E),                                 ,   13,                             MABT,   1                         }                         Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                         {                             If (LEqual (Arg2, Zero))                             {                                 Return (Buffer (One)                                 {                                      0x03                                                })                             }                             Return (Package (0x10)                             {                                 "AAPL,slot-name",                                 Buffer (0x07)                                 {                                     "Slot-4"                                 },                                 "built-in",                                 Buffer (One)                                 {                                      0x00                                                },                                 "model",                                 Buffer (0x16)                                 {                                     "Intel DSL6540 USB 3.1"                                 },                                 "name",                                 Buffer (0x1D)                                 {                                     "Intel DSL6540 XHC Controller"                                 },                                 "device-id",                                 Buffer (0x04)                                 {                                      0xB6, 0x15, 0x00, 0x00                                 },                                 "USBBusNumber",                                 Zero,                                 "AAPL,XHCI-clock-id",                                 One,                                 "UsbCompanionControllerPresent",                                 One                             })                         }                         Name (HS, Package (0x01)                         {                             "XHC1"                         })                         Name (FS, Package (0x01)                         {                             "XHC1"                         })                         Name (LS, Package (0x01)                         {                             "XHC1"                         })                         Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake                         {                             Return (Package (0x02)                             {                                 0x6D,                                 Zero                             })                         }                         Device (RHUB)                         {                             Name (_ADR, Zero)  // _ADR: Address                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 Return (Zero)                             }                             Device (SSP1)                             {                                 Name (_ADR, One)  // _ADR: Address                                 Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities                                 {                                     0xFF,                                     0x09,                                     Zero,                                     Zero                                 })                                 Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device                                 {                                     Buffer (0x10)                                     {                                         /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00                                     }                                 })                                 Name (HS, Package (0x02)                                 {                                     "XHC1",                                     0x05                                 })                                 Name (FS, Package (0x02)                                 {                                     "XHC1",                                     0x05                                 })                                 Name (LS, Package (0x02)                                 {                                     "XHC1",                                     0x05                                 })                                 Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                                 {                                     If (LEqual (Arg2, Zero))                                     {                                         Return (Buffer (One)                                         {                                              0x03                                                        })                                     }                                     Return (Package (0x08)                                     {                                         "UsbCPortNumber",                                         0x03,                                         "kUSBWakePortCurrentLimit",                                         0x0BB8,                                         "kUSBSleepPortCurrentLimit",                                         0x0BB8,                                         "UsbCompanionPortPresent",                                         One                                     })                                 }                             }                             Device (SSP2)                             {                                 Name (_ADR, 0x02)  // _ADR: Address                                 Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities                                 {                                     0xFF,                                     0x09,                                     Zero,                                     Zero                                 })                                 Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device                                 {                                     Buffer (0x10)                                     {                                         /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00                                     }                                 })                                 Name (HS, Package (0x02)                                 {                                     "XHC1",                                     0x06                                 })                                 Name (FS, Package (0x02)                                 {                                     "XHC1",                                     0x06                                 })                                 Name (LS, Package (0x02)                                 {                                     "XHC1",                                     0x06                                 })                                 Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                                 {                                     If (LEqual (Arg2, Zero))                                     {                                         Return (Buffer (One)                                         {                                              0x03                                                        })                                     }                                     Return (Package (0x08)                                     {                                         "UsbCPortNumber",                                         0x04,                                         "kUSBWakePortCurrentLimit",                                         0x0BB8,                                         "kUSBSleepPortCurrentLimit",                                         0x0BB8,                                         "UsbCompanionPortPresent",                                         One                                     })                                 }                             }                             Device (HS01)                             {                                 Name (_ADR, 0x03)  // _ADR: Address                                 Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities                                 {                                     0xFF,                                     0x09,                                     Zero,                                     Zero                                 })                                 Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device                                 {                                     Buffer (0x10)                                     {                                         /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00                                     }                                 })                             }                             Device (HS02)                             {                                 Name (_ADR, 0x04)  // _ADR: Address                                 Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities                                 {                                     0xFF,                                     0x09,                                     Zero,                                     Zero                                 })                                 Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device                                 {                                     Buffer (0x10)                                     {                                         /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                         /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00                                     }                                 })                             }                         }                     }                 }                 Device (DSB4)                 {                     Name (_ADR, 0x00040000)  // _ADR: Address                     Name (_SUN, 0x02)  // _SUN: Slot User Number                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                     Field (A1E0, ByteAcc, NoLock, Preserve)                     {                         AVND,   32,                         BMIE,   3,                         Offset (0x18),                         PRIB,   8,                         SECB,   8,                         SUBB,   8,                         Offset (0x1E),                             ,   13,                         MABT,   1                     }                     OperationRegion (A1E1, PCI_Config, 0xC0, 0x40)                     Field (A1E1, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         Offset (0x08),                         Offset (0x0A),                             ,   5,                         TPEN,   1,                         Offset (0x0C),                         SSPD,   4,                             ,   16,                         LACR,   1,                         Offset (0x10),                             ,   4,                         LDIS,   1,                         LRTN,   1,                         Offset (0x12),                         CSPD,   4,                         CWDT,   6,                             ,   1,                         LTRN,   1,                             ,   1,                         LACT,   1,                         Offset (0x14),                         Offset (0x30),                         TSPD,   4                     }                     OperationRegion (A1E2, PCI_Config, 0x80, 0x08)                     Field (A1E2, ByteAcc, NoLock, Preserve)                     {                         Offset (0x01),                         Offset (0x02),                         Offset (0x04),                         PSTA,   2                     }                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                     {                         Return (SECB)                     }                     Method (_STA, 0, NotSerialized)  // _STA: Status                     {                         Return (0x0F)                     }                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                     {                         Return (Zero)                     }                     Device (UPS0)                     {                         Name (_ADR, Zero)  // _ADR: Address                         OperationRegion (ARE0, PCI_Config, Zero, 0x04)                         Field (ARE0, ByteAcc, NoLock, Preserve)                         {                             AVND,   16                         }                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                         {                             If (OSDW ())                             {                                 Return (One)                             }                             Return (Zero)                         }                         Device (DSB0)                         {                             Name (_ADR, Zero)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1,                                 Offset (0x3E),                                     ,   6,                                 SBRS,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                             Device (DEV0)                             {                                 Name (_ADR, Zero)  // _ADR: Address                                 Method (_STA, 0, NotSerialized)  // _STA: Status                                 {                                     Return (0x0F)                                 }                                 Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                 {                                     If (OSDW ())                                     {                                         Return (One)                                     }                                     Return (Zero)                                 }                             }                         }                         Device (DSB3)                         {                             Name (_ADR, 0x00030000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                             Device (UPS0)                             {                                 Name (_ADR, Zero)  // _ADR: Address                                 OperationRegion (ARE0, PCI_Config, Zero, 0x04)                                 Field (ARE0, ByteAcc, NoLock, Preserve)                                 {                                     AVND,   16                                 }                                 Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                 {                                     If (OSDW ())                                     {                                         Return (One)                                     }                                     Return (Zero)                                 }                                 Device (DSB0)                                 {                                     Name (_ADR, Zero)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1,                                         Offset (0x3E),                                             ,   6,                                         SBRS,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                     }                                 }                                 Device (DSB3)                                 {                                     Name (_ADR, 0x00030000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB4)                                 {                                     Name (_ADR, 0x00040000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB5)                                 {                                     Name (_ADR, 0x00050000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                                 Device (DSB6)                                 {                                     Name (_ADR, 0x00060000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                             }                         }                         Device (DSB4)                         {                             Name (_ADR, 0x00040000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                             Device (UPS0)                             {                                 Name (_ADR, Zero)  // _ADR: Address                                 OperationRegion (ARE0, PCI_Config, Zero, 0x04)                                 Field (ARE0, ByteAcc, NoLock, Preserve)                                 {                                     AVND,   16                                 }                                 Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                 {                                     If (OSDW ())                                     {                                         Return (One)                                     }                                     Return (Zero)                                 }                                 Device (DSB0)                                 {                                     Name (_ADR, Zero)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1,                                         Offset (0x3E),                                             ,   6,                                         SBRS,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB3)                                 {                                     Name (_ADR, 0x00030000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB4)                                 {                                     Name (_ADR, 0x00040000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                     Device (DEV0)                                     {                                         Name (_ADR, Zero)  // _ADR: Address                                         Method (_STA, 0, NotSerialized)  // _STA: Status                                         {                                             Return (0x0F)                                         }                                         Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                         {                                             If (OSDW ())                                             {                                                 Return (One)                                             }                                             Return (Zero)                                         }                                     }                                 }                                 Device (DSB5)                                 {                                     Name (_ADR, 0x00050000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                                 Device (DSB6)                                 {                                     Name (_ADR, 0x00060000)  // _ADR: Address                                     OperationRegion (A1E0, PCI_Config, Zero, 0x40)                                     Field (A1E0, ByteAcc, NoLock, Preserve)                                     {                                         AVND,   32,                                         BMIE,   3,                                         Offset (0x18),                                         PRIB,   8,                                         SECB,   8,                                         SUBB,   8,                                         Offset (0x1E),                                             ,   13,                                         MABT,   1                                     }                                     Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                                     {                                         Return (SECB)                                     }                                     Method (_STA, 0, NotSerialized)  // _STA: Status                                     {                                         Return (0x0F)                                     }                                     Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                                     {                                         If (OSDW ())                                         {                                             Return (One)                                         }                                         Return (Zero)                                     }                                 }                             }                         }                         Device (DSB5)                         {                             Name (_ADR, 0x00050000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                         }                         Device (DSB6)                         {                             Name (_ADR, 0x00060000)  // _ADR: Address                             OperationRegion (A1E0, PCI_Config, Zero, 0x40)                             Field (A1E0, ByteAcc, NoLock, Preserve)                             {                                 AVND,   32,                                 BMIE,   3,                                 Offset (0x18),                                 PRIB,   8,                                 SECB,   8,                                 SUBB,   8,                                 Offset (0x1E),                                     ,   13,                                 MABT,   1                             }                             Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number                             {                                 Return (SECB)                             }                             Method (_STA, 0, NotSerialized)  // _STA: Status                             {                                 Return (0x0F)                             }                             Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status                             {                                 If (OSDW ())                                 {                                     Return (One)                                 }                                 Return (Zero)                             }                         }                     }                 }                 Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                 {                     If (LNot (Arg2))                     {                         Return (Buffer (One)                         {                              0x03                                        })                     }                     Return (Package (0x02)                     {                         "PCI-Thunderbolt",                         One                     })                 }             }         }     }  
      Thanks to @nmano we now also have an additional SSDT, i.e SSDT-TB3-L02-BR1X.aml, which fixes further TB ACPI dependencies and which should be implemented in /EFI/Clover/ACPI/patches. This SSDT will permanently load the TB NHI0 and XHC USB PCI drivers, even in case that no TB devices are connected. Apparently it also resolves some TB sleep/wake issues.   SSDT-TB3-L02-BR1X.aml can be substituted by a simple Clover DSDT patch to be included in the config plist:   Comment:  BR1A BR1X THB patch ©N.Mano Find: 42523141 48303030 60865C2F 045F5342 5F504349 30425231 41483030 3160865C 2F045F53 425F5043 49304252 31414830 30326086 5C2F045F 53425F50 43493042 52314148 30303360 865C2F04 5F53425F 50434930 42523141 48303034 60865C2F 045F5342 5F504349 30425231 41483030 3560865C 2F045F53 425F5043 49304252 31414830 30366086 5C Replace: 42523158 55505342 60865C2F 055F5342 5F504349 30425231 58555053 42445342 3060865C 2F055F53 425F5043 49304252 31585550 53424453 42316086 5C2F055F 53425F50 43493042 52315855 50534244 53423260 865C2F05 5F53425F 50434930 42523158 55505342 44534233 60865C2F 055F5342 5F504349 30425231 58555053 42445342 3460862A 51  
      Note that both TB-SSDTs are mainboard and slot-dependend! With the TBEX 3 or Alpine Ridge in a PCIe slot different from PCIe Slot-4, one needs to adopt both SSDT and DSDT patch in concordance with IOREG. All Gigabyte users with the TBEX 3 or Alpine Ridge in PCIe Slot-4 can use SSDT-X299-TB3-iMacPro-Gigabyte.aml and SSDT-TB3-L02-PR2X.aml instead.      E.10) iMac Pro Boot Splash Screen Cosmetics   Based on the ideas and instructions of @Matthew82, I achieved an iMacPro ASUS Boot Splash Screen     by means of the following procedure:   1.) Installation of the BREW distribution (if not already performed in Section B.1):   a.) Open a terminal and change to "bash" shell. bash  
      b.) Now enter the following "bash" terminal command and follow the standard BREW installation instructions: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  
      2.) After the successful installation of the BREW distribution, we have to implement the QT5 distribution, again by using a "bash" terminal shell. If not already performed in Section B1.), just enter the following "bash" terminal commands: brew install qt5 brew link qt5 --force  
      3.) After successfully implementing BREW and QT5 and if not already performed in Section B.1), we can now download the most actual CodeRush UEFIPatch distribution from Github to our home directory with the following terminal command: git clone https://github.com/LongSoft/UEFITool  
      4.) Now compile the UEFI Tool distribution with the following terminal commands: cd /UEFITools/ qmake uefitool.pro make  
      5.) Download and unzip iMacPro.raw to your Desktop.   6.) Now launch by UEFITool by clicking on the newly compiled UEFITool.app in the UEFITools Folder in your home directory.   a.) Select "File" -> "Open image file" and load your patched or unpatched BIOS Firmware distribution.   Select "Search.." in the UEFITool "Edit" Menu and perform a "GUID" search of "7BB28B99-61BB-11D5-9A5D-0090273FC14D" with "Header only"...     You will receive a message "GUID pattern "7BB28B99-61BB-11D5-9A5D-0090273FC14D" found as .... in 7BB28B99-....". Double click on that message and search for the "Raw section" accompanying the "7BB28B99-...." entry, which indeed is the Boot Image, which you can easily verify by extracting the raw section body (right-click on "Raw section" and select "Extract body") to your Desktop and by subsequently opening the extracted raw-file directly with Apple's "Preview.app" (right-click an the raw file and select "Open with.." -> Preview.app).   b.) To exchange the default original ASUS Boot Logo image file stored in "Raw Section" by the iMacPro.raw image file that you previously downloaded to your Desktop,  right-click again on "Raw section", select this time "Replace body"  and select the iMacPro.raw image file on your Desktop.     Note that the actual image dimension of iMacPro.raw (2131pix x 1457pix) was adopted for its use on my 38" LG 38UC99. For monitors with reduce screen resolution, iMacPro.raw might have to be adopted to an image dimension that suites your particular screen resolution, before its upload to "Raw section". If the Boot Logo image dimension is too big for your Monitor's screen resolution, you might just end up with a black screen during the BIOS initialisation at boot.   To do so, select in the Preview.app Menu -> "Tools" -> "Adjust Size". Change the image dimension and save the modified image with "File" -> "Export". In the "Export menu" press "Save", after selecting "JPEG" under "Format" , after choosing "Desktop" as the place to store the image, and after entering the new file name, which has to end with ".jpg".   Double-check by right-clicking on the resulting jpg image file and selecting "Get Info" that its file size does no exceed 200KB by far. If the latter would be the case, you would not be able to save the modified BIOS Firware file subsequently.   Finally just rename your new "XXXX.jpg" file to "XXXX.raw....   I guess, that by following the procedure detailed above, it is obvious that iMacPro.raw also can be substituted by any other image of your personal choice. Just be aware that it's background colour should be black (ecstatic reason for a its nice integration within the else black ASUS BIOS Boot Screen)   c.)  After replacing "Raw Section" with iMacPro.raw or the XXX.raw image of your choice, save your modified BIOS Firmware File with the Option "File" -> "Save Image File..."   d.) Copy your modified BIOS Firmware file to a USB3.0 Flash Drive, formatted with FAT32.   e.) Reboot, enter the Mainboard BIOS and save your BIOS settings to the USB Flash Drive   f.) Flash your mainboard BIOS with the modified BIOS Firmware   g.) Renter the Mainboard BIOS and restore your BIOS settings from the USB Flash Drive   h.) Save your restored BIOS settings with (F7) and (F10), reboot and you are done.   Just don't forget to set BIOS Setting "Boot Logo Display" to "Auto", when using this new approach. Any different setting might result in a black screen during BIOS initialisation.     E.11) iMac Pro Desktop Background cosmetics   It might be nice to equip your iMac Pro X299 also with the adequate iMac Pro Desktop Background.   1.) Download, unzip and copy imac-pro-wallpaper.jpg.zip 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, it seems that we achieved a major step forward in properly monitoring Skylake-X/X299 Hardware with iStatMenus. iStatMenus now correctly interfaces with the HWSensor and FakeSMC kext distribution provided by @interferenc.   The most actual iStatMenus v6.1 distribution can be assessed at https://bjango.com/mac/istatmenus/   The most actual HWSensor and FakeSMC kext distribution of @interferenc can be assessed at https://github.com/interferenc/HWSensors   To compile the the HWSensor and FakeSMC kexts of @interferenc, perform the individual steps detailed below:   1.) git clone https://github.com/interferenc/HWSensors 2.)
      cp HWSensors ~/Desktop/ 3.)
      cd ~/Desktop/HWSensors 4.)
      xcodebuild -project Versioning\ And\ Distribution.xcodeproj/ 5.)
      xcodebuild -project HWMonitor.xcodeproj/ 6.)
      xcodebuild -project HWSensors.xcodeproj -alltargets  
      Subsequently, one finds the all compiled binaries in ~/Desktop/HWSensors/Binaries/.   Note that all compiled kext binaries are once more attached towards the bottom of this originating thread (guide). Just download and unzip HW-Sensors-IF.zip and copy all kexts to /EFI/Clover/kexts/Other/. Note that this pre-compiled binary package already implements a modified GPU Sensor kext of @Kozlek, which should also account for Polaris GPUs.   Many thanks to both @interferenc and @Bjango for their awesome and extensive contributions and brilliant work!   Skylake-X/X299 iStatMenus Hardware Sensor Data:     Skylake-X CPU Thread Utilisation Graphs:     To change from CPU core to thread utilisation monitoring, uncheck "Hide Hyper-Threading cores" in Section "CPU & GPU" of iStatMenus Preferences.     Temperature unites can be adjusted between Celsius, Fahrenheit and Kelvin in Section "Sensors" of iStatMenus Preferences.     F.) Benchmarking   F.1) Sylake-X Intel I9-7980XE (4.8GHz) CPU Benchmarking   Idle Temperature Issues (50 deg C @1.2 GHz CPU Idle).. Benchmarks posponed until next ambient temperature drop...    F.2) Gigabyte AORUS GTX 1080 Ti Waterforce EB 11GB Extreme Edition Benchmarking   Yet to be implemented once a macOS 10.14 Mojave Nvidia Web Driver has been released.    G.) Summary and Conclusion   Already under macOS 10.13 High Sierra, Syklake-X/X299 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 Skylake-X/X299 potential!   High-end builds based on extremely novel Skylake-X/X299 technology have found manifold application, not only in science and research at universities or research institutions, engineering facilities, or medical labs, etc... Skylake-X processors with up to 18 cores (36 threads) and turbo frequencies up to 4.8 GHz have made X299 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. Skylake-X/X299-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 Skylake-X 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 Skylake-X/X299 Systems perform absolutely stable on a 24/7/365 basis.   I am a scientist, expert in solar physics, space weather forecast and related telescope/instrument/space-mission development. In the frame of my scientific research, I developed parallelized image reconstruction, spectral line inversion and numerical modeling algorithms/applications, which require tremendous parallelized calculation power, RAM memory and storage capacities to reduce, analyze and interpret extensive and pioneering scientific ground-based or space-born observational data sets. This basically was also the professional motivation for developing innovative iMac Pro macOS Builds iSPOR-S (imaging Spectropolarimetric Parallel Organized Reconstruction Servers running iSPOR-DP, the Imaging Spectropolarimetric Parallel Organized Reconstruction Data Pipeline software package for the GREGOR Fabry-Pérot Interferometer, located at the 1.5m GREGOR Solar Telescope (Europe's largest solar telescope) on Tenerife, Canary Islands, Spain) as well as for the entire related iMac Desktop Guide Development, which naturally shall also be of benefit for others.  Anybody interested can find more details on my personal webpage.  
    • By ErmaC
      Please be advised that this is not a discussion topic.
       

      This topic is a "direct" line of communication between the Developers of Clover (Clover Team).
      Unless a Developer/Coder asks for more information, all the critical information of a post should be contained in the subject and first post.
      Every post will be responded to in some fashion before being locked.
       
       
       
       

      Invalid Posts
      Since we are strictly interested in issue reports on this topic, the following post/reply are likely to be deleted immediately:
      1. Discussion topic aka OFF-TOPIC (What do you all think?)
      2. Invalid issue reports
      3. Feedback / Suggestion threads.
      4. Posts requesting information about the bootloader.
      5. Posts made on other forums (Don't spam.)
      6. "Accomplishment" threads, threads to advertise screenshots unrelated to bug reports.
      7. Posts requesting status updates on existing issues.
       
       
×