Contribute
Register

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

Status
Not open for further replies.
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"


With Nvidia you need an igpu for hardware decode. Z370 systems support cpus with built in igpu but x99 and x299 do not.
 
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 344319

I am just trying to fully implement Thunderbolt SSDT-9.aml of the iMac Pro dump... I recommend to wait, in case I would succeed..

With the current distributed TB-SSDT hot plug is working with the THB_C removed..

However, there is only the AppleThunderboltNHI kext loaded..

AppleThunderboltDPAdapterFamily.kext, AppleThunderboltDPInAdapter.kext, AppleThunderboltPCIDownAdapter.kext and the IOThunderboltFamily.kext seem missing and Apple ThunderboltLocalNode, AppleThunderboltIPService, AppleThunderboltIPPorts or IOThunderboltPorts are not at all implemented...

Screen Shot 2018-08-04 at 07.03.36.png


Thus what we have for now is just some workaround, which is quite far away from a full and proper TB system implementation..

During my latest attempts I already managed to load IOThunderboltFamily.kext and to successfully implement RTPC.. But currently the new TB-SSDT fails to load because of unknown reason..

I simply need more time..
 
Last edited:
I am just trying to fully implement Thunderbolt SSDT-9.aml of the iMac Pro dump... I recommend to wait, in case I would succeed..

With the current distributed TB-SSDT hot plug is working with the THB_C removed..

However, there is only the AppleThunderboltNHI kext loaded..

AppleThunderboltDPAdapterFamily.kext, AppleThunderboltDPInAdapter.kext, AppleThunderboltPCIDownAdapter.kext and the IOThunderboltFamily.kext seem missing and Apple ThunderboltLocalNode, AppleThunderboltIPService, AppleThunderboltIPPorts or IOThunderboltPorts are not at all implemented...

View attachment 344461

Thus what we have for now is just some workaround, which is quite far away from a full and proper TB system implementation..

During my latest attempts I already managed to load IOThunderboltFamily.kext and to successfully implement RTPC.. But currently the new TB-SSDT fails to load because of unknown reason..

I simply need more time..


Of course man !!, I (we) can wait with no problems. Thanks a lot for your effort and sharp guides.
 
With Nvidia you need an igpu for hardware decode. Z370 systems support cpus with built in igpu but x99 and x299 do not.

thank you.
so I want hardware decoding with x99-x299 I have to stay with amd, right?
while with z370 I can choose between and and Nvidia because I have the igpu for hardware decoding
 
I updated the VegaFixup kext for mojave (unfortunately, @kgp SSDT method doesn't work with my 5K screen, it stays off, I had great hope about that one)
Attached is the EFI folder that works with both 10.14 and 10.13 macOS, contains updated AppleALC (1.3) and Lilu (1.25) that's for the ASRock X299 Professional, but can be adapted very easily for all GB motherboards.

Some issues with Mojave for me, the peripherals of my Apple Thunderbolt display do not work (webcam, audio both in and out).

Thanks to @kgp for providing the basic building blocks.
 

Attachments

  • EFI.zip
    19.3 MB · Views: 233
I updated the VegaFixup kext for mojave (unfortunately, @kgp SSDT method doesn't work with my 5K screen, it stays off, I had great hope about that one)
Attached is the EFI folder that works with both 10.14 and 10.13 macOS, contains updated AppleALC (1.3) and Lilu (1.25) that's for the ASRock X299 Professional, but can be adapted very easily for all GB motherboards.

Some issues with Mojave for me, the peripherals of my Apple Thunderbolt display do not work (webcam, audio both in and out).

Thanks to @kgp for providing the basic building blocks.

I'll copy the updated VegaGraphicsFixup.kext, thanks. Can I simply put updated AppleALC and Lilu in my folder too and get audio properly functional? I'm now using VoodooHDA but I wish using AppleALC. THANKS.
 
I'll copy the updated VegaGraphicsFixup.kext, thanks. Can I simply put updated AppleALC and Lilu in my folder too and get audio properly functional? I'm now using VoodooHDA but I wish using AppleALC. THANKS.
Yes.

There should be no change of functionality.

I did find that I had to fully shutdown the machine before restarting, otherwise the screens weren’t starting.
Only need to do that once, I’m guessing the graphic cCard is left in an incompatible state and that requires a full shutdown first.
 
U
Yes.

There should be no change of functionality.

I did find that I had to fully shutdown the machine before restarting, otherwise the screens weren’t starting.
Only need to do that once, I’m guessing the graphic cCard is left in an incompatible state and that requires a full shutdown first.

Unfortunately it seems that I don’t know how to remove VoodooHDA, I deleted all the kexts everywhere but it still loads on top of ApplALC. Any hint???
 
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...

Thanks for your reply. I'm still not able to boot. I used the Clover Configurator.app and copied the EFI directory (not the content of it, but the directory itself with its content), from Desktop to the USB flash drive's empty EFI folder.

I also wondered what to do with the Lilu kexts (AppleALC.kext, Lilu.kext and WhateverGreen.kext) that I built from source in step 10?

I used the Clover Configurator.app, opened the USB flash drive's EFI directory and went into CLOVER/kexts/Other where there were already some kexts (AGPMEnabler.kext, FakeSMC.kext, IntelMausiEthernet.kext and TSCAdjustReset.kext) and copied the three kexts (AppleALC.kext, Lilu.kext and WhateverGreen.kext) to the EFI/CLOVER/kexts/Other directory on the USB flash drive. Was that correct?

Is there any other kexts that should be copied to the USB flash drive? Under C point 9:
"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.13 System Disk, or to disable the second LAN port in the BIOS during the MacOS Installation.

I'd like to use the second LAN port, but I don't understand the part marked in orange. How and where exactly shall the SmallTree-Intel-211-AT-PCIe-GBE.kext be copied to the USB flash drive?

With "to the EFI-Folders of both USB Flash Drive Installer", do they mean this: Use the Clover Configurator.app, open the USB flash drive's EFI directory and open CLOVER/kexts/Other and copy (drag-and-drop) the SmallTree-Intel-211-AT-PCIe-GBE.kext there?

How is the SmallTree-Intel-211-AT-PCIe-GBE.kext supposed to be copied to the 10.13 System Disk? I have not tried to copy it yet. Shall it be drag-and-dropped on the Install macOS High Sierra.app? If so, shall it be drag-and-dropped on the Install macOS High Sierra.app before the Install macOS High Sierra.app is copied to the USB Flash drive with the command:

$ sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ High\ Sierra.app --nointeraction

or after that command have completed (but drag-and-drop it on the Install macOS High Sierra.app now located on the USB flash drive)? Or something else?
All BIOS settings are as in the guide. I find it strange that the parameter in BIOS: MSR Lock Control: Disabled
causes the monitor to not start, regardless if the USB flash drive is inserted to the hackintosh or not. Is there something wrong going on here? Since I can't get into BIOS, I need to reset CMOS and again set all BIOS parameters. I have done that 4 times now.

Using GeForce 1050 TI. Will it work fine?
 
Last edited:
Remaining key problem for new hopefully successful TB implementation..

Screen Shot 2018-08-04 at 18.52.37.png


@Rulebreaker01 , @nmano , anybody else...

can somebody help me in solving the remaining key problem with method _INI..

Code:
        Name (EICM, Zero)
        Name (R020, Zero)
        Name (R024, Zero)
        Name (R028, Zero)
        Name (R02C, Zero)
        Name (R118, Zero)
        Name (R119, Zero)
        Name (R11A, Zero)
        Name (R11C, Zero)
        Name (R120, Zero)
        Name (R124, Zero)
        Name (R128, Zero)
        Name (R12C, Zero)
        Name (R218, Zero)
        Name (R219, Zero)
        Name (R21A, Zero)
        Name (R21C, Zero)
        Name (R220, Zero)
        Name (R224, Zero)
        Name (R228, Zero)
        Name (R22C, Zero)
        Name (R318, Zero)
        Name (R319, Zero)
        Name (R31A, Zero)
        Name (R31C, Zero)
        Name (R320, Zero)
        Name (R324, Zero)
        Name (R328, Zero)
        Name (R32C, Zero)
        Name (R418, Zero)
        Name (R419, Zero)
        Name (R41A, Zero)
        Name (R41C, Zero)
        Name (R420, Zero)
        Name (R424, Zero)
        Name (R428, Zero)
        Name (R42C, Zero)
        Name (RVES, Zero)
        Name (R518, Zero)
        Name (R519, Zero)
        Name (R51A, Zero)
        Name (R51C, Zero)
        Name (R520, Zero)
        Name (R524, Zero)
        Name (R528, Zero)
        Name (R52C, Zero)
        Name (R618, Zero)
        Name (R619, Zero)
        Name (R61A, Zero)
        Name (R61C, Zero)
        Name (R620, Zero)
        Name (R624, Zero)
        Name (R628, Zero)
        Name (R62C, Zero)
        Name (RH10, Zero)
        Name (RH14, Zero)
        Name (POC0, Zero)

       OperationRegion (RPSM, SystemMemory, 0x60510000, 0x54)
        Field (RPSM, DWordAcc, NoLock, Preserve)
        {
            RPVD,   32,
            RPR4,   8,
            Offset (0x18),
            RP18,   8,
            RP19,   8,
            RP1A,   8,
            Offset (0x1C),
            RP1C,   16,
            Offset (0x20),
            R_20,   32,
            R_24,   32,
            R_28,   32,
            R_2C,   32,
            Offset (0x52),
                ,   11,
            RPLT,   1,
            Offset (0x54)
        }
....
....
....
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            If (LNot (OSDW ()))
            {
                Store (One, TBG2)
                Store (R_20, R020)
                Store (R_24, R024)
                Store (R_28, R028)
                Store (R_2C, R02C)
                Store (UP18, R118)
                Store (UP19, R119)
                Store (UP1A, R11A)
                Store (UP1C, R11C)
                Store (UP20, R120)
                Store (UP24, R124)
                Store (UP28, R128)
                Store (UP2C, R12C)
                Store (DP18, R218)
                Store (DP19, R219)
                Store (DP1A, R21A)
                Store (DP1C, R21C)
                Store (DP20, R220)
                Store (DP24, R224)
                Store (DP28, R228)
                Store (DP28, R228)
                Store (D318, R318)
                Store (D319, R319)
                Store (D31A, R31A)
                Store (D31C, R31C)
                Store (D320, R320)
                Store (D324, R324)
                Store (D328, R328)
                Store (D32C, R32C)
                Store (D418, R418)
                Store (D419, R419)
                Store (D41A, R41A)
                Store (D41C, R41C)
                Store (D420, R420)
                Store (D424, R424)
                Store (D428, R428)
                Store (D42C, R42C)
                Store (DVES, RVES)
                Store (D518, R518)
                Store (D519, R519)
                Store (D51A, R51A)
                Store (D51C, R51C)
                Store (D520, R520)
                Store (D524, R524)
                Store (D528, R528)
                Store (D52C, R52C)
                Store (NH10, RH10)
                Store (NH14, RH14)
                Sleep (One)
                ICMB ()
            }
        }

which crashes my SSDT during boot?

In the system DSDT.aml of the iMac Pro dump, I found an additional WAK method to TBG2, but there it becomes really complicated as with PNOT(), also the CPU's get involved, which apparently furthermore requires the integration of nearly the entire iMac Pro DSDT + iMac pro AMLs...

Method _ini.. a short code snippet, which apparently opens Pandora's box...

Code:
Method (_WAK, 1, NotSerialized)  // _WAK: Wake
    {
        P8XH (Zero, Zero)
        Store (Zero, \_SB.PCI0.LPCB.EC.ECSS)
        If (LNot (OSDW ()))
        {
            If (LEqual (Arg0, 0x03))
            {
                Sleep (0x0A)
            }

            If (TBG2)
            {
                \_SB.PC02.BR2C.ICMB ()
            }

            If (TBG3)
            {
                \_SB.PC02.BR2D.ICMB ()
            }
        }

        If (OSDW ()){}
        Else
        {
        }

        \_SB.PCI0.SBUS.BUS0.BLC0.BCAL ()
        Store (\_SB.PCI0.LPCB.EC.EACP, PWRS)
        If (LNot (OSDW ()))
        {
            Notify (\_SB.PWRB, 0x02)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE0)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE1)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE2)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE3)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE4)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE5)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE6)
            Store (Zero, \_SB.PCI0.LPCB.EC.LWE7)
        }
        PNOT ()
        Store (One, \_SB.SCGE)
        Return (Package (0x02)
        {
            Zero,
            Zero
        })
    }

Any solution or contribution to a successful implementation of this "remaining code snippet" would be highly appreciated..
 
Last edited:
Status
Not open for further replies.
Back
Top