I have a very similar config and first of all, wanted to thank you @itsage for pointing me in the right direction.
Secondly, I wanted to say my experience has been a lot easier than I expected.
I have a Mid 2018 13" MacBook Pro: 2.7 GHz i7, 16GB DDR3, 1TB SSD, Touch Bar, 4 TB3 Ports (running 10.14.1 & just updated to 10.14.2, with a Windows 10 Pro 1809 install via Bootcamp)
I just bought an RX 580 Gaming Box on sale during Black Friday. I was keeping an eye out for eGPU compatible with macOS Mojave & Windows around £300 for a while and got mine for £316.78 - not cheap but very good value for money in the UK.
It came with the standard non H2D firmware, so bandwidth was split evenly for USB & GPU.
I have plugged my Samsung T1 512GB SSD to the bottom left port (next to the TB3 port) and my Logitech MX Revolution receiver to the bottom right port. The other two ports are not used.
macOS is plug and play (almost) as the PSU fan stays on after shutdown. It's a little annoying and flashing the F1 BIOS from Gigabyte doesn't fix the problem with my Mac. Pulling the plug after shutdown is enough to make it stop.
Everything else works flawlessly on Mac, even Gigabyte's Aorus Engine app, that is capable of adjusting (or in my case, turning off, the lights).
Every app I use uses the GPU on the external display, Adobe Indesign uses it to accelerate previews... basically, it's performing as expected, and iStat Menu even picks up the Temperature, Core clock & Memory clock, as well as displaying graphs of GPU processor and memory usage; handy.
The scenic route
As a good satisfied customer I took the scenic route looking at Windows, after some (quick) research on this forum about Windows setup etc.
- I first tied the plug and play approach, left all security on, used DDU to remove the AMD drivers drivers, and installed the latest, rebooted with the GPU plugged and enjoyed something like a 50/50 success rate. The GPU is picked up and initialised most of the time, sometimes it won't. I got to 100% by disabling the PCI port of the WiFi card (Port #3) and the right hand side ports as well (Port #9).
- Next I had a look at automate-eGPU EFI (1.0.4) on a USB stick, plugged at the back of the Gaming Box. I turned off Secure Boot (No Security) and set External Boot to Allow booting from external media. Didn't touch SPI, not the boot loader of the MacBook, it's all external. That worked well, both GPU worked, XConnect kick in. But after reading about the impact of apple_set_os.efi, I decided to look at refind, on an external drive. (I was still running the standard, non H2D firmware back then)
Finally I installed refind on my external SSD. I still don't want this to be on the main SSD, but since my external one is a partitioned with GUID (AFPS + NTFS partitions) it already has one for EFI, so it was really easy to run the refind installer on the SSD.
Indentify the partition:
Run refind-install on it:
sudo ./refind-install --usedefault /dev/disk2s1
Mount it to customise it:
sudo mkdir /Volumes/EFI sudo mount -t msdos /dev/disk2s1 /Volumes/EFI
At this point it, the minimum you have to do is edit the refind config in /Volumes/EFI/EFI/BOOT/refind.conf, where you're looking for the following section:
# Tell a Mac's EFI that macOS is about to be launched, even when it's not. # This option causes some Macs to initialize their hardware differently than # when a third-party OS is launched normally. In some cases (particularly on # Macs with multiple video cards), using this option can cause hardware to # work that would not otherwise work. On the other hand, using this option # when it is not necessary can cause hardware (such as keyboards and mice) to # become inaccessible. Therefore, you should not enable this option if your # non-Apple OSes work correctly; enable it only if you have problems with # some hardware devices. When needed, a value of "10.9" usually works, but # you can experiment with other values. This feature has no effect on # non-Apple computers. # The default is inactive (no macOS spoofing is done). # spoof_osx_version 10.9
line is that this line must be uncommented. There's a lot more you can don with refind, like custom themes and defining what you see on your boot screen and it's worth taking a moment to make this exactly how you want it to be.
Reboot, and enjoy.
I then started playing with re-enabling back the two PCI connections, and found out that it was very happy to initialise everything when I reboot from macOS to Windows, and that I get the occasional black screen when I cold boot to Windows. The solution is elegant enough for me, I didn't like having to switch off the wifi card, before shutting down the laptop and having to reactivate it after login in.
The need for speed
Last but not least, when you have a stable setup, it's time to test it. I didn't benchmark it but rather played for a bit and was impressed with the RX 580. Mind you, I haven't had a powerful desktop GPU in nearly a decade, so games look very good to me.
I installed Gigabyte softwares and found out how buggy they are, then removed them.
The one thing that bothered me a bit was the H2D bandwidth, which seemed too aggressively capped. So I decided to give the firmware update a go. The guide to Update Thunderbolt 3 eGPU enclosure firmware in Boot Camp was handy but also scary. I tried to install the latest software from Intel:
- Bus Driver Version: 188.8.131.520 TBT_WIN10_64_184.108.40.2060.zip
- Firmware Update Tool Version 33 NUC7i5BN-NUC7i7BN-TBT-FW-Update-33.zip
I installed both and yellow banged the graphics card, and it showed up, hassle free. So I used the firmware update tool to lash the firmware Gigabyte_RX580IXEB_8GD_Ver1.0 H2D.bin from Gigabyte's page Gigabyte_RX580IXEB_8GD_Ver10_H2D.zip
And that too worked flawlessly. I rebooted and checked CL!ng with is now reporting double the bandwidth. You can see the benefit in games too, and I was pleasantly surprised by the performance of my two USB devices, the mouse works perfectly (no interruption) and the SSD is still fast enough to load games and program data, so it's perfect for my use-case.
I've then removed both Intel software as I don't intend to go back anytime soon.
I may post a full guide if there's people interested.
@oliverb If you read through my OP and others' builds with AMD eGPU, you'd get the answer. Better yet you can get these host laptops and try them out yourself to understand first-hand why certain configuration need disablement of PCIe root at boot to resolve error 12.
My goal is to always keep the iGPU and/or dGPU functional so that the eGPU can accelerate the internal display. Some Mac would work in Boot Camp plug-and-play with an AMD eGPU connected prior to boot. This often results in a deactivated iGPU/dGPU. That's fine if you're ok with using an external monitor only. Ultimately I'd prefer taking the extra steps to have full control of my laptop and eGPU.
@itsage actually I have tried a 13-inch MBP 2018 (exactly same model like in this thread) from a friend, and didn't have any problems with Error 12 at all. Also my MacBooks (15-inch 2018, 13-inch 2015) never have problems with Error 12. I don't understand why some should have problems and some not?!
For me one explanation could be the Windows System. I claim that for those 3 models (13 and 15-inch 2018, 13-inch 2015) Error 12 is not an issue with a good installation of Window 10 Build 1803 or newer. (and many more models, which I couldn't test. Yet.)
I know from personal experience that Windows tend to get defective very quick. I often have to restore an system image. With a good working (fresh) installation there are no issues. A lot of people that follow my bootcamp guide, don't encounter any Error 12 issue neither and are surprised that no invasive hack was necessary.
And following my guide the internal display works very well, too. This is of course, thank to your and @mac_editor's help!