[EFI Loader] Error 12 Fix in Boot Camp for Apple T2 Security Chip Macs (apple_set_os loader v0.5)
But do we know why it works? the port swap needs to happen WITH the apple_set_os change right?
If so, we're enabling the intel GPU ? leaving the AMI dGPU active?
Given this is a resource related issue, how does adding another GPU improve things?
Yes, port swapping is for apple_set_os only and Windows doesn’t really use the iGPU because the internal display is connected to dGPU.
I don’t think Windows is actually out of resource but the way it communicate with the enclosure breaks the eGPU functionality. When using apple_set_os, MacBook will change the PCIe allocation in firmware level so Windows is able to allocate enough resource for the eGPU. However, enclosure with newer controller seems to work with the 16” without using any patches.
I bought a 16'' MBP (32GB/1TB/5500M GB) and Razer Core-X Chroma in which I installed a ASUS Vega 64. Atfer installing Windows 1909 via Bootcamp I was greeted with the code 12 error. Googling the issue brought me directly to this thread. Unfortunately the patched bootx64.efi, including trying the left-right-left dance, didn't work for me.
The solution for me was replacing the pci.sys with the one from the v1 1903-ISO, as well. Cold plugging still doesn't work but hot plugging works like a charm. I also installed the bootcampdrivers-version of the latest red AMD drivers.
Edit: I did little bit of testing. When I plug the Core-X Chroma into one of the right ports (I only tried the upper one so far), cold-plugging works. Windows just needs about 30 seconds to boot. I also did Benchmarks with 3DMark and the GPU score is practically identical on both the left and the right ports. I expected the eGPU to perform worse on the right ports because, as far as I know, they are only connected via PCIe x4 and the left ones via x8, correct?
The Core X requires apple_set_os_loader patch and port swapping.
Core X Chroma works without any patches if follow the instruction below:
1. Unplug the eGPU before booting to Windows
3. Once you are at Desktop, plug in the eGPU. Windows should recognise it immediately.
Yeah, Chroma doesn't support cold plug under Windows but at least it works without port swapping.
This fix worked for me, thanks! Had to do the port swapping. I needed to unplug my USB-C keyboard/mouse for it to work.
Will try a Razer Core X Chroma to avoid the USB-C port swapping.
Windows 10 Pro 1903 V1. Installed drivers from Adrenaline 2020 BootCamp Red Edition manually from Device Manager.
I used the pci.sys technique on BCD.com drivers and it worked great - no hot plugging and wake from sleep works. Running a 15" MBPro though and it seems like from posts they may be pretty different than 16", but in case it helps I documented the build here:
@aa15032261 First of all thank you for your work on this elegant Boot Camp solution! Once set up properly, no user interactions required during boot up. For pairings that work through eGPU cold-plug, this is as seamless an experience as you can get. I know your main priority is with the 2019 16" MacBook Pro + Radeon eGPU but many people can benefit from your EFI boot loader so I tested with other Macs.
First test was with Apple T2 Chip iGPU-only Macs, 2018 Mac mini and 2019 13" MacBook Pro. These Macs have been known to work inconsistently with apple_set_os.efi as you've found on the 2019 16" MacBook Pro. The Mac mini in particular is troublesome due to not having an built-in display. Your solution of automatically reseting until apple_set_os.efi works is a real blessing. The solution works well on the 2019 13" MacBook Pro too. The eGPUs I used were RX Vega Nano and RTX 2070 Gaming Boxes.
One behavior I noticed on both Macs that may provide further insight as to why this solution works in Windows without error 12 is the delayed peripheral loading of WiFi and Audio at boot. This is very similar to the behavior when I hot-plug the eGPU in Windows without using any solutions. The system would disable WiFi and Audio temporarily to allocate resources for the detected PCIe component through Thunderbolt 3. Once the eGPU starts working, WiFi and Audio come back working.
I tested this solution with non-Apple T2 Chip Macs as well, 2016 15" MacBook Pro and 2017 13" MacBook Pro. So far they both experience the reloading loop. My guess is that they both boot up much quicker due to a minimal pre-boot compared to the Apple T2 Chip counterparts. These Macs don't have issues with older apple_set_os.efi so it's not a priority. I was hoping for one Boot Camp solution for all.
Thank you again and I will do more testings with these Macs in the coming days!
When plugged into OSX it runs and detects fine (shows in the menu bar).
However, in Windows when plugged in it doesn't even detect. Downloaded drivers and it says that the hardware isn't detected. Is there some steps that I am missing here?
Also to note Windows 10 is running of a Samsung T5 USBc SSD.