Contribute
Register

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

Status
Not open for further replies.
Thanks, I won't be publishing anything related to this on Github unless I get your clearance. I'll create the program tonight, how do you want to review?

In the meantime, can I ask you to take a look at my Thunderbolt implementation? Uploaded EFI folder with included IOreg export here: https://drive.google.com/open?id=1kuCpy-z3f6Um_pboMqJHz0symlKEUBay

I can highlight exact values I adopted if that would make it easier for you. Or if you need anything - just let me know.

Here's what I see in system report:
View attachment 345970

USB functionality works (both USB-A and USB-C), but Thunderbolt3 devices don't appear, neither if I boot with them nor hot-plugged. Note that I left the motherboard cable attached, because the card doesn't work without it on Windows, and I'm fine with not having hot-plug on Mac for the time being. Just need to make the port work.

The TB-SSDT is not at all implemented.. Which one do you use actually btw? Your TB-Adaptor is assigned to which PCIe slot?

It is also not the case that I am seeking for some work in the meanwhile.. I am fully covered with work related to the complete SSDT-9.aml implementation..

Thus, I really have no time for configuring each particular system of who ever is following this guide and thread..

I really hope on your comprehension and commitment, my friend..
 
Last edited:
The TB-SSDT is not at all implemented.. Which one do you use actually btw? Your TB-Adaptor is assigned to which PCIe slot?

It is also not the case that I am seeking for some work in the meanwhile.. I am fully covered with work related to the complete SSDT-9.aml implementation..

Thus, I really have no time for configuring each particular system of who ever is following this guide and thread..

I really hope on your comprehension and commitment, my friend..
Can you elaborate on what you mean by "not implemented"? My SSDT file is here:
upload_2018-8-13_3-24-24.png

I'm using Asus card that was supplied with the motherboard. I plugged it into Slot-6, aka PCIEX16_4, aka PC03.BR3B.SL0A, and BIOS is configured accordingly (it fully works on Windows).

I would not ask for your time unless I hadn't been stuck for a week already. I re-read the instructions in this post multiple times, including the posts you referenced, but something is still not clear to me, and I'm afraid I can't figure out what myself.

I'm not the only person in this thread who ended up with a non-working TB adaptor. If I could understand what I'm doing wrong in the TB implementation I would be happy to support others and formalize the knowledge so that it's easier for newcomers to understand the steps.
 
Can you elaborate on what you mean by "not implemented"? My SSDT file is here:
View attachment 345973
I'm using Asus card that was supplied with the motherboard. I plugged it into Slot-6, aka PCIEX16_4, aka PC03.BR3B.SL0A, and BIOS is configured accordingly (it fully works on Windows).

I would not ask for your time unless I hadn't been stuck for a week already. I re-read the instructions in this post multiple times, including the posts you referenced, but something is still not clear to me, and I'm afraid I can't figure out what myself.

I'm not the only person in this thread who ended up with a non-working TB adaptor. If I could understand what I'm doing wrong in the TB implementation I would be happy to support others and formalize the knowledge so that it's easier for newcomers to understand the steps.

Use SSDT-9-minimal-hotlug-injector.aml attached to the guide and properly adopt ACPI path and ACPI replacements for Slot-6!

If your TB-SSDT is properly loaded during boot, "PCI" Section of Apples System report should look like the following:

Screen Shot 2018-08-13 at 13.08.52.png


instead of Slot-4 you will have Slot-6 of course..

I cannot permanently interrupt my work to answer your questions as I am constantly losing what I had in mind to do in the other issue..

Just try to fix the TB-SSDT to be properly implemented..

It just requires an adaptation of the ACPI path and ACPI replacements from Slot-4 to Slot-6... right at the beginning of the aml-file!

That's really basic and IOREG is your friend..

Good luck,

KGP
 
I propose to collect/post config.plist CPxx->PRxx text snippets also for 8, 10, 12 14, 16 core Skylake-X processors, which I can subsequently link in my guide.

Here is the code snippet (config.plist) for re-ordering your processor threads
of an 8-core processor, such as Skylake-X i7-7820X:

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>
 

Attachments

  • Bildschirmfoto 2018-08-13 um 13.28.04.png
    Bildschirmfoto 2018-08-13 um 13.28.04.png
    48.5 KB · Views: 241
Here is the code snippet (config.plist) for re-ordering your processor threads
of an 8-core processor, such as Skylake-X i7-7820X:

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>

Perfect! Even better than my own for i9-7980XE.. :lol::thumbup:
 
Experimenting more concerning USB eject after wake from sleep issue:

It's odd it didn't work for you. Are you sure you added ALL external USB drives? Including Flash drives? (I haven't tested or noticed this issue on Flash drives, can't confirm).

The Spotlight workaround works perfect for me even after restarts. My machine's been on for weeks and drives connected for weeks. I come back and click on the drive and it "wakes up" fine and no eject issues. If I want to keep the drive running forever with no sleep (ie you come back even after a day, it will be instantly available) I use Keep Drive Spinning and it works wonderfully. Its a simple script and I sometimes use it.

It's definitely related to something with the USB injection, but I haven't figured it out yet (or I just gave up haha). My Gigabyte BIOS isn't as deep as an Asus board, so I don't see an "Internal CPU PLL Overvoltage" anywhere in the Designare EX.

Yes, I did now extensive tests - even excluded all internal drives from Spotlight indexing - and unfortunately it never prevented the uncorrect ejection.


Just catching up this conversation...Another option that works perfectly for me is to use a little app called "SafeSleeepUSB".
Free and Open Source/GNU license. You're welcome ;)

Did you try the other option by Ellybz (see post #9808)?

Thanks, @Ellybz for posting this.
It worked when I am running only the finder and browser. But under my working condition - running Davinci Resolve which makes use of files on this disk - the disk was not correctly ejected as without this script.

This means I would have to quit my main programs before initiating sleep mode which is not so far different from turning off the machine completely. The nice benefit of an instant sleep unfortunately doesnt work for me then.

Moreover, one USB drive didnt show up at all after wake, even after several times unplugging-re-plugging.
It showed up immediately though the moment when I unistalled the sleepUSB scripts.

---
So, now I am wondering:
Are there actually people with a stable X299 system who are not facing this USB eject after sleep problem?? (I mean, without any workarounds). If so, I would like a lot to see your EFI/ BIOS settings!
 
Of course it would be a valuable contribution but I doubt that it would be possible.. The CPxx->PRxx replacement likely could be done automatically, but an automatic configuration of an entire system SSDT for any existing system? The latter I see simply impossible.

So, you're sort of admitting that the Windows operating system does a much easier/better job at adapting to multiple different hardware configurations, compared to the Mac operating system. Whether it's a Thunderbolt PCIe card in slot 2,4, or 6, etc., the Windows O.S. always seems to "figure things out" without a lot of tedious manual configuration. With a portable "Windows to Go" external USB 3.0 SSD, even widely different CPU's (even Intel to AMD CPU) and system hardware, can be booted up, hardware discovered and configured and booted to the Windows Desktop in under ~5 minutes.
Why not a similar range of boot compatibility for a portable external USB 3.0 thumb drive or SSD, running a Hackintosh modified version of macOS on standard (Intel CPU + UEFI bios) PC hardware?
Example: boot from an external USB 3.0 SSD, and run macOS on your home computer (which has an Intel Kabylake CPU + chipset + UEFI bios). Then be able to transport that USB 3.0 SSD to a work PC, which has an older Intel X58 CPU + Legacy bios, and still be able to boot and run macOS on that X58 work machine.
Such a scenario is quite possible with "Windows to Go", but not so with macOS.

Side note: there's now an NVMe SSD -> USB 3.0 mobile adapter made by "Jeyi" + sold on aliexpress.com that does work with Samsung EVO 960 NVMe SSD's:
https://www.aliexpress.com/item/JEY...-disk-box-TYPE-C3-1-JMS583-m/32874418125.html

Another brand using the same JMS583 controller:

https://www.aliexpress.com/store/pr...-to-Type-C-Connector/3118034_32898417233.html
 
Last edited:
Experimenting more concerning USB eject after wake from sleep issue:



Yes, I did now extensive tests - even excluded all internal drives from Spotlight indexing - and unfortunately it never prevented the uncorrect ejection.






Thanks, @Ellybz for posting this.
It worked when I am running only the finder and browser. But under my working condition - running Davinci Resolve which makes use of files on this disk - the disk was not correctly ejected as without this script.

This means I would have to quit my main programs before initiating sleep mode which is not so far different from turning off the machine completely. The nice benefit of an instant sleep unfortunately doesnt work for me then.

Moreover, one USB drive didnt show up at all after wake, even after several times unplugging-re-plugging.
It showed up immediately though the moment when I unistalled the sleepUSB scripts.

---
So, now I am wondering:
Are there actually people with a stable X299 system who are not facing this USB eject after sleep problem?? (I mean, without any workarounds). If so, I would like a lot to see your EFI/ BIOS settings!
@fingers-crossed.
I know that some apps block sometimes the proper un-mounting/remounting of USB drives during the sleep process (I crossed this issue in the past with Mac Pros).

I also know that there some issues with WD drives during similar situations. Have you tested your configuration under a regular Mac? Lastly, there's an app called Mountain developed by appgineers that deals with these particular issues. It works very well. They have a free trial.
 
Last edited:
So, you're sort of admitting that the Windows operating system does a much easier/better job at adapting to multiple different hardware configurations, compared to the Mac operating system. Whether it's a Thunderbolt PCIe card in slot 2,4, or 6, etc., the Windows O.S. always seems to "figure things out" without a lot of tedious manual configuration. With a portable "Windows to Go" external USB 3.0 SSD, even widely different CPU's (even Intel to AMD CPU) and system hardware, can be booted up, hardware discovered and configured and booted to the Windows Desktop in under ~5 minutes.
Why not a similar range of boot compatibility for a portable external USB 3.0 thumb drive or SSD, running a Hackintosh modified version of macOS on standard (Intel CPU + UEFI bios) PC hardware?
Example: boot from an external USB 3.0 SSD, and run macOS on your home computer (which has an Intel Kabylake CPU + chipset + UEFI bios). Then be able to transport that USB 3.0 SSD to a work PC, which has an older Intel X58 CPU + Legacy bios, and still be able to boot and run macOS on that X58 work machine.
Such a scenario is quite possible with "Windows to Go", but not so with macOS.

Side note: there's now an NVMe SSD -> USB 3.0 mobile adapter made by "Jeyi" + sold on aliexpress.com that does work with Samsung EVO 960 NVMe SSD's:
https://www.aliexpress.com/item/JEY...-disk-box-TYPE-C3-1-JMS583-m/32874418125.html

Another brand using the same JMS583 controller:

https://www.aliexpress.com/store/pr...-to-Type-C-Connector/3118034_32898417233.html

Honestly I don't know what this is all about..

You can have a TB PCIe card in any PCIe slot you want.. basic TB functionality will aways be provided without adding any SSDT.
The latter is needed for adding hot-plug functionality or even more sophisticated, for a full thunderbolt local node implementation, which so far has been dumped up to my knowledge for iMac and iMac Pro systems where the respective TB-AML is exclusively slot-specific!

However, nobody achieved so far a full thunderbolt local node implementation on any Hackintosh system, even if slot-specific..

Thus, instead of aiming for the impossible and blaming macOS rather try to contribute in the realisation and implementation of the latter..

It is obvious that Windows is indeed more flexible in this and there is nothing to admit.

Finally if you want a "System To Go" preferably stay with windows...

It was never and it will never be the intention of Apple to develop a macOS To Go system that works with non-Apple devices and components..

I really do not see any reason for the entire above discussion.. Everybody here knows what Hackintosh is about..
 
Experimenting more concerning USB eject after wake from sleep issue:



Yes, I did now extensive tests - even excluded all internal drives from Spotlight indexing - and unfortunately it never prevented the uncorrect ejection.

What USB injection method are you using?

For me, I am NOT using the port limit patch.

I have a custom USB .kext where I individually went and checked each port and assigned them proper USB variables.

I also DO NOT use USBInjectAll.

I have uploaded my USB kext and energy saving settings.

Also I am NOT using any SSDT's (besides NVMe external icon patch)

For example, I have had a USB3.0 drive connected to my system for over a month (I do not shut down my system or make it go to sleep -- ever) and I come back to the system and the drive wakes up without a problem. It takes a few seconds for the beachball to go away). This has always been the case with macOS.
 

Attachments

  • Screen Shot 2018-08-13 at 11.42.14 AM.png
    Screen Shot 2018-08-13 at 11.42.14 AM.png
    76.3 KB · Views: 170
  • X299USB.kext.zip
    2 KB · Views: 109
Status
Not open for further replies.
Back
Top