Jump to content

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


KGP-iMacPro
 Share

iMacPro Build/Guide Feedback   

26 members have voted

  1. 1. Does this guide help you in your endeavour?

    • yes
      21
    • no
      5

This poll is closed to new votes


656 posts in this topic

Recommended Posts

3 hours ago, KGP-iMacPro said:

 

Please also provide your original DSDT... I need to know, which variable comes up when nulling SL05... Is it PEGP?

here it is thanks. I changed my graphics card back to the Vega 56 because thats the only blower style my computer store had at the time, I am going to replace it with a 64 as soon as they get them  back in stock. 

DSDT.aml

Edited by blast44
Link to comment
Share on other sites

29 minutes ago, blast44 said:

here it is thanks. I changed my graphics card back to the Vega 56 because thats the only blower style my computer store had at the time, I am going to replace it with a 64 as soon as they get them  back in stock. 

DSDT.aml

 

o.k. here you go..

 

Standalone SSDT-Vega-ASUS-Prime-X299-Deluxe-Slot-1.aml.zip  (not to be used in conjunction with SSDT-X299-iMacPro.aml and SSDT-X299-TB3-iMacPro.aml)

 

If you want to implement it directly in the SSDT-X299-iMacPro.aml, do the following 

 

Add to definition block:

 

    External (_SB_.PC02, DeviceObj)    // (from opcode)
    External (_SB_.PC02.BR2A, DeviceObj)    // (from opcode)
    External (_SB_.PC02.BR2A.SL05, DeviceObj)    // (from opcode)
    External (_SB_.PNLF.BSET, MethodObj)    // 1 Arguments (from opcode)
    External (BRTL, IntObj)    // (from opcode)
    External (EGPS, IntObj)    // (from opcode)

Replace Nvidia SSDT implementation by:

    Scope (\_SB.PC02.BR2A)
    {
        Scope (SL05)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Device (PEGP)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (EGP0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Device (GFX0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (ATIB, Buffer (0x0100){})
                    Method (ATIF, 2, Serialized)
                    {
                        If (LEqual (Arg0, Zero))
                        {
                            Return (AF00 ())
                        }

                        If (LEqual (Arg0, One))
                        {
                            Return (AF01 ())
                        }

                        If (LEqual (Arg0, 0x02))
                        {
                            Return (AF02 ())
                        }
                        Else
                        {
                            CreateWordField (ATIB, Zero, SSZE)
                            CreateWordField (ATIB, 0x02, VERN)
                            CreateDWordField (ATIB, 0x04, NMSK)
                            CreateDWordField (ATIB, 0x08, SFUN)
                            Store (Zero, SSZE)
                            Store (Zero, VERN)
                            Store (Zero, NMSK)
                            Store (Zero, SFUN)
                            Return (ATIB)
                        }
                    }

                    Method (AF00, 0, NotSerialized)
                    {
                        CreateWordField (ATIB, Zero, SSZE)
                        CreateWordField (ATIB, 0x02, VERN)
                        CreateDWordField (ATIB, 0x04, NMSK)
                        CreateDWordField (ATIB, 0x08, SFUN)
                        Store (0x0C, SSZE)
                        Store (One, VERN)
                        Store (0x0C, NMSK)
                        Store (0x03, SFUN)
                        Return (ATIB)
                    }

                    Method (AF01, 0, NotSerialized)
                    {
                        CreateWordField (ATIB, Zero, SSZE)
                        CreateDWordField (ATIB, 0x02, VMSK)
                        CreateDWordField (ATIB, 0x06, FLGS)
                        Store (0x0A, SSZE)
                        Store (0x03, VMSK)
                        Store (One, FLGS)
                        Return (ATIB)
                    }

                    Method (AF02, 0, NotSerialized)
                    {
                        CreateWordField (ATIB, Zero, SSZE)
                        CreateDWordField (ATIB, 0x02, PSBI)
                        CreateByteField (ATIB, 0x09, FPWR)
                        CreateByteField (ATIB, 0x0A, FPID)
                        Store (0x0D, SSZE)
                        Store (0x08, PSBI)
                        Store (Zero, FPWR)
                        Store (EGPS, FPID)
                        Return (ATIB)
                    }

                    Method (ABCM, 1, NotSerialized)
                    {
                        Store (Arg0, BRTL)
                        \_SB.PNLF.BSET (Arg0)
                        Return (Zero)
                    }

                    Method (ABCL, 0, NotSerialized)
                    {
                        Return (Package (0x52)
                        {
                            0x50, 
                            0x32, 
                            One, 
                            0x02, 
                            0x03, 
                            0x04, 
                            0x05, 
                            0x06, 
                            0x07, 
                            0x08, 
                            0x09, 
                            0x0A, 
                            0x0B, 
                            0x0C, 
                            0x0D, 
                            0x0E, 
                            0x0F, 
                            0x10, 
                            0x11, 
                            0x12, 
                            0x13, 
                            0x14, 
                            0x15, 
                            0x16, 
                            0x17, 
                            0x18, 
                            0x19, 
                            0x1A, 
                            0x1B, 
                            0x1C, 
                            0x1D, 
                            0x1E, 
                            0x1F, 
                            0x20, 
                            0x21, 
                            0x22, 
                            0x23, 
                            0x24, 
                            0x25, 
                            0x26, 
                            0x27, 
                            0x28, 
                            0x29, 
                            0x2A, 
                            0x2B, 
                            0x2C, 
                            0x2D, 
                            0x2E, 
                            0x2F, 
                            0x30, 
                            0x31, 
                            0x32, 
                            0x33, 
                            0x34, 
                            0x35, 
                            0x36, 
                            0x37, 
                            0x38, 
                            0x39, 
                            0x3A, 
                            0x3B, 
                            0x3C, 
                            0x3D, 
                            0x3E, 
                            0x3F, 
                            0x40, 
                            0x41, 
                            0x42, 
                            0x43, 
                            0x44, 
                            0x45, 
                            0x46, 
                            0x47, 
                            0x48, 
                            0x49, 
                            0x4A, 
                            0x4B, 
                            0x4C, 
                            0x4D, 
                            0x4E, 
                            0x4F, 
                            0x50
                        })
                    }

                    Device (LCD)
                    {
                        Method (_ADR, 0, Serialized)  // _ADR: Address
                        {
                            Return (0x0110)
                        }

                        Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels
                        {
                            Return (ABCL ())
                        }

                        Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method
                        {
                            ABCM (Arg0)
                        }

                        Method (_BQC, 0, NotSerialized)  // _BQC: Brightness Query Current
                        {
                            Return (BRTL)
                        }
                    }

                    Method (_DOD, 0, Serialized)  // _DOD: Display Output Devices
                    {
                        Return (Package (0x01)
                        {
                            0x0110
                        })
                    }

                    Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                    {
                        If (OSDW ())
                        {
                            Return (Package (0x02)
                            {
                                0x69, 
                                0x03
                            })
                        }
                        Else
                        {
                            Return (Package (0x02)
                            {
                                0x69, 
                                0x03
                            })
                        }
                    }

                    OperationRegion (PEGH, PCI_Config, Zero, 0x40)
                    Field (PEGH, ByteAcc, NoLock, Preserve)
                    {
                        VID0,   16, 
                        DID0,   16, 
                        GCMD,   8, 
                        Offset (0x24), 
                        BAR4,   32
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x0E)
                            {
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 

                                "model", 
                                Buffer (0x29)
                                {
                                    "Gigabyte Radeon RX Vega 64 Gaming OC 8GB"
                                }, 

                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Return (0x80000002)
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    OperationRegion (HDAH, PCI_Config, Zero, 0x40)
                    Field (HDAH, ByteAcc, NoLock, Preserve)
                    {
                        VID0,   16, 
                        DID0,   16
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x16)
                            {
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 

                                "layout-id", 
                                Buffer (0x04)
                                {
                                     0x01, 0x00, 0x00, 0x00                         
                                }, 

                                "name", 
                                Buffer (0x32)
                                {
                                    "Gigabyte Radeon RX Vega 64 Gaming OC 8GB HD-Audio"
                                }, 

                                "model", 
                                Buffer (0x32)
                                {
                                    "Gigabyte Radeon RX Vega 64 Gaming OC 8GB HD-Audio"
                                }, 

                                "device_type", 
                                Buffer (0x16)
                                {
                                    "Multimedia Controller"
                                }, 

                                "device-id", 
                                Buffer (0x04)
                                {
                                     0xF8, 0xAA, 0x00, 0x00                         
                                }, 

                                "subsystem-id", 
                                Buffer (0x04)
                                {
                                     0xF8, 0xAA, 0x00, 0x00                         
                                }, 

                                "subsystem-vendor-id", 
                                Buffer (0x04)
                                {
                                     0x02, 0x10, 0x00, 0x00                         
                                }, 

                                "compatible", 
                                Buffer (0x0D)
                                {
                                    "pci1002,aaf8"
                                }, 

                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Return (0x80000002)
                }
            }
        }
    }

 

The direct SSDT-X299-iMacPro.aml requires SSDT-X299-TB3-iMacPro.aml in addition. You also might have to add external objects and methods OSYS, OSDW, XOSI to your SSDT-X299-iMacPro.aml definition block, as these variables and methods come from  SSDT-X299-TB3-iMacPro.aml.

 

If you don't use SSDT-X299-TB3-iMacPro.aml, implement 

 

    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)))
    }

directly after the definition block of the SSDT-X299-TB3-iMacPro.aml.

 

Good luck,

 

KGP

Edited by KGP-iMacPro
Link to comment
Share on other sites

1 hour ago, KGP-iMacPro said:

 

o.k. here you go..

 

Standalone SSDT-Vega-ASUS-Prime-X299-Deluxe-Slot-1.aml.zip  (not to be used in conjunction with SSDT-X299-iMacPro.aml and SSDT-X299-TB3-iMacPro.aml)

 

If you want to implement it directly in the SSDT-X299-iMacPro.aml, do the following 

 

Add to definition block:

 


    External (_SB_.PC02, DeviceObj)    // (from opcode)
    External (_SB_.PC02.BR2A, DeviceObj)    // (from opcode)
    External (_SB_.PC02.BR2A.SL05, DeviceObj)    // (from opcode)
    External (_SB_.PNLF.BSET, MethodObj)    // 1 Arguments (from opcode)
    External (BRTL, IntObj)    // (from opcode)
    External (EGPS, IntObj)    // (from opcode)

Replace Nvidia SSDT implementation by:


    Scope (\_SB.PC02.BR2A)
    {
        Scope (SL05)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Device (PEGP)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (EGP0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Device (GFX0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (ATIB, Buffer (0x0100){})
                    Method (ATIF, 2, Serialized)
                    {
                        If (LEqual (Arg0, Zero))
                        {
                            Return (AF00 ())
                        }

                        If (LEqual (Arg0, One))
                        {
                            Return (AF01 ())
                        }

                        If (LEqual (Arg0, 0x02))
                        {
                            Return (AF02 ())
                        }
                        Else
                        {
                            CreateWordField (ATIB, Zero, SSZE)
                            CreateWordField (ATIB, 0x02, VERN)
                            CreateDWordField (ATIB, 0x04, NMSK)
                            CreateDWordField (ATIB, 0x08, SFUN)
                            Store (Zero, SSZE)
                            Store (Zero, VERN)
                            Store (Zero, NMSK)
                            Store (Zero, SFUN)
                            Return (ATIB)
                        }
                    }

                    Method (AF00, 0, NotSerialized)
                    {
                        CreateWordField (ATIB, Zero, SSZE)
                        CreateWordField (ATIB, 0x02, VERN)
                        CreateDWordField (ATIB, 0x04, NMSK)
                        CreateDWordField (ATIB, 0x08, SFUN)
                        Store (0x0C, SSZE)
                        Store (One, VERN)
                        Store (0x0C, NMSK)
                        Store (0x03, SFUN)
                        Return (ATIB)
                    }

                    Method (AF01, 0, NotSerialized)
                    {
                        CreateWordField (ATIB, Zero, SSZE)
                        CreateDWordField (ATIB, 0x02, VMSK)
                        CreateDWordField (ATIB, 0x06, FLGS)
                        Store (0x0A, SSZE)
                        Store (0x03, VMSK)
                        Store (One, FLGS)
                        Return (ATIB)
                    }

                    Method (AF02, 0, NotSerialized)
                    {
                        CreateWordField (ATIB, Zero, SSZE)
                        CreateDWordField (ATIB, 0x02, PSBI)
                        CreateByteField (ATIB, 0x09, FPWR)
                        CreateByteField (ATIB, 0x0A, FPID)
                        Store (0x0D, SSZE)
                        Store (0x08, PSBI)
                        Store (Zero, FPWR)
                        Store (EGPS, FPID)
                        Return (ATIB)
                    }

                    Method (ABCM, 1, NotSerialized)
                    {
                        Store (Arg0, BRTL)
                        \_SB.PNLF.BSET (Arg0)
                        Return (Zero)
                    }

                    Method (ABCL, 0, NotSerialized)
                    {
                        Return (Package (0x52)
                        {
                            0x50, 
                            0x32, 
                            One, 
                            0x02, 
                            0x03, 
                            0x04, 
                            0x05, 
                            0x06, 
                            0x07, 
                            0x08, 
                            0x09, 
                            0x0A, 
                            0x0B, 
                            0x0C, 
                            0x0D, 
                            0x0E, 
                            0x0F, 
                            0x10, 
                            0x11, 
                            0x12, 
                            0x13, 
                            0x14, 
                            0x15, 
                            0x16, 
                            0x17, 
                            0x18, 
                            0x19, 
                            0x1A, 
                            0x1B, 
                            0x1C, 
                            0x1D, 
                            0x1E, 
                            0x1F, 
                            0x20, 
                            0x21, 
                            0x22, 
                            0x23, 
                            0x24, 
                            0x25, 
                            0x26, 
                            0x27, 
                            0x28, 
                            0x29, 
                            0x2A, 
                            0x2B, 
                            0x2C, 
                            0x2D, 
                            0x2E, 
                            0x2F, 
                            0x30, 
                            0x31, 
                            0x32, 
                            0x33, 
                            0x34, 
                            0x35, 
                            0x36, 
                            0x37, 
                            0x38, 
                            0x39, 
                            0x3A, 
                            0x3B, 
                            0x3C, 
                            0x3D, 
                            0x3E, 
                            0x3F, 
                            0x40, 
                            0x41, 
                            0x42, 
                            0x43, 
                            0x44, 
                            0x45, 
                            0x46, 
                            0x47, 
                            0x48, 
                            0x49, 
                            0x4A, 
                            0x4B, 
                            0x4C, 
                            0x4D, 
                            0x4E, 
                            0x4F, 
                            0x50
                        })
                    }

                    Device (LCD)
                    {
                        Method (_ADR, 0, Serialized)  // _ADR: Address
                        {
                            Return (0x0110)
                        }

                        Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels
                        {
                            Return (ABCL ())
                        }

                        Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method
                        {
                            ABCM (Arg0)
                        }

                        Method (_BQC, 0, NotSerialized)  // _BQC: Brightness Query Current
                        {
                            Return (BRTL)
                        }
                    }

                    Method (_DOD, 0, Serialized)  // _DOD: Display Output Devices
                    {
                        Return (Package (0x01)
                        {
                            0x0110
                        })
                    }

                    Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                    {
                        If (OSDW ())
                        {
                            Return (Package (0x02)
                            {
                                0x69, 
                                0x03
                            })
                        }
                        Else
                        {
                            Return (Package (0x02)
                            {
                                0x69, 
                                0x03
                            })
                        }
                    }

                    OperationRegion (PEGH, PCI_Config, Zero, 0x40)
                    Field (PEGH, ByteAcc, NoLock, Preserve)
                    {
                        VID0,   16, 
                        DID0,   16, 
                        GCMD,   8, 
                        Offset (0x24), 
                        BAR4,   32
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x0E)
                            {
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 

                                "model", 
                                Buffer (0x29)
                                {
                                    "Gigabyte Radeon RX Vega 64 Gaming OC 8GB"
                                }, 

                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Return (0x80000002)
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    OperationRegion (HDAH, PCI_Config, Zero, 0x40)
                    Field (HDAH, ByteAcc, NoLock, Preserve)
                    {
                        VID0,   16, 
                        DID0,   16
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x16)
                            {
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 

                                "layout-id", 
                                Buffer (0x04)
                                {
                                     0x01, 0x00, 0x00, 0x00                         
                                }, 

                                "name", 
                                Buffer (0x32)
                                {
                                    "Gigabyte Radeon RX Vega 64 Gaming OC 8GB HD-Audio"
                                }, 

                                "model", 
                                Buffer (0x32)
                                {
                                    "Gigabyte Radeon RX Vega 64 Gaming OC 8GB HD-Audio"
                                }, 

                                "device_type", 
                                Buffer (0x16)
                                {
                                    "Multimedia Controller"
                                }, 

                                "device-id", 
                                Buffer (0x04)
                                {
                                     0xF8, 0xAA, 0x00, 0x00                         
                                }, 

                                "subsystem-id", 
                                Buffer (0x04)
                                {
                                     0xF8, 0xAA, 0x00, 0x00                         
                                }, 

                                "subsystem-vendor-id", 
                                Buffer (0x04)
                                {
                                     0x02, 0x10, 0x00, 0x00                         
                                }, 

                                "compatible", 
                                Buffer (0x0D)
                                {
                                    "pci1002,aaf8"
                                }, 

                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Return (0x80000002)
                }
            }
        }
    }

 

The direct SSDT-X299-iMacPro.aml requires SSDT-X299-TB3-iMacPro.aml in addition. You also might have to add external objects and methods OSYS, OSDW, XOSI to your SSDT-X299-iMacPro.aml definition block, as these variables and methods come from  SSDT-X299-TB3-iMacPro.aml.

 

If you don't use SSDT-X299-TB3-iMacPro.aml, implement 

 


    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)))
    }

directly after the definition block of the SSDT-X299-TB3-iMacPro.aml.

 

Good luck,

 

KGP

I am getting a lot of error trying to implement it with you original ssdt. can you please compile it and send it to me. thanks.1222592362_ScreenShot2018-07-09at8_43_30AM.thumb.png.128f0c560a16d6c48fdbecce01bc47f0.png

Link to comment
Share on other sites

10.13.6 Guide Update Completed 
 
New EFI-Folder EFI-X299-10.13.6-Release-iMacPro1,1-110718 implemented in the originating post if this thread (guide)
 
EFI-Folder related changes:
  • Implementation of Clover_v2.4k_r4596
  • Implementation of new 10.13.6 USB port limit patch in config.plist 
Name*          Find*[Hex]               Replace* [Hex]           Comment
AppleUSBXHCI   837D880F 0F83A704 0000   837D880F 90909090 9090   10.13.6 USB Port Limit Patch

Enjoy and have fun, 

 
KGP
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Hi all,

 

I'm trying to upgrade from (my perfectly stable) 10.13.4 to 10.13.6 but I get stuck with 'couldn't allocate runtime area' errors when I boot the the upgrade installer. The same EFI folder boots 10.13.4 perfectly fine. So then I thought I'd try the latest EFI folder from this thread: same error. Latest EFI folder with the full 10.13.6 installer: same error. Now, the guide on page 1 mentions the OsxAptioFix3Drv-64.efi but the latest 10.13.6 EFI folder does not contain that one. So I am a bit puzzled which driver to use, and why my 10.13.4 boots ok, but the upgrader doesn't. Any suggestions ???

Link to comment
Share on other sites

13 hours ago, Peerke said:

Hi all,

 

I'm trying to upgrade from (my perfectly stable) 10.13.4 to 10.13.6 but I get stuck with 'couldn't allocate runtime area' errors when I boot the the upgrade installer. The same EFI folder boots 10.13.4 perfectly fine. So then I thought I'd try the latest EFI folder from this thread: same error. Latest EFI folder with the full 10.13.6 installer: same error. Now, the guide on page 1 mentions the OsxAptioFix3Drv-64.efi but the latest 10.13.6 EFI folder does not contain that one. So I am a bit puzzled which driver to use, and why my 10.13.4 boots ok, but the upgrader doesn't. Any suggestions ???

 

All recent EFI-Folder configurations contain AptioMemoryFix.efi.. 

Link to comment
Share on other sites

On 7/30/2018 at 8:18 AM, KGP-iMacPro said:

 

All recent EFI-Folder configurations contain AptioMemoryFix.efi.. 

Hi KGP-imacPro,

 

Sorry, I should have mentioned that I am using AptiomemoryFix.efi. I had tried OsxAptioFix3Drv-64.efi as well, but that gave similar result. This is the screen I am getting when booting the upgrade installer or the full 10.13.6 installer. I have also enclosed my EFI folder. The Clover I am using is 4449, but I get the same with 4617. If you can have a look at the EFI folder, I'd really appreciate it. Vielen dank.

 

IMG_2915.thumb.JPG.32f2c3ccc0835cee07cab6d7c2cf9ce8.JPG

EFI.zip

Link to comment
Share on other sites

5 hours ago, Peerke said:

Hi KGP-imacPro,

 

Sorry, I should have mentioned that I am using AptiomemoryFix.efi. I had tried OsxAptioFix3Drv-64.efi as well, but that gave similar result. This is the screen I am getting when booting the upgrade installer or the full 10.13.6 installer. I have also enclosed my EFI folder. The Clover I am using is 4449, but I get the same with 4617. If you can have a look at the EFI folder, I'd really appreciate it. Vielen dank.

 

IMG_2915.thumb.JPG.32f2c3ccc0835cee07cab6d7c2cf9ce8.JPG

EFI.zip

 

you rather should post this in the AptioMemoryFix or Clover thread.. 

Link to comment
Share on other sites

13 hours ago, KGP-iMacPro said:

 

you rather should post this in the AptioMemoryFix or Clover thread.. 

From the forum we do not mention here: "Yes the OsxAptioFix2Drv-free2000.efi is the only one that works for me.
I've tested AptioMemoryFix.efi, OsxAptioFix3Drv-64.efi, OsxAptioFixDrv-64.efi, OsxAptioFix2Drv-64. Always stuck at allocation error.". Apparently that is specific to the (MSI) X299.

Link to comment
Share on other sites

4 hours ago, Peerke said:

From the forum we do not mention here: "Yes the OsxAptioFix2Drv-free2000.efi is the only one that works for me.
I've tested AptioMemoryFix.efi, OsxAptioFix3Drv-64.efi, OsxAptioFixDrv-64.efi, OsxAptioFix2Drv-64. Always stuck at allocation error.". Apparently that is specific to the (MSI) X299.

 

Reflashing your BIOS might remove the issue with AptioMemoryFix.efi.. 

Link to comment
Share on other sites

2 hours ago, KGP-iMacPro said:

 

Reflashing your BIOS might remove the issue with AptioMemoryFix.efi.. 

I reset the BIOS, reflashed it, flushed the NVRAM, but in the end only OsxAptioFixDrv-64 + Test2-2016 proved stable. So now I can boot again, only my GTX1070 is no longer recognized, so I am now working on a 1024 x 800 screen instead of 3840 x 2160.... I have the Nvidia driver installed and selected, but after reboot it always reverts back to the crummy MacOS drivers with low resolution. 

 

I am probably going to try a fresh install on a different disk and see if that works, but if you you have any suggestions on the graphics issue, I’d lve to hear it.

Link to comment
Share on other sites

19 minutes ago, Peerke said:

I reset the BIOS, reflashed it, flushed the NVRAM, but in the end only OsxAptioFixDrv-64 + Test2-2016 proved stable. So now I can boot again, only my GTX1070 is no longer recognized, so I am now working on a 1024 x 800 screen instead of 3840 x 2160.... I have the Nvidia driver installed and selected, but after reboot it always reverts back to the crummy MacOS drivers with low resolution. 

 

I am probably going to try a fresh install on a different disk and see if that works, but if you you have any suggestions on the graphics issue, I’d lve to hear it.

 

graphics issues? 

Link to comment
Share on other sites

21 minutes ago, Peerke said:

I reset the BIOS, reflashed it, flushed the NVRAM, but in the end only OsxAptioFixDrv-64 + Test2-2016 proved stable. So now I can boot again, only my GTX1070 is no longer recognized, so I am now working on a 1024 x 800 screen instead of 3840 x 2160.... I have the Nvidia driver installed and selected, but after reboot it always reverts back to the crummy MacOS drivers with low resolution. 

 

I am probably going to try a fresh install on a different disk and see if that works, but if you you have any suggestions on the graphics issue, I’d lve to hear it.

Because you flashed NVRAM, you need to add the bootleg back to enable webdrivers.

  • Like 2
Link to comment
Share on other sites

Remaining key problem for new hopefully successful TB implementation..

 

40781109_ScreenShot2018-08-04at18_52_37.thumb.png.5a10fb1aefb32865dab6058bfd693dd9.png

 

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

 


        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 TB-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...

 

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..

  • Thanks 1
Link to comment
Share on other sites

SSDT-9.aml, apparently the one and only key for a complete and successful TB Hackintosh implementation...

In order to demonstrate that I am not yet totally insane with my guesses and ideas, let's demonstrate below that SSDT-9.aml seems to be one of possible cornerstone for reaching full Hackintosh functionality on a iMac Pro Hackintosh system.

However, due to the missing method "_ini" implementation (port and device initialisation/configuration) in SSDT-9.aml and likely also due to other missing Apple iMac Pro SSDT/DSDT ACPI implementations, my modified SSDT-9.aml yet fails in implementing the basic system essentials for a complete TB Hackintosh configuration and results in plenty of ACPI errors, Name Space Lookup failures and variable or argument errors during boot..

 

ss-1.png.7eac002ad130764151eab1e7d6c803fd.png

 

SC-2.thumb.png.79227cab61310f1ab754abcf09c5c77e.png

 

SC-3.thumb.png.e2eb2fcffeb6ba2edd2132fb2cc7d5c1.png

 

Nevertheless, few essential things are added when inspecting IOREG or Apple's system report..

While from the TB-kexts used on a real iMacPro only com.apple.driver.AppleThunderboltNHI.kext is active on our Hackintosh systems, SSDT-9.aml so far also loads at least com.apple.iokit.IOThunderboltFamily.kext.

 

1874498372_ScreenShot2018-08-05at12_45_06.thumb.png.15bfc841a44aee053ba11c6df6f22c3b.png

 

1095452198_ScreenShot2018-08-05at12_46_48.thumb.png.d1532ba198f35aa70941e30d6ccb8650.png

 

However, com.apple.driver.AppleThunderboltDPAdapterFamily, com.apple.driver.AppleThunderboltIP.kext, com.apple.driver.AppleThunderboltDPInAdapter, com.apple.driver.AppleThunderboltPCIDownAdapter remain without function due to frequent ACPI errors (Namespace Lookup errors, argument and variable errors, etc.) during boot, which are supposedly due to the yet missing Method "_ini" (port/device implementation/configuration) in my most actual SSDT-9.aml distribution and lacking related ACPI implementations...

 

2065633793_ScreenShot2018-08-05at13_01_23.thumb.png.87beb428b8153932d10c508a1a654fb0.png

 

Most essentially, with my current SSDT-9.aml, also the "RTPC true" entry adds under AppleThuderboltNHIType3..
 

2115289141_ScreenShot2018-08-05at12_47_31.thumb.png.a9faee1fe71d0817e35a71fd216a55b0.png

 

One might also find the one or other interesting IOREG add-ons under in all other TB PCI device implementations...

Please find linked here my current AML TB implementations for experts only (!!!), i.e. SSDT9.aml, SSDT-DTPG.amlSSDT-GNVS.amlSSDT-GG/SG-Methods.aml, SSDT-OSDW.aml and SSDT-SBUS.aml,  I also link once more @TheOffcialGypsy 's most recent iMac Pro dump, where you find the original SSDT-9.aml (BTW.. SSDT-10.aml might be noteworthy in addition)  besides the iMac Pro DSDT and other iMacPro SSDT implementations... linked as well the IOREG save of the original iMac Pro...

@TheOfficialGypsy, any more recent dump under 10.13.6 or 10.14 PB4 available?


I guess, it rapidly might become evident that the complexity of the problem apparently exceeds the capacities and knowledge of one single person... What about active collaborators, here online or maybe also within some small local "insitu" and "hands-on" workgroup in the Berlin/Germany area?

 

@apfelnico, @nmano, or who ever is interested and is able to join this endeavour?

I really don't know if there is any valid chance for a successful SSDT-9.aml Hackintosh TB implementation.. However, we should give it a try.. 

Enjoy and have fun,

 

KGP

 

P.S: SSDT-9.aml of the iMac Pro dump is broken and impossible to be compiled..

One needs to start with the SSDT-9.dsl and add "\_SB.PC01.BR1A.UPSB.AMPE ()" under:

 

 Scope (\_GPE)
        {
            Method (_L32, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
            {
                If (LNot (OSDW ()))
                {
                    If (LEqual (\_SB.PC01.BR1A.POC0, One))
                    {
                        Return (Zero)
                    }

                    Sleep (0x0190)
                    If (LEqual (\_SB.PC01.BR1A.WTLT (), One))
                    {
                        \_SB.PC01.BR1A.ICMS ()
                    }
                    Else
                    {
                    }

                    If (\_SB.PC01.BR1A.UPMB)
                    {
                        Store (Zero, \_SB.PC01.BR1A.UPMB)
                        Sleep (One)
                    }
                    Else
                    {
                    }

                    \_SB.PC01.BR1A.CMPE ()
                }
                ElseIf (LEqual (\_SB.GGII (0x01030012), One))
                {
                    \_SB.SGII (0x01030012, Zero)
                }
                Else
                {
                    \_SB.SGII (0x01030012, One)
                }

                \_SB.PC01.BR1A.UPSB.AMPE ()
            }
        }

It took me weeks and months to discover and fix these stupid errors..

 

For the sake of completeness and for simplicity, I also attach a minimal SSDT-9 hot plug injector AML, i.e. SSDT-9-minimal-hotplug-injector.aml, which pretty does everything for achieving a functional TB and TB XHC USB hot plug workaround on THB-C removed Hackintosh systems..

 

 

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

  • 4 weeks later...
2 hours ago, 8car said:

My supermicro x10dai + e5 2683v3 x2 geekbench singlecore score only reached 1885. what's the problem? can you help me?

 

1.) With your Haswell/X99 system, you are in the wrong thread.. this is Skylake-X/X299

 

2.) There is a OC problem with Broadwell-E and Haswell-E under both 10.13.6 and 10.14 PB8.. thus the problem of your low scores is well identified.. solution: NONE so far.. 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...