2018 Mac Mini [8th,4C,B] + RX 580 @ 16Gbps-TB2 (Akitio Thunder2) + macOS 10.14.6 & Win10 1903 [sdedalus1] // Win10 on external SSD
My original setup was working perfectly (plug-and-play for MacOS; for Windows, hold option to boot to drive manager, hot-plug egpu at same time as hitting return to boot Windows drive). Then Mojave Security Update 2019-002 pushed at the end of 2019 broke it: black screen booting to both MacOS and Windows. Apparently the update includes a firmware update that changes how eGPUs are handled, which is also included somewhere in Catalina 10.15.2 or 10.15.3 and breaks eGPUs there too?
I've detailed below successful work-arounds both for MacOS and for booting Windows from an external drive.
Late 2018 Mac Mini – i3-8100B/Intel UHD 630 iGPU/8GB RAM/128GB SSD
bootrom: 1037.60.58.0.0 (iBridge: 17.16.12551.0.0,0) [after Mojave 10.14.6 Security Update 2019-002]
This guide assumes you have booted into Recovery (CMD-R on boot) and TURNED OFF BOOT SECURITY and ALLOWED BOOTING FROM EXTERNAL MEDIA in STARTUP SECURITY UTILITY (in the menu bar). I have turned off SIP as well, but I'm not sure that's needed. The eGPU is always plugged into the TB3 port nearest the ethernet jack. See the main post on wiring the Dell DA-2 to Thunder2.
I don't like the bother of having to change the Startup Disk between Mac and Windows in System Preferences all the time, so I always leave MacOS as default startup disk and hold Option at boot to select Windows.
Installation steps (pre-firmware update):
MacOS: plug and play. I was expecting to need Purge Wrangler but was happily suprised that MacOS sees the TB3 adapter as a regular TB3 eGPU and loads AMD drivers automatically. Ah, the good life, I miss it already!
Windows 10: Installed Windows to Go on external SSD drive. Note to install on an external disk, you will need an already existing Windows install, either on another computer, or via Bootcamp on the internal disk of the Mac Mini. If you have Windows installed on the Mini's internal drive via Bootcamp, you can skip these steps. My process:
1. Download Windows 10 ISO (version 1903 18362.295 or earlier) on macOS (to avoid Win Media Creation Tool on Windows), install on an external exFAT flash drive.
2. Open Bootcamp Assistant, go to menu, Actions > Download Bootcamp Drivers; copy DL’d WindowsSupport folder to external exFAT disk.
3. On an existing Windows computer (or Bootcamp install on Mac Mini SSD), connect external disk w/ISO and drivers; download Rufus and use to create Windows To Go installation on desired external disk (if it’s the same ext disk used in 1–2, copy the Win 10 ISO to the Windows computer/Bootcamp install first, before erasing).
3a. In Rufus, tick show USB drives, Win To Go, GPT & UEFI, default file formats
3b. After Rufus is done installing, copy WindowsSupport folder to Win To Go disk
3c. Note that Rufus will ned to erase the entire external drive; you can’t install to a partition on an existing drive with data you want to retain.
4. Be sure external booting and non-macOS booting are allowed in Startup Security Utility, by booting into Recovery partition on Mac Mini.
5. Restart and hold option for boot menu disk chooser, choose EFI Boot and boot into Windows.
6. After Windows loads and is set up, run Setup in WindowsSupport to install Bootcamp drivers. Mine hung at installing USB Virtual Host. Rerunning the Setup app hung at Enumerating Pre-Install Packages. So instead, I ran the BootCamp.msi installer in BootCamp\Drivers\Apple, which completed successfully.
7. Disable Windows updates to stay on version .295 or earlier, per https://egpu.io/forums/pc-setup/egpu-fail-after-update-to-windows-19-03/
See also this guide, which I based mine on:
To install eGPU in Windows:
1. Plug in HDMI directly from Mac Mini to monitor. Hold option at boot to load boot manager, choose EFI Boot (which is the Windows install). Download AMD drivers for your card. Turn off wifi/internet connection (so Windows does not auto-install drivers). Hot-plug eGPU via Thunderbolt, with eGPU NOT connected to monitor. Install AMD drivers. Shut down and unplug eGPU.
2. Restart while holding down opt to load boot manager. Wait until Wifi connects. Move arrow over EFI Boot/Windows disk, hot-plug eGPU at exact same time you hit return to load Windows. If you want to be able to see the boot manager when doing this, you'll need HDMI plugged directly into the monitor, then switch to eGPU input on the monitor. Once you're used to the timing, you won't need to keep HDMI plugged in, and you'll be able to do it "blind," without being able to see the boot screen. I use the light on my external drive as a cue: it's solid when booting, then flashing when boot manager is loaded and ready to go.
Installation steps (post-firmware update):
MacOS: Booting with eGPU plugged in results in black screen. Work-around: Boot with HDMI plugged directly to monitor, hot plug eGPU after booted to desktop. You can then disconnect HDMI if you wish.
Windows: Cold booting with eGPU plugged in, or plugging eGPU in at boot manager, results in black screen. Plugging eGPU at Windows desktop results in error 12. Work-arounds:
A. @semohe reports that you can avoid error 12 by not using the HDMI port, and instead using a USB-C to HDMI converter to plug directly from the Mini to the monitor when booting (to keep iGPU enabled), then hot plug the eGPU at Windows desktop. I don't have that converter, so I haven't tested this. It does seem less complicated than the EFI fix outlined below.
B. I installed rEFInd, apple_set_os, and @aa15032261 's revision to apple_set_os. This gets beyond black screen and allows booting to Windows with eGPU plugged in during apple_set_os dialogue. You will still need to disable some resources to avoid error 12. Note you still can't cold boot with eGPU plugged in. Because I had a working setup prior to the firmware update, I did not uninstall or reinstall AMD gpu drivers. If this is a new install, you can install the AMD drivers in step 5 below.
1. Install rEFInd, http://www.rodsbooks.com/refind/
I installed to an external flash drive [formatted MS-DOS (FAT) and MBR partition scheme] so as not to mess with my regular EFI partition. I used a simplified version of the manual install instructions:
a. On the flash drive, create a folder "EFI" and subfolder "Boot" inside it.
b. Download the rEFInd binary and copy the the "refind" folder to "Boot". Delete any files or folders that end in "aa64" or "ia32"; we only need the "x64" versions. Rename "refind_x64.efi" to "bootx64.efi" and "refind.conf-sample" to "refind.conf."
c. When using the terminal command given in rEFInd instructions to bless the drive, I received a disk error. So I used the following code to bless the "Boot" folder, rather than what's in the rEFInd manual instructions:
cd /Volumes/EFI/Boot bless --folder Boot --label rEFInd
Which I got from here: https://apple.stackexchange.com/questions/338574/bless-error-when-installing-refind . The "label" command doesn't seem to work, since it still appears as "EFI Boot" in the startup chooser; I imagine you can leave it out.
I'm not sure blessing is needed with a Windows installation somewhere on the computer, but since my Windows is on an external drive, I figured it can't hurt. If you're using a different drive or folder structure, remember you can just drag the folder from the Finder directly into Terminal after "cd" to autofill the directory path. If you're installing to the internal EFI partition, you will have to mount it first (you can do this with Clover Configurator). I don't know if the rEFInd install script works properly, I didn't try it.
2. Install apple_set_os:
Note that the .efi file you need is actually on the releases page, not the main github page above. You can get it here: https://github.com/0xbb/apple_set_os.efi/releases
a. Create "custom" subfolder inside "EFI" folder. Copy apple_set_os.efi from Github releases page to "custom" folder.
3. Install @aa15032261 's revision to apple_set_os. Thanks to @itsage for pointing out it works for Mac Mini 2018 as well.
a. Rename /EFI/Boot/bootx64.efi to /EFI/Boot/bootx64_original.efi
b. Copy bootx64.efi from the Github repository to /EFI/Boot
4. Restart with HDMI plugged directly from Mini to monitor while holding option for boot manager. You will choose EFI Boot to load apple_set_os and then rEFInd. Note that if you have your Windows drive plugged in, it may also be named "EFI Boot" and you'll have two disks with that name: one is Windows and one is rEFInd. (If you're not sure which is which, just unplug one to see which one disappears, then plug it back in.) Boot into rEFInd. Plug in eGPU when asked by apple_set_os. You will then boot into rEFInd drive manager, choose Windows. Windows will boot normally. Go to Device Manager. RX 580 will be yellow banged. Disable a PCIe controller; since I never use ethernet, I disabled PCI Express Root Port # 2 - A339, which hosts the ethernet port. (I also tried an unused TB3/USB-C port instead and that worked as well.) If you don't have AMD drivers installed yet, download them now, then turn off internet connection(s) and prevent them from autoconnecting on startup. Shut down and unplug eGPU.
5. Repeat step 4, booting to apple_set_os, plugging eGPU when prompted, booting to Windows through rEFInd. RX 580 will now appear in Device Manager. Install AMD drivers, if this is a new install. If you already had them installed in a working Windows version prior to the firmware update, you don't need to remove or reinstall the drivers. You can now switch to the eGPU input on your monitor and unplug HDMI.
Note that my flash drive with rEFInd is plugged into the USB-3.0 port at the end of the mini, and the external SSD is plugged into the TB3/USB-C port next to the HDMI port. Strangely, when I had the flash drive on a USB hub and the external Windows SSD on USB-3.0 port near the edge, RX 580 would not appear in device manager--not sure if that was a problem with the USB hub or where the Windows external drive was plugged in.
6. On all subsequent boots, you can now boot according to step 4 & 5 except that RX 580 will now be usable. At desktop, I switch to eGPU input on monitor, unplug HDMI, and Windows automatically adjusts display settings to use the RX 580 for the main display.
I was originally planning to use my Zotac GTX 970 from previous builds with the Mac Mini. However, I didn't realize until after I bought the Mac Mini that you can't install High Sierra on it—it's too new: the oldest OS you can install is Mojave, so no Nvidia drivers. This forced me to switch to the RX 580, which was only $100 used on eBay. This turned out to be great, because I had to underpower the GTX970 to 90% and underclock a few mhz to maintain stability with the Dell DA-2. In contrast, the MSI RX 580 V1 is stable at stock speeds. (With a mild overclock, it's mostly stable but does crash on graphics-intensive explosions unfortunately. I'm trying a mild undervolt now to see if I can push it at all.) This seems to be because although the reference 580 is spec'd at 185W TDP, my card has 145W TDP in vbios. The GTX 970 reference is 148W and the Zotac is 151.5W TDP, but suffers from voltage spikes at stock that the RX 580 doesn't.
At 198mm, the MSI RX 580 V1 just barely fits into the Thunder2 with cover off. I had to bend up the top lip of the Thunder2 case with a pair of pliers in order to fit the gpu inside, but I think the lip can easily be bent back into place to return to stock if desired.
I'd like to upgrade to a TB3 box and keep the small profile of the Thunder2 with DA-2, so will probably grab a Node Lite as soon as I find a cheap used one. I'll also probably move to a 5600 XT, which should also have similar 150W TDP, once those get cheap as well. I have 32GB RAM ready to install in the Mini, but need to find the stupid extra torx driver I need to take it apart.
If I were buying another Mac Mini, I would definitely get a 256GB version. Not only can you fit a Bootcamp install on it, but the SSD is about twice as fast. Although the advice to avoid Apple's overpriced RAM and SSD upgrades is generally good, I didn't realize how slow the 128GB SDD is. At 660 MB/s write and 2600 MB/s read, it's probably worth it to move to the 256GB to get 1300 MB/s write.
It's a shame Apple has gone backward in eGPU support with this latest firmware!!! And once you upgrade, it can't be reverted!