Contribute
Register

How to build your own iMac Pro [Successful Build/Extended Guide]

Status
Not open for further replies.
Joined
Aug 12, 2011
Messages
80
Motherboard
ASUS Rampage VI Extreme
CPU
Core i9 7900X
Graphics
ASUS ROG Strix 1080Ti
Mac
  1. iMac
Mobile Phone
  1. Android
  2. iOS
I am sure that all skilled and active people do not feel offended, attacked or addressed by my straight words above.. ;)

All people just taking profit of this guide and thread won't do that neither.. ;)

All others who feel addressed or attacked by my latter comments might know themselves best why they do so..

A pleasant evening and night to all of you!

Have a sound sleep,

KGP


Sounds like some false Socrates garble but yea I hear ya lol. Again negativity doesn’t spew from my mouth and only yours. How can a nice handful of users be wrong about your personality? Funny I stood up for your initially lfmaoooooo.

Keep up the good work man. Some of your “friends” should have a word with you perhaps in private to make yourself aware of people like Myself who genuinely is tryin to help if anything to alleviate some user requests asked of you so that you could get some good rest.

And good morning to you tOo
 
Joined
Aug 31, 2017
Messages
197
Motherboard
Asus Prime X299 Deluxe
CPU
Intel I7 7820x
Graphics
Vega64 8GB Sapphire
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
I forgot to mention, but you saw editing of .. last .aml file (maybe you will remember for the future what we have to edit :p),
so now I happy to see that result :D Cool :)
This is what we wanted :headbang:
yes,I finally learned~~~~that is a very very great job~!
we did it ~!
that is so Cool~~!!!:headbang::headbang::headbang::headbang::headbang:
 
Joined
Sep 20, 2010
Messages
19
Motherboard
Asus Prime X299 Deluxe
CPU
i9-7940X 14-Core, 10.3.3
Graphics
Nvidia GTX 1080 ti, .106 drivers
Mac
  1. MacBook Air
  2. MacBook Pro
Mobile Phone
  1. iOS
Thanks again for this amazing and updated guide @kgp.

I have a working x299 for the last few months but decided to unlock the bios and update to iMacPro1,1. I compiled the patched BIOS but wasn't able to get the Flashback/USB update to work. I also couldn't get Flashback to work with the original BIOS .CAP file either. I had double checked my USB stick was FAT32 and also tried a different stick.

A bit of searching and trial and error and figured out that the USB can not have an EFI partition on it (GUID) It needs to be formatted with an MBR and only one single FAT32 partition. I booted into Windows and used Diskpart to fully format the USB stick but I'm sure there's a way in Terminal. It worked after that. Just in case it's helpful to anyone.


Yes, If you click on the top of the hierarchy disk, then you can format the Fat32 as MasterBoot Record, in disk utility on the mac, no need for windows to format fat32
 

Attachments

  • Screen Shot 2018-02-08 at 4.01.55 PM.png
    Screen Shot 2018-02-08 at 4.01.55 PM.png
    96.2 KB · Views: 158

kgp

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

seems that there is no further need for the "plugin-type" injector ssdt.aml..

The "plugin-type" injection apparently can be directly enabled within the config.plist by checking "PluginType" under "Generate Options" in Section "Acpi" of Clover Configurator.

plugin-type.png


You agree? Just checked on that and it seems to work well and as expected.

Cheers,

KGP
 
Joined
Aug 19, 2016
Messages
461
Motherboard
ASUS Prime X299 Deluxe
CPU
i9-7900X
Graphics
Vega 64
Mac
  1. iMac
  2. Mac Pro
Classic Mac
  1. iMac
  2. Power Mac
Mobile Phone
  1. iOS
@interferenc ,

seems that there is no further need for the "plugin-type" injector ssdt.aml..

The "plugin-type" injection apparently can be directly enabled within the config.plist by checking "PluginType" under "Generate Options" in Section "Acpi" of Clover Configurator.

View attachment 311969

You agree? Just checked on that and it seems to work well and as expected.

Cheers,

KGP

Hi @kgp!

I wanted to ask about that yesterday...

on the same time I finally installed IntelPG and found weird jumping of my CPU frequency,
but when I look on iStats CPU freq. is OK
so I'm not sure, but I feel that Intel power Gadget simply show only one thread action, not complete/total CPU work
so I feel that can be a bad kind of application for CPU freq. control/measurement...

Do you have the same effect?
or what you think about this... :)

Have a nice day! :D
 

kgp

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

I wanted to ask about that yesterday...

on the same time I finally installed IntelPG and found weird jumping of my CPU frequency,
but when I look on iStats CPU freq. is OK
so I'm not sure, but I feel that Intel power Gadget simply show only one thread action, not complete/total CPU work
so I feel that can be a bad kind of application for CPU freq. control/measurement...

Do you have the same effect?
or what you think about this... :)

Have a nice day! :D

IPG can show a strange mixture of threads, depending on your BIOS settings, especially if you don't use "CPU Core Ratio" to "Sync all Cores".. However I believe you can see best if the current IPG frequency graph refers to one thread, some threads or to all of them, by inspecting the IPG temperature, utlizitation and power consumption graphs in parallel..
 
Joined
May 31, 2016
Messages
993
Motherboard
Gigabyte Z490 Vision G
CPU
i9-10900K
Graphics
RX 5700 XT
Mac
  1. iMac
  2. MacBook
  3. MacBook Pro
  4. Mac mini
Classic Mac
  1. PowerBook
  2. Quadra
Mobile Phone
  1. iOS
How to successfully implement/adopt a PCI device implementation (ACPI Replacements/SSDT-X299-iMacPro.aml)

The example below is for the OSXWIFI PCIe Adaptor in PCIe Slot-3. Once you understand the logics and methodology, how to implement the OSXWIFI Airport PCIe device, you should be also able to perform a proper ACPI Replacement and SSDT-X299-iMacPro.aml implementation of the OSXWIFI Airport PCI device in any other PCIe slot different from Slot-3, but also the ACPI Replacement and SSDT-X299-iMacPro.aml implementation of any Bluetooth PCIe Adaptor or any other build-in or slot-specific PCI Device (like GPUs or onboard PCI controllers).

So lets start with the OSXWIFI PCIe Adaptor PCI implementation:

1.) Copy the SSDT-X299-iMacPro.aml to your Desktop and remove it from /EFI/Clover/ACPI/patched/. Start your system without the SSDT-X299-iMacPro.aml. You need to know the original OSX "Airport" PCI implementation in IOREG.

2.) After reboot, open the IOREG explorer and search for “Airport" (1. in the figure below)

View attachment 311297

3. IOREG will show you now where and how the PCI “Airport” driver "Airport_BrcmNIC" (2. in the figure above) is implemented:

It is important to take note of the exact ACPI path where "Airport_BrcmNIC" is child of (a., b., c. In the Figure above):

As you can see, with the OSXWIFI in PCIe Slot 3, the ACPI device patch is:

/PC03/BR3D/SLOC/

The PCI device SLOC, of which the “Airport” PCI driver "Airport_BrcmNIC" is child of, is assigned to /PC03/BR3D/

Note that with the OSXWIFI in a PCIe Slot different from PCIe Slot 3, the device path /PC03/BR3D/ and the Airport PCI Device name SLOC will differ!

With the OSXWifi in PCIe Slot 4, the ACPI device path might be /PC01/BR1A/ and the Airport PCI Device of which the “Airport” PCI Driver "Airport_BrcmNIC" is child of might be termed SL01.

Thus the entire Airport ACPI device path might be: /PC01/BR1A/SL01/ instead of /PC03/BR3D/SLOC/

So far so good...

4.) Following the iMac Pro PCI device name convention, the Airport PCI Device should not be termed SLOC but ARPT.

All users with the OSXWIFI in a PCIe Slot different from 3 have to open now the config.plist with Clover Configurator and adopt the SLOC -> ARPT ACPI Replacement.

View attachment 311299

Note that in case that the OSXWifi is in PCIe Slot 4, the correct ACPI Device Replacement might not be SLOC -> ARPT but
SL01 -> ARPT, following the ACPI Device path we investigated in 3.) above.

How to take account for that?

First, change in the ACPI Replacement (1. in the figure above) the “Comment” entry from SLOC -> ARPT to SL01 -> ARPT.

Then you also have to adopt the Find* and Replace* Hex numbers in the ACPI replacement accordingly.

Therefore you open the HEX converter GUI of Clover Configurator (2. In the figure above).

Once in the Hex Converter GUI (1. in the figure below) go to Text Converter (2. in the figure below) and enter SL01 under text (3. in the figure below). Then click on Convert (4. in the figure below) and you will retrieve the correct HEX value for SL01, i.e. the correct HEX number for the Find* [HEX] entry in the ACPI Replacement.

View attachment 311300

Thus, adopt the Find* [HEX] entry in the ACPI Replacement accordingly.

As you still want to replace SL01 by ARPT, the Replace* [HEX] value for ARPT remains still valid and does not need any additional adaptation.

Thus, the correct ACPI Replacement for the ARPT device with the OSXWIFI in e.g. PCIe Slot 4 would look like the following:

Comment:
SL01 -> ARPT Find* [HEX] 534c3031 Replace* [HEX] 41525054

After correctly adopting the ACPI Replacement in the config.plist, enable the latter ACPI replacement by unchecking “disabled” in the ACPI replacement and save the config plist.

After reboot, SL01 will now be correctly replaced by ARPT.

The "Airport" ACPI path with the OSX Wifi in PCIe slot 4 would appear in the IOREG explorer now correctly as:

/PC01/BR1A/ARPT

as it appears with the OSXWifi in PCIe slot 3 as:

/PC03/BR3D/ARPT


View attachment 311301

We now successfully adopted the ACPI Replacement in the config.plist and can continue with the

5.) Adaptation of the SSDT-X299-iMacPro.aml ARPT "Airport" Device implementation

To do so, we open our SSDT-X299-iMacPro.aml on the Desktop with MaciASL.

With the OSX Wifi in PCIe slot 4 instead if slot 3, we have to primarily adopt the ARPT ACPI device path in the Definition Block of the SSDT-X299-iMacPro.aml.

View attachment 311302

As we have seen before in IOREG, with the OSXWIFI in PCIe slot 3, the APRT ACPI path is:

/PC03/BR3D/ARPT/

and with the OSXWIFI in PCIe slot 4, the APRT PCI path might be:

/PC01/BR1A/ARPT

Thus, please adopt the ARPT entry in the Definition block of your SSDT-X299-iMacPro.aml accordingly to the ACPI path provided by IOREG.

With the OSXWIFI in PCIe slot 3, the ARPT Definition block entry looks the following:

External (_SB_.PC03.BR3D.ARPT, DeviceObj) // (from opcode)

With the OSXWIFI in PCIe slot 4, the ARPT Definition block entry might have to look like the following:

External (_SB_.PC01.BR1A.ARPT, DeviceObj) // (from opcode)

Now lets continue with the ARPT SSDT-X299-iMacPro.aml Device Implementation.

View attachment 311304

Again at first place we have to implement the correct ARPT ACPI patch [a.) in the figure above], which is

PC03.BR3D.ARPT with the OSXWIFI in PCIe slot 3

and might be

PC01
.BR1A.ARPT with the OSXWIFI in PCIe slot 4.

Now we have to verify and likely adopt the "AAPL, slot-name" [b.) in the figure above], the "device-id" [c.) in the figure above] and the "compatible" [d.) in the figure above] ACPI device implementations.

To do so, we need again IOREG.

View attachment 311307

If we click on ARPT on the left-hand side, we find the necessary information, such as "compatible" and "device-id" on the right-hand side.

By means of this information, we now can adopt the ARPT SSDT-X299-iMacPro.aml ARPT PCI Device Implementation accordingly. I hope it is evident, that the "AAPL, slot-name" adaptation has to be performed according the PCIe slot nomenclature outlined in the ASUS Prime X299 Deluxe PCIe Figure of Section E.) in my guide, i.e. "Slot-3" with the OSXWIFI in PCIe slot 3 and "Slot-4" with the OSXWIFI in PCIe slot 4. Note that the "compatible" and "device-id" entries might also change in case you use a Bluetooth/WIFI PCI Adaptor different from the OSXWIFI. IOREG always is the base for any SSDT-X299-iMacPro.aml adaptation.

6.) Once the ARPT Device Implementation in the SSDT-X299-iMacPro.aml has been properly adopted, you can now copy again the modified SSDT-X299-iMacPro.aml to the /EFI/Clover/ACPI/patched/ directory of your system disk's EFI-Folder and reboot your System.

If you now open IOREG and again investigate your ARPT IOREG properties in the right-hand side column of IOREG, you will see that everything you defined and implemented within the SSDT-X299-iMacPro.aml, now also appears within the IOREG ARPT device information, i.e. the proper "AAPL,slot-name", the proper "acpi-path", "compatible" and "device-id" entries, as well as also all additional PCI device details you previously implemented within the above SSDT-X299-iMacPro.aml ARPT PCI Device implementation, i.e., "device-type", "model" and "name" (which can be preciously adopted and modified in the SSDT-X299-iMacPro.aml PCI Device implementation depending on the Bluetooth/WIFI Adopter in use). If everything is properly implemented and defined, you will also see in the left hand-side column of IOREG that the "Airport_BrcmNIC" PCI driver, being child of ARPT, is properly loaded.

View attachment 311311

Correspondingly, the "Airport" ARPT OSXWIFI Controller will also be properly implemented under "PCI" of Apple's system report.

View attachment 311312

You will see the ARPT Airport Hardware name, device name, device type, Slot implementation and that the Airport PCI device driver, being child of ARPT, is properly installed and implemented.

The same approach and methodology can be used for any other PCI Device implementation, such as e.g. HDEF and HDAU (IOREG search term "audio"), GFX0 (IOREG search term "display") etc.

General Note: If your PCI Device is called PXSX, you are not able to perform the ACPI replacement within the config.plist, as there might be several PXSX devices along the different ACPI path definitions.

Let me retake again the OSXWIFI example, this time using the PCIe adapter in PCIe Slot-5:

The corresponding ACPI path seems to be PCI0.RP19.PXSX

Instead of the SLOC -> ARPT or SL01 -> ARPT ACPI replacement in the config.plist, which you can simply remove or disable, you MUST directly perform the ACPI replacement PCI0.RP19.PXSX -> PCI0.RP19.ARPT within the SSDT-X299-iMacPro.aml.

As you have several PXSX devices, you cannot perform the PXSX -> ARPT Replacement within the config.plist. You have to do it directly within the SSDT-X299-iMacPro.aml. How to do it, see below:

*********************************************************

DefinitionBlock ("", "SSDT", 1, "NICO", "X299", 0x00000000)
{
External (_SB_.PCI0.RP19.ARPT, DeviceObj) // (from opcode)
External (_SB_.PCI0.RP19.PXSX, DeviceObj) // (from opcode)

Scope (_SB.PCI0.RP19.ARPT)
{
OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
Field (PCIS, AnyAcc, NoLock, Preserve)
{
PVID, 16,
PDID, 16
}

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

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-5"
},

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

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

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

"name",
Buffer (0x10)
{
"AirPort Extreme"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Name (_SB.PCI0.RP19.PXSX._STA, Zero) // _STA: Status
}
*********************************************************

7.) I hope that now it is also evident, that the correct PCI Device implementation cannot be outlined for each individual "buid-in" or "slot-specific" PCI device within this guide. The complexity and effort would just exceed by far all available capacities and indeed require the implementation of a separate guide and thread in addition. I therefore hope on your skills and flexibility to extend and apply the approach and methodology detailed above to any other "build-in" or "slot-specific" PCI device yet to be adopted or implemented.

Important Note: It is strongly recommend to perform a stepwise 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!

Good luck and enjoy :thumbup:

View attachment 311313

This post deserves to be it's own thread. This is invaluable to the entire community.
 

kgp

Retired
Joined
May 30, 2014
Messages
6,780
Motherboard
ASUS WS X299 Sage 10G
CPU
i9-7980XE
Graphics
Vega 64
Mac
  1. iMac
  2. MacBook Pro
  3. Mac mini
Mobile Phone
  1. iOS
This post deserves to be it's own thread. This is invaluable to the entire community.

Thanks for your positive feedback, man! Appreciated!

Maybe I should implement this small SSDT guideline directly within the main guide? Although it might unnecessary enlarge again the entire guide... That's why I just implemented the link to the respective post within the main guide.. I guess it is fine as it is for now.. Isn't it?

I already outsourced my XHC USB Kext creation guideline to a separate thread, as currently obsolete for X299. Nobody reads the outsourced guideline in the new separated thread anyway..
 
Last edited:
Joined
May 31, 2016
Messages
993
Motherboard
Gigabyte Z490 Vision G
CPU
i9-10900K
Graphics
RX 5700 XT
Mac
  1. iMac
  2. MacBook
  3. MacBook Pro
  4. Mac mini
Classic Mac
  1. PowerBook
  2. Quadra
Mobile Phone
  1. iOS
Thanks for your positive feedback, man! Appreciated!

Maybe I should implement this small guideline directly within the main guide? Although it might unnecessary enlarge again the entire guide... That's why I just implemented the link to the respective post within the main guide.. I guess it is fine as it is for now.. Isn't it?


I’ve been a silent fan of yours since the beginning. I don’t have X299 hardware but used your guide to build for someone else. This is the most complete guide of any build I’ve ever seen.

Regarding ACPI Replacements topic, I think all it needs to benefit everyone is to show how to come up with a definition block appropriate for the individual hardware/mb, and where to find/DL darwin dumps/original IOREGs (easily google searched)

What do you think about making it a separate topic and linking to it in the main guide? That way you wouldn’t have to maintain it or deal with questions off-topic to the X299 build :)
 
Status
Not open for further replies.
Top