Mid 2015 15-inch MacBook Pro eGPU Master Thread
Has anyone tried enabling the iGPU of 2016-2019 MBPs by using this new method and my recent change in loading apple_set_os.efi?
This thread is not just about the ADT-Link R43SG, it is more about how to enable the iGPU and solve error code 12 if you using a TB3 enclosure.
@goalque, I tried the new method with the revised apple_set_os.efi on my 2017 13-in MacBook Pro. It worked well with Win10 1903 (OS Build 18363.657). Do I need to create a startup.nsh if I was to try it on 2018 Mac mini and 2019 13-in MacBook Pro? Thank you!
The best thing in using startup.nsh is its configurability. You can choose whether or not to load apple_set_os.efi, resize PCIe root bridge windows (the most difficult part and machine specific), change the gmux state by 6 mm commands and/or power off the dGPU (the last 4 mm commands). If you decide to switch off the dGPU, the screen goes black but the iGPU takes over and Windows login screen should appear in a few seconds, or in about half a minute if you are booting from an USB drive.
I am not sure if apple_set_os.efi can be used with Mac minis, iMacs or the nMP. You can always put a # character in front of the line you don't want to run. The above code block worked with my 2018 13" MBP so it should work with the 2019 13" MBP as well.
Feel free to ask more if some points are unclear.
For example: stall 1000000 waits for a second and reset -w makes a warm restart if apple_set_os.efi does not load successfully.
@goalque, I tried this new solution on 2019 13-in MacBook Pro last night. The revised apple_set_os.efi works very well in keeping the iGPU activated during boot. However the laptop struggles with Thunderbolt device detection once Windows fully loads. Hot-plug would detect the Thunderbolt device but causes error 12. This could be due to the latest Windows 10 version 2004 I'm running on this laptop. I created startup.nsh using a text editor and paste the code you provided in #post-74447.
It took a couple of days to figure out workable mm commands for the Radeon VII with the 2015 15" MBP (M370X). Ideally, the adjusted memory regions would allow hot plugging too as Windows enumerates with values it gets from the EFI. The problem is that deep hierarchy of bridges with Thunderbolt connection. Most of the bridges have no initial address value so Windows is clueless what to do with them.
You can edit the startup.nsh easily with the built-in ASCII editor in EFI Shell. Change to correct directory and type: edit startup.nsh.
You are correct, the Windows version does matter, how it enumerates. That algorithm is a mystery.
@goalque, I will try pci.sys replacement next (using one from Win10 1903 V1 ISO) and see if either Thunderbolt detection or hot-plug would improve.
This new solution is certainly more flexible but I'm afraid it's too technical. Your automate-eGPU EFI is more friendly for beginners. Is there a chance you can revise it to auto-reset when apple_set_os.efi is not active?
Yep, you need a hex calculator and lots of patience if you want to apply this method with other Macs.
So the only way I can get my Razer Core X / Vega 64 to load is by going through the whole Enable / Disable PCIE Ports procedure but I need to go through it numerous times and it's a bit hit and miss. Is this usual?
Would somebody be kind enough put up a screenshot of the ports to you need to target and the correct order in which to hit them.
I'm pretty sure I'm doing something wrong.
I was also wondering, does this procedure need to be done with each boot? Is there not some kind of script so the system 'remembers' how to allocate the devices once and for all?
Thanks in advance for any assistance.
This script is not tested with the Vega 64.
EDIT: I cancel my words. Something has changed while I tested the Samsung Portable SSD T5 on the other MBP. The Radeon VII shuts down during the boot into Windows and the start address of the PCIe root brige that I jotted down is now different. Disabling and enabling the root bridge does not seem to help. I am still on 18363.592.
I had this setup working fine (except I am using a 5700xt).
I was forced to reinstall my windows after an update stopped it working. I installed the 1809 (I think) version, didn’t do much to make it work.
Have been gaming on it for weeks now but tonight something has mysteriously made it code 12 again. I should mentioned that my Windows doesn’t update anything as I change what was necessary in the reg to make it not.
Any ideas on what made it stop working?
And also, more related to this tread, any simpler ways to get this setup to work?