Contribute
Register

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

Status
Not open for further replies.
@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
 
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..
 
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.
 
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:
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 :)
 
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 :)

o.k. I will think about that and see about it's feasibility ..
 
This post deserves to be it's own thread. This is invaluable to the entire community.

I totally agree with this message.

And now if I can afford for once :

Just two small thoughts about this message and about others messages i readed above :

1/ This tread allows me not only to install and build my own iMacPro but also and to go further to understand and introduce myself into "sophisticated mechanisms" to have the best settings.

2/ What i do with my current build Haswell i5-4460 and what i'll do with my X299 build :
Not only gaming or video edditing but for my job too.
I work on the economics and development of architectural construction projects with renowned architects from Paris, London, Amsterdam.
Notice the big significant evolution of our activity is the BIM ( Building Image Modeling) and poverfull machine with reliable CPU and GPU is needed : and my build is in adequation for using Autocad , Revit, Sketchup for exemple.
I live in mountain in Charteuse in the French Alps and i currently use my hackintosh for working two or three days without to need going on the office of my company.

Thank's for this tread.
 
Last edited:
I totally agree with this message.

And now if I can afford for once :

Just two small thoughts about this message and about others messages read above :

1/ This tread allows me not only to install but also and to go further to understand and introduce myself into "sophisticated mechanisms" to have the best settings.

2/ What i do with my current build Haswell i5-4460 and what i'll do with my X299 build :
Not only gaming or video edditing but for my job too.
I work on the economics and development of architectural construction projects with renowned architects from Paris, London, Amsterdam.
Notice the big significant evolution of our activity is the BIM ( Building Image Modeling) and poverfull machine with reliable CPU and GPU is needed : and my build is in adequation for using Autocad , Revit, Skechup for exemple.
I live a mountain in Charteuse in the French Alps and i currently use my hackintosh for working two or three days without to need going on the office of my company.

Thank's for this tread.

Anybody able to read my guide until the end, will also rapidly and easily witness that I don't do the entire build and guide development just for fun or as a hobby to kill and fill my free time, which I definitely would know to spend in different ways than by publishing here in this forum: ;)

Screen Shot 2018-02-09 at 15.27.45.png
 
Anybody able to read my guide until the end, will also rapidly and easily witness that I don't do the entire build and guide development just for fun or as a hobby to kill and fill my free time, which I definitely would know to spend in different ways than by publishing here in this forum: ;)

View attachment 312006

I will admit, I've checked out your personal webpage a bunch of times. I'm a meagre backyard astronomer and admire anyone who does the real science :)
 
Status
Not open for further replies.
Back
Top