Contribute
Register

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

Status
Not open for further replies.
Hey guys,

There is some type of Fan Control? Like on Windows we have a app that we set to turn faster after some degree.

Thank you,
Gus
 
Hi, I would very much appreciate some help because I'm stuck. I'm following this guide, and in section B1.) ASUS BIOS Configuration after setting all parameters according to the guide nothing happens at boot. The monitor does not start, no picture.

Hardware:
ASUS PRIME X299-DELUXE
i9-7900X
GTX 1050 Ti


The the Thunderbolt EX3 is not installed on the motherboard.

I have tracked down which BIOS setting causes this problem:
8.) /Boot/Compatibility Support Module/
a.) Launch CSM: Disabled

If I instead leave the Launch CSM: Enabled, I get the post screen and can go into BIOS.
I wonder what can cause the problem when setting Launch CSM: Disabled?

I'm using the X299D.CAP, the most recent ASUS Prime X299 Deluxe BIOS Firmware 1401 with an iMacPro Splash Screen, found under B.) Mainboard BIOS. The firmware was flashed successfully and the Splash Screen is shown.

Another question is why this guide is not using UniBeast? Should I do that? I have prepared a USB flash according to the instructions, using the Clover Configurator.

It is unclear to me if I shall copy the EFI-Folder (that was prepared and placed on the Desktop of an original Apple Mac Pro), to the USB flash by just drag-and-drop to the root, placing it next to the macOS installer APP, or if it needs to be written to the USB flash in some special way and location?

I followed the guide in C.) Important General Note/Advice and Error Prevention
up to point 7 but did not do point 8. Is it important to do point 8? Its confusing what I shall do there.

In point 10 I got compilation errors but fixed them by removing some code sections that is not for the target architecture anyway. I only need it to compile for High Sierra. But, will this lead to trouble when trying to upgrade later on to Mojave? I removed code related to Mojave (I think) because it did not compile.

The guide does however not mention what to do with the built kexts in step 10? So I did not copy them to the USB flash yet.

Make sure your usb is plugged in to the computer you are using to copy the EFI folder to.

Open clover config then select the 'Mount EFI' tab on the left hand side in the TOOLS menu. Select the EFI folder on your usb drive and then click the 'Mount Partition' option. This will allow you to access the EFI partition on your usb within finder. Then simply copy over your EFI folder on to the EFI partition.

Hope that helps. Same issue I got stuck with you when i first started...

@kgp FYI your guide doesn't cover in detail how the EFI partition needs to be accessed within Clover Config in order to copy the files on to the partition. I understand it's common knowledge for some, but wasn't for me... It may be useful to add to the USB build guide?
 
E.14) Logic-X and Audio Studio Software Functionality
I am getting this message when I play the project attached. I increase to the max 1024.
I am using an Yamaha AG03 to in and output


Screen Shot 2018-08-01 at 7.54.34 PM.png


Thank you,
Gus
 
Or just some badly plugged PCIE Adaptor, RAM, cabling, etc...
I tried another x299 motherboard and it has the same behavior. So I think it's either my GPU or my CPU. Will try to find another graphics card to test with my system (I have an old Nvidia Quadro, but it won't work either - but it's not UEFI, so maybe that's why?). And while I'm at it, I may try a different graphics card.

I know @kgp, you discouraged AMD cards. It sounds like I would have to go way off the grid (not be able to follow your guide) in order to get them working. I heard that for audio - which is what I'm using my desktop for - AMD cards work better in terms of DPC latency than Nvidia cards. Anyone know about Vega cards regarding DPC latency for audio? I could buy a Vega 56 but sounds like from people's experiences on this thread they run very hot.

Any recommendations for a graphics card that can do 4k, but that won't produce too much heat AND will be pretty easy to set up with the Imac Pro Hack?
 

I tried another x299 motherboard and it has the same behavior. So I think it's either my GPU or my CPU. Will try to find another graphics card to test with my system (I have an old Nvidia Quadro, but it won't work either - but it's not UEFI, so maybe that's why?). And while I'm at it, I may try a different graphics card.

I know @kgp, you discouraged AMD cards. It sounds like I would have to go way off the grid (not be able to follow your guide) in order to get them working. I heard that for audio - which is what I'm using my desktop for - AMD cards work better in terms of DPC latency than Nvidia cards. Anyone know about Vega cards regarding DPC latency for audio? I could buy a Vega 56 but sounds like from people's experiences on this thread they run very hot.

Any recommendations for a graphics card that can do 4k, but that won't produce too much heat AND will be pretty easy to set up with the Imac Pro Hack?

I got a Vega 64 Liquid Cooled, it's a beast and in idle stays at 30°C
 
Sorry here you go

Hello @taylorsyn I am trying to configure two 1080ti GPU, I have noticed that you are one of the few that have this configuration, I will test your customized SSDT for two GPUs but I need the ACPI DSDT patches, I only have the patches for a GPU, I was wondering if you would be so kind to publish your EFI folder to be able to learn with the settings you have in your config.plist, extensions and others, thank you very much and sorry for the inconvenience, greetings.
 
Last edited:
Have a question about getting audio to work for anyone who uses AppleHDA. I previously used Voodoo, but this is no longer working for me. I followed all the steps but am getting a LOT of feedback from speakers that are hooked to the motherboard in a 5.1 configuration (can you use a 5.1 config (green, black, orange) with MacOS?). I did notice in my S/L/E directory I have an AppleHDADisabler.kext, this may be common sense but should that be there? I hate to remove it and then break something.
 
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



Hi kgp. I really don't understand how to modify the ACPI Patches and SSDT to have fully support using 2 NVIDIA GPUs (Slot-1 & Slot-4), and ASUS TH3 hot-plug functionality (Slot-6). Mi mobo is X299-Deluxe and was working flawlessly with only 1 GPU (slot-1) + ASUS TH3 (Slot-4) using your guide. Please help out on this, really appreciated (sorry for my bad English). Here's the TH3 PCi Card on Slot-6:
View attachment
 
hi @kgp
thank you for your hard work and thank you for sharing.
I would like, if possible, to fix a issue regarding the Nvidia gpu decoding hardware acceleration. can you please have a look at this? I asked even on whatever green support topic page but no answer received yet.


"I found out that if I use vega64, my hardware acceleration is fully supported.
as soon as I put my Nvidia gtx 1080, I have the error as picture
this happens on my x99 and on my x299 config (tried in both systems).

no issue with my z370 with both amd or nvidia"
 

Attachments

  • 1127714983_Schermata2018-08-01alle09_10_27.png.f8319c051e63cf93433d3a6c56582a61.png
    1127714983_Schermata2018-08-01alle09_10_27.png.f8319c051e63cf93433d3a6c56582a61.png
    62.9 KB · Views: 168
Status
Not open for further replies.
Back
Top