Contribute
Register

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

Status
Not open for further replies.
Joined
Apr 17, 2012
Messages
156
Motherboard
Asus X299 Prime Deluxe
CPU
i9-7960x
Graphics
Vega 56
The CP-PR replacements for i9-7960X:
Code:
                <dict>
                    <key>Comment</key>
                    <string>CP00 -&gt; PR00</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwMA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwMA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP01 -&gt; PR01</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwMQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwMQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP02 -&gt; PR02</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwMg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwMg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP03 -&gt; PR03</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwMw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwMw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP04 -&gt; PR04</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwNA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwNA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP05 -&gt; PR05</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwNQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwNQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP06 -&gt; PR06</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwNg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwNg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP07 -&gt; PR07</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwNw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwNw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP08 -&gt; PR08</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwOA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwOA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP09 -&gt; PR09</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwOQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIwOQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP0A -&gt; PR10</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwQQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxMA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP0B -&gt; PR11</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwQg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxMQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP0C -&gt; PR12</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwQw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxMg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP0D -&gt; PR13</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwRA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxMw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP0E -&gt; PR14</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwRQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxNA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP0F -&gt; PR15</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AwRg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxNQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP10 -&gt; PR16</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxMA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxNg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP11 -&gt; PR17</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxMQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxNw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP12 -&gt; PR18</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxMg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxOA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP13 -&gt; PR19</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxMw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIxOQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP14 -&gt; PR20</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxNA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyMA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP15 -&gt; PR21</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxNQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyMQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP16 -&gt; PR22</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxNg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyMg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP17 -&gt; PR23</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxNw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyMw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP18 -&gt; PR24</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxOA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyNA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP19 -&gt; PR25</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxOQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyNQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP1A -&gt; PR26</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxQQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyNg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP1B -&gt; PR27</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxQg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyNw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP1C -&gt; PR28</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxQw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyOA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP1D -&gt; PR29</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxRA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIyOQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP1E -&gt; PR30</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxRQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzMA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP1F -&gt; PR31</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AxRg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzMQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP20 -&gt; PR32</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyMA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzMg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP21 -&gt; PR33</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyMQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzMw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP22 -&gt; PR34</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyMg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzNA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP23 -&gt; PR35</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyMw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzNQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP24 -&gt; PR36</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyNA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzNg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP25 -&gt; PR37</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyNQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzNw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP26 -&gt; PR38</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyNg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzOA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP27 -&gt; PR39</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyNw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFIzOQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP28 -&gt; PR40</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyOA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0MA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP29 -&gt; PR41</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyOQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0MQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP2A -&gt; PR42</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyQQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0Mg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP2B -&gt; PR43</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyQg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0Mw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP2C -&gt; PR44</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyQw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0NA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP2D -&gt; PR45</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyRA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0NQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP2E -&gt; PR46</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyRQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0Ng==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP2F -&gt; PR47</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AyRg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0Nw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP30 -&gt; PR48</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzMA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0OA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP31 -&gt; PR49</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzMQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI0OQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP32 -&gt; PR50</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzMg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI1MA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP33 -&gt; PR51</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzMw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI1MQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP34 -&gt; PR52</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzNA==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI1Mg==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP35 -&gt; PR53</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzNQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI1Mw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP36 -&gt; PR54</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzNg==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI1NA==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>CP37 -&gt; PR55</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    Q1AzNw==
                    </data>
                    <key>Replace</key>
                    <data>
                    UFI1NQ==
                    </data>
                </dict>

IOreg screenshot: pending from @egroys


You rock!! Thank you.

How does this look?
 

Attachments

  • Screen Shot 2018-08-14 at 9.40.38 PM.png
    Screen Shot 2018-08-14 at 9.40.38 PM.png
    137.4 KB · Views: 118
  • Screen Shot 2018-08-14 at 9.41.05 PM.png
    Screen Shot 2018-08-14 at 9.41.05 PM.png
    126.2 KB · Views: 104
Joined
Feb 24, 2013
Messages
2,425
Motherboard
ASUS WS X299 SAGE/10G
CPU
i9-9980XE
Graphics
Radeon VII
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
Thanks for all your answers.



With my real Mac (MBP) I never had this issue so I can't test it there.
The USB hard drives were from Seagate, also tested pen drives by SanDisk and others. So far all behave the same.
Will have a look into Mountain, thanks.





Thanks for your kext and uploads, @izo1

I will have a look into it.

As I have the ASUS Prime Deluxe mobo I followed kgp's guide and use his SSDTs (the EFI contribution with three SSDTs) as well as USB kext, without USBInjectAll, but with port limit patch.
I deactivated the patch as well as the kext, but the eject problem was still there (not trying the Spotlight workaround though).

As I don't use all my USB ports anyway, I will have a look in stripping down kgp's kext and deactivate some USB 2 functions to stay under the amount of 15 ports and after that deactivate the port limit patch.
This would also make future system updates maybe a bit smoother.



I also tried disabling XMP (found somewhere) -> but made no difference

In one forum someone solved it by disabling BIOS setting 'Internal CPU PLL Overvoltage'.
It looks like it was a Gigabyte mobo (GA-Z77X-UP5 TH). Is this setting also available in the Designare?

Looks like that setting is set to 0 on mine by default. Which probably means it’s disabled.

159EA7FE-8638-429D-92F0-9334A0A3C405.jpeg
 
Joined
Aug 4, 2018
Messages
47
Motherboard
ASUS Prime X299 Deluxe
CPU
i9-7940X
Graphics
GTX 1070 + GTX 1080 + RX 580
You rock!! Thank you.

How does this look?
This looks as if you have a correctly configured 16 core / 32 thread CPU. Good job!
 

kgp

Retired
Joined
May 30, 2014
Messages
6,785
Motherboard
ASUS WS X299 Sage 10G
CPU
i9-7980XE
Graphics
Vega 64
Mac
  1. iMac
  2. MacBook Pro
  3. Mac mini
Mobile Phone
  1. iOS
After looking into DSDT I figured out that NOTHING substituted SL0A. So the key to get this adopted was to remove the removal of PEGP. Now everything looks similar to your screenshot.


Okay, got it. Now it makes sense why I had to adopt.

After I switched the card to Slot-4, my original adoption that includes PEGP removal worked like a charm.

Attaching SSDT for Slot4 and Slot6 for the ones who are interested.

Now, my Thunderbolt device still doesn't appear when cold-plugged. BUT after moving the card back and forth between Slot4 and Slot6, when I hot-plug or unplug my RAID - I'm getting the system to freeze. Maybe it's a good sign?

1.) Your original adaptation? There is nothing to adopt, when using SSDT-9-minimal-hotplug-injector.aml with the GB Alpine Ridge in Slot-4 of the ASUS Prime X299 Deluxe... If somebody uses a TBEX 3 instead of the Alpine Ridge, he just might have to remove all "Device-ID", "SubsystemVendor-ID", "compatible" and "class-code" DSM entries from the file as "I" told you..

May I ask why SSDT-9-minimal-hotplug-injector.aml is now called SSDT-X299-THBT-TBEX3@Slot-4.aml and you even figure as the author of the latter file? My I ask what was your contribution to the creation of this file to justify the latter?

Please don't rename and redistribute "MY" files files and don't figure as an author of files which are definitely not yours and where your contribution was practically "ZERO"!

Therefore, please immediately remove SSDT-X299-THBT-TBEX3@Slot-4.aml and SSDT-X299-THBT-TBEX3@Slot-6.aml, "created" by "IF", immediately from post #9899 and don't distribute these files also elsewhere.

2.) BTW, I don't believe your Slot-6 fairy tails..

I use an Aquantia 10GB NIC in Slot-6 and my ACPI patch and ACPI replacement implementation tells a totally different story:

Code:
    Scope (\_SB.PC03.BR3A)
    {
        Scope (SL09)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Scope (PEGP)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Device (XGBE)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                     
                    })
                }

                Store (Package (0x10)
                    {
                        "AAPL,slot-name",
                        Buffer (0x07)
                        {
                            "Slot-6"
                        },

                        "built-in",
                        Buffer (One)
                        {
                             0x00                                     
                        },

                        "name",
                        Buffer (0x32)
                        {
                            "ASUS XG-C100C Aquantia AQC107 10-Gigabit Ethernet"
                        },

                        "model",
                        Buffer (0x11)
                        {
                            "Apple AQC107-AFW"
                        },

                        "location",
                        Buffer (0x02)
                        {
                            "1"
                        },

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

                        "device-id",
                        Buffer (0x04)
                        {
                             0xB1, 0x07, 0x00, 0x00                   
                        },

                        "subsystem-vendor-id",
                        Buffer (0x04)
                        {
                             0x6B, 0x10, 0x00, 0x00                   
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }

Thus , what needs to be disabled when using a TB-Adapter in Slot-6 of the ASUS Prime X299 Deluxe is not SL0A but SL09 and indeed also PEGP! I am therefore not surprised that "YOUR" awesome Slot-6.aml does not work at all...

Once more, immediately remove "BOTH" SSDTS from post #9899.

Thanks in advance,

KGP
 
Last edited:

kgp

Retired
Joined
May 30, 2014
Messages
6,785
Motherboard
ASUS WS X299 Sage 10G
CPU
i9-7980XE
Graphics
Vega 64
Mac
  1. iMac
  2. MacBook Pro
  3. Mac mini
Mobile Phone
  1. iOS
Right, I forgot about plugintype. You do have a step to enable it - I think it needs to be dropped then.
Then the only step it would replace is UUID generation with UUIDgen - I use a Python library to do the same.

I appreciate your thought-out proposal, thanks a lot for looking into this and I'm excited to contribute.

- Editing the existing Clover/config.plist wouldn't be hard to implement, my concern is that modifying system partition will require more QC and support, because the script would be able to brick the computer if something goes wrong during the execution. Even with a perfectly valid script there are ways this can go wrong, e.g. a power outage. Editing or creating the config during initial build would be safer, because you'll still need to use Clover configurator after and that'll validate the changes done by the script. Even if something goes very wrong - worst thing that'll happen is that installation USB will be unbootable. I'm sure ups wouldn't appreciate some users in this thread complaining about bricking their computer :)

- I agree that indeed changes in source config.plist would need to be synched-up to this project, this creates maintenance overhead. It's much smaller than supporting editing of unique configs users have already put on their EFI Partition, but still existent. Right now I have a template in there that I created manually, and that would need to be changed. A few approaches we can do to eliminate the overhead:
1) Remove the config.plist from your EFI distribution, so that the original source of truth is stored alongside this script. Probably not the best approach.
2) We can modify the script to replace config supplied in your EFI distribution with the one rendered from template (but the overhead will stay)
3) We can implement an option to modify the config supplied using XML replacement, so that Cloverfield is not bundled with a config.plist at all
+ For 2) and 3) we can actually implement a download of the most recent EFI distribution to make it easier to the users.
++ I could also add a feature to drop in appropriate SMC Kext pre-modified with the right number of cores
+++ If this happens to run on the target machine (e.g. under Windows and Linux) - it would be easy enough to auto-detect the CPU and make the script completely automatic.

Question: do you expect people will want to apply CPU replacements after initial build is done? My understanding is that this only has to be done once per build.

Let me know what I'm missing!

I just mention to verify that plugintype is enabled, although it is anyway enabled and checked by default in the config.plist of my EFI-Folder distribution! Nothing to be changed are removed in my guide text! Please don't tell me what I should do in my guide..
Everything is well thought and correct as implemented..

Your new approach for an automatic implementing of the CPxx->PRxx replacements is the same no-go as your initial proposal..
I also do not see any reason for automatising this step at all. The manual implementation of respective available code snippets is much more transparent and really straight to be done. It will be part of my guide as soon all respective code snippets for all available Skylake-X CPUs have been published along this thread..

Thus, please let's stop at this place with your endeavours.. I also mislike that you put my guide upside down and rather confuse all readers with respective numerous postings..
 
Joined
Nov 7, 2017
Messages
30
Motherboard
Asus Prime x299 Deluxe
CPU
i9-7900x
Graphics
Radeon Vega Frontier Edition
My system has been chugging along pretty well for the past 7 months. Lately I've been experiencing a lot more lock ups. In the past it was usually just when I was encoding a video with Adobe Media Encoder. But in the last 24 hours I've had 3 lock ups and I was doing nothing more than browsing a web page and playing a video in VLC. After the second lock up today I decided I should try bringing my system up to date with the guide. To test it out I encoded a video using AME with not problems. Then I ended up having another lockup doing nothing more than watching a video in VLC again a few hours later.

When it locks up it doesn't always produce a kernel panic.

Attached are the last couple that were caught.

I'd appreciate any help anyone can give! Let me know what additional information I can provide.
 

Attachments

  • Kernel_2018-08-14-141201_Jays-iMac-Pro.panic.txt
    9.2 KB · Views: 50
  • Kernel_2018-08-14-020035_Jays-iMac-Pro.panic.txt
    10.9 KB · Views: 90
Joined
Dec 31, 2012
Messages
595
Motherboard
Asus Sage 10/G X299
CPU
i9-10980XE
Graphics
AMD Radeon VII
Mac
  1. iMac
  2. Mac mini
Mobile Phone
  1. iOS
I haven't fully tested sleep, because I never used it anyway (even on real Macs)...but last time I checked it seemed to work "ok" especially with no USB devices connected (except for keyboard and mouse and my dual cinema displays USB cables that turn into a hub and speakers).

Anyway, I've attached my EFI folder, but beware that you have to set your own boot options as mine are custom and it won't boot your machine, unless you modify it before using it (I suggest you match the boot to config.plist on page 1 of this thread provided by kgp).

And you need to modify TSCAdjustReset.kext to fit your X299 CPU parameters....and remove VegaGraphicFixup if you are not using a Vega.

As far as BIOS settings, I haven't touched it in a while, but it's similar to the one on post 1 of this thread under Gigabyte. I have the memory OC'd a little bit and maybe one or two other settings (not related to sleep).
Thanks i will test and report
 
Joined
Aug 4, 2018
Messages
47
Motherboard
ASUS Prime X299 Deluxe
CPU
i9-7940X
Graphics
GTX 1070 + GTX 1080 + RX 580
1.) Your original adaptation? There is nothing to adopt, when using SSDT-9-minimal-hotplug-injector.aml with the GB Alpine Ridge in Slot-4 of the ASUS Prime X299 Deluxe... If somebody uses a TBEX 3 instead of the Alpine Ridge, he just might have to remove all "Device-ID", "SubsystemVendor-ID", "compatible" and "class-code" DSM entries from the file as "I" told you..
Dear KGP,

I respect your work as much as anyone in this thread, trust me you don't have to be so rude to communicate your points.

Having had no experience with SSDT and hackintoshes prior to last week, it did take me a couple of days to figure out how to make the Thunderbolt SSDT to work on my system. My changes are very minimal and by no means are significant, and I'm not seeking any credit for them. By "original" adaptation I mean the version that was created directly from yours before I removed PEGP removal.
I'm not sure how I missed when you instructed me to remove these values from the file, it's certainly very unfortunate. For now I changed the values with the ones I see in IOreg. So you're saying I can just remove them all and it will still work? Why not do that to make it portable between Alpine Ridge and TBEX3?

May I ask why SSDT-9-minimal-hotplug-injector.aml is now called SSDT-X299-THBT-TBEX3@Slot-4.aml and you even figure as the author of the latter file? My I ask what was your contribution to the creation of this file to justify the latter?
The file is called that because that's what I named it. I made most of the files by duplicating a starting minimal one and copying the text from the website snippets, or from other files, so there were no original names to retain. Furthermore, now that I have 4 different files: AR@Slot-4, AR@Slot-6, TBEX3@Slot-4 and TBEX3@Slot-6, it would be confusing if they're called the same. What would you call them?

Please don't rename and redistribute "MY" files files and don't figure as an author of files which are definitely not yours and where your contribution was practically "ZERO"!

Therefore, please immediately remove SSDT-X299-THBT-TBEX3@Slot-4.aml and SSDT-X299-THBT-TBEX3@Slot-6.aml, "created" by "IF", immediately from post #9899 and don't distribute these files also elsewhere.
I have removed these files upon your request. I didn't give much thought to the creator filed, as I originally didn't even expect to distribute them anywhere, and merely used this as a differentiator between files I modified and the ones I didn't.

2.) BTW, I don't believe your Slot-6 fairy tails..

I use an Aquantia 10GB NIC in Slot-6 and my ACPI patch and ACPI replacement implementation tells a totally different story:

Code:
    Scope (\_SB.PC03.BR3A)
    {
        Scope (SL09)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Scope (PEGP)
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Device (XGBE)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                   
                    })
                }

                Store (Package (0x10)
                    {
                        "AAPL,slot-name",
                        Buffer (0x07)
                        {
                            "Slot-6"
                        },

                        "built-in",
                        Buffer (One)
                        {
                             0x00                                   
                        },

                        "name",
                        Buffer (0x32)
                        {
                            "ASUS XG-C100C Aquantia AQC107 10-Gigabit Ethernet"
                        },

                        "model",
                        Buffer (0x11)
                        {
                            "Apple AQC107-AFW"
                        },

                        "location",
                        Buffer (0x02)
                        {
                            "1"
                        },

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

                        "device-id",
                        Buffer (0x04)
                        {
                             0xB1, 0x07, 0x00, 0x00                 
                        },

                        "subsystem-vendor-id",
                        Buffer (0x04)
                        {
                             0x6B, 0x10, 0x00, 0x00                 
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }

Thus , what needs to be disabled when using a TB-Adapter in Slot-6 of the ASUS Prime X299 Deluxe is not SL0A but SL09 and indeed also PEGP! I am therefore not surprised that "YOUR" awesome Slot-6.aml does not work at all...

Once more, immediately remove "BOTH" SSDTS from post #9899.

Thanks in advance,

KGP
You are free to believe whatever you want, my friend. If you choose to think that I entertain myself by maliciously counterfeiting SSDTs and IOreg screenshots just to confuse you - I don't think there's anything I can do to make you change your mind.

Now, it's fairly clear that my contribution is not welcome here, and as far as I can see you would prefer to run this activity on your own. I don't think it's the best choice for the community because you seem to be busy with many things and can't help everyone, but I also understand I don't have any leverage here to make my point.

I'll refrain from any further comments on how to improve your instruction and sharing derivatives of your work.

Please don't feel obliged to respond to my requests for help, however I'd like to stay in this thread (until my system is fully functional) and occasionally help other members with the little knowledge I obtained during the last week. Many people, including myself, get this fairly expensive Asus motherboard because of how active this thread is, and I would like to find a path to make my system fully functional, which is not quite what I have now. After that I would gladly abandon this thread and stop causing tension in your kingdom :)
 
Last edited:

kgp

Retired
Joined
May 30, 2014
Messages
6,785
Motherboard
ASUS WS X299 Sage 10G
CPU
i9-7980XE
Graphics
Vega 64
Mac
  1. iMac
  2. MacBook Pro
  3. Mac mini
Mobile Phone
  1. iOS
Two likely important alternative comments for testing and to be discussed within our community:

1.) CPxx -> PRxx replacements and CPU thread ordering


In fact there is very simple and straight approach for achieving a fully automatic CPxx -> PRxx replacement and CPU thread ordering for any Skylake-X CPU on any X299 mainboard on the market.. However, so far I kept this latter approach secret as I do not no about negative side implications..

In any case, the latter approach would consist of implementing Apple's iMac Pro APIC table APIC.aml.zip in /EFI/Clover/ACPI/patched/, which directly reveals a properly ordered PRxx CPU thread implementation after boot..

However, as stated above, the validity of this latter approach yet has to be confirmed by all users..

2.) USB 2.0 and 3.0 sleep/wake ejection issues

I fully understand that we are dealing with an enjoying, persistent XHC USB sleep/wake ejection issue during sleep/wake on our Sklakye-X/X299 systems, which urgently requires some solution.

However, what I am not able to follow is why most of you insist in using outdated USB2.0 and USB3.0 ports.. By employing the USB3.1 Type-A and Type-C ports (which are backwards compatible with USB2.0 and USB3.0 devices), the sleep/wake ejection issue of USB devices can be entirely removed.

Less I am able to follow why one would sell his Skylake-/X299 system instead, however @TheOfficialGypsy 's personal decision, which I fully respect and tolerate..

Enjoy and have fun,

kgp.png
 

Attachments

  • APIC.aml.zip
    869 bytes · Views: 88
Last edited:

kgp

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

I respect your work as much as anyone in this thread, trust me you don't have to be so rude to communicate your points.

Having had no experience with SSDT and hackintoshes prior to last week, it did take me a couple of days to figure out how to make the Thunderbolt SSDT to work on my system. My changes are very minimal and by no means are significant, and I'm not seeking any credit for them. By "original" adaptation I mean the version that was created directly from yours before I removed PEGP removal.
I'm not sure how I missed when you instructed me to remove these values from the file, it's certainly very unfortunate. For now I changed the values with the ones I see in IOreg. So you're saying I can just remove them all and it will still work? Why not do that to make it portable between Alpine Ridge and TBEX3?


The file is called that because that's what I named it. I made most of the files by duplicating a starting minimal one and copying the text from the website snippets, or from other files, so there were no original names to retain. Furthermore, now that I have 4 different files: AR@Slot-4, AR@Slot-6, TBEX3@Slot-4 and TBEX3@Slot-6, it would be confusing if they're called the same. What would you call them?


I have removed these files upon your request. I didn't give much thought to the creator filed, as I originally didn't even expect to distribute them anywhere, and merely used this as a differentiator between files I modified and the ones I didn't.


You are free to believe whatever you want, my friend. If you choose to think that I entertain myself by maliciously counterfeiting SSDTs and IOreg screenshots just to confuse you - I don't think there's anything I can do to make you change your mind.

Now, it's fairly clear that my contribution is not welcome here, and as far as I can see you would prefer to run this activity on your own. I don't think it's the best choice for the community because you seem to be busy with many things and can't help everyone, but I also understand I don't have any leverage here to make my point.

I'll refrain from any further comments on how to improve your instruction and sharing derivatives of your work.

Please don't feel obliged to respond to my requests for help, however I'd like to stay in this thread until my system if fully functional and occasionally help other members with the little knowledge I obtained during the last week. Many people, including myself, get this fairly expensive Asus motherboard because of how active this thread is, and I would like to find a path to make my system fully functional, which is not quite what I have now. After that I would gladly abandon this thread and stop causing tension in your kingdom :)

It is not a question how you call these files as you will or already have simply removed them.. You might not put attention to the figuring author of a file, others do.. Anyway, at least you drew enough attention to implement yourself as the figuring author of the two files under debate..

I agree that even I have problems in permanently referring all substantially contributing authors, but I do it at least within the guide text and along my postings and you are definitely not one of them, sorry..

Don't worry.. if there are really SSDT compatibility issues with the TBEX 3, I will publish a separate file specified for the latter PCIe adaptor. You do not have to do it for me..

I am very willing to help you in properly implementing your system.. All respective requests from your side are more than welcome..

And nobody asked you to abandon this thread... passionated followers like you are of course very welcome..

However, remain within your trails and don't cause even more attention and work from my side as necessary. And moreover, don't distribute, rename and author software which is neither yours nor has been properly implemented..

That's all I ask for...

I guess it is not arrogant and selfish to mention that this guide and thread has become one of the most read and commented guides and threads along this forum.. I think we have been and we are doing pretty well also without all surprising comments and suggestions by somebody who just recently joined the forum (4 August 2018).. it is definitely not my kingdom though..;) I just try to maintain things ordered and consistent..

Have a great day and nothing for bad,

KGP :wave:
 
Last edited:
Status
Not open for further replies.
Top