Boot Camp eGPU Setup Guide - Windows Gaming with Macs
Boot Camp eGPU setup on a Mac can be plug-and-play for some and a total nightmare for others. The easiest Thunderbolt 3 Mac to pair with an eGPU is one that has Intel integrated graphics only such as the 13" MacBook Pro and 2018/2020 Mac mini. Mac computers with a discrete graphics card often require more resources and Windows isn't always very compliant. Error 12 (lack of resources) or flickering/stuck Windows logo at boot are primary issues when connecting an eGPU in Boot Camp. Now that Apple officially supports external graphics cards in macOS (since 10.13.4), we've devoted more effort to set up and maintain a functional external GPU in Windows 10 via Boot Camp. In the past three years, our community has provided many different solutions [External Graphics Card build guides]. This Boot Camp eGPU setup guide is a collection of those efforts.
- Graphics Switching & Your Mac
- AMD eGPU vs Nvidia eGPU
- Large Memory Allocation
- Step 1: Housekeep Windows 10
- Step 2: Force-activate iGPU
- Step 3: Solve eGPU Error 12
- Summarized Setup Procedure
- Windows Boot Up Procedure
Let's discuss graphics switching in Windows briefly. Forum member Sky11 explained the three modes in Windows 10 (AMD XConnect, Nvidia Optimus, and Microsoft Hybrid Graphics) in this post. In order for automatic graphics switching to work, the crucial prerequisite is the Intel integrated graphics card. AMD XConnect/Nvidia Optimus provides internal display loopback acceleration through the Intel iGPU with a Radeon/GeForce eGPU. In a Mac that has an AMD discrete graphics card and no functional iGPU, you would need Windows 10 1803 or newer. Win10 1803+ provides manual graphics switching per app/game through Graphics Settings. Therefore the ideal Boot Camp eGPU environment is an Intel iGPU-only Mac.
Prior to setting up an external GPU, it's a good idea to identify the routing of the PCIe connection over Thunderbolt 3 for your host Mac computer to learn about its capabilities. For example we used HWiNFO64 to check the arrangement of PCIe controllers and lane allocation on a Late 2016 15″ MacBook Pro (same as 2017 to 2019 model). The x16 PCI Express Controller connects to the Radeon Pro dGPU (uses 8 PCIe lanes). The x8 PCI Express Controller connects to the left-side USB-C/Thunderbolt 3 ports (uses 4 PCIe lanes). The x4 PCI Express Controller connects to the right-side USB-C/Thunderbolt 3 ports (uses 4 PCIe lanes). They account for 16 total PCIe lanes directly off the CPU. Here's the list of Thunderbolt 3 Macs that can work with eGPU in Boot Camp.
|Supported Macs||PCIe Speed|
|Thunderbolt 3 (USB-C)||32 Gbps|
|MacBook Pro (13-inch, T2 Chip, Mid 2020)
MacBook Air (13-inch, T2 Chip, Early 2020)
Mac mini (T2 Chip, Early 2020)
Mac Pro (T2 Chip, Late 2019) *
MacBook Pro (16-inch, T2 Chip, Late 2019) *
MacBook Air (13-inch, T2 Chip, Mid 2019)
MacBook Pro (15-inch, T2 Chip, Mid 2019) *
iMac (5K, 27-inch, Early 2019) *
iMac (4K, 21-inch, Mid 2019) *
MacBook Air (13-inch, T2 Chip, Late 2018)
Mac mini (T2 Chip, Late 2018)
MacBook Pro (15-inch, T2 Chip, Mid 2018) *
MacBook Pro (13-inch, T2 Chip, Mid 2018)
iMac Pro (5K, 27-inch, T2 Chip, Late 2017) *
iMac (Retina 5K, 27-inch, Mid 2017) *
iMac (Retina 4K, 21-inch, Mid 2017) *
iMac (21-inch, Mid 2017)
MacBook Pro (15-inch, Mid 2017) *
MacBook Pro (13-inch, Mid 2017)
MacBook Pro (15-inch, Late 2016) *
MacBook Pro (13-inch, Late 2016)
|* Indicates a Mac with discrete graphics card as standard equipment|
Prior to the 2020 13" MacBook Pros which use Intel Ice Lake processors (on-die Titan Ridge Thunderbolt 3 controller) all ULV-processor Macs have no direct Thunderbolt 3 to CPU connection. All PCIe lanes are routed through the platform controller hub (PCH). Apple Thunderbolt 3 support article states that the right-side Thunderbolt 3 ports on the 2016 & 2017 13" Touch Bar MacBook Pro have lower bandwidth than the left-side ports. This is due to the x2 PCI Express Root Port #9 - 9D18 to which these ports attach. 2018 & 2019 13" models use Intel 8th generation quad-core U-processors that provides more PCIe lanes. Therefore the right-side Thunderbolt 3 ports on these newer 13" MacBook Pros have full x4 PCIe bandwidth. The left-side Thunderbolt 3 ports attach to x4 PCI Express Root Port #5 - 9D14. We captured the PCIe arrangement of the Thunderbolt 3 15" MacBook Pro (shown on the left) and Thunderbolt 3 Touch Bar 13" MacBook Pro (shown on the right) in HWiNFO64 and labeled them for reference.
The 2018/2020 Mac mini is one of the very few desktop Macs without a discrete graphics card. This is great news for eGPU users, especially in Boot Camp mode. Also more encouraging is the 65W processor and direct Thunderbolt 3 to CPU connection. In a way the Mac mini combines the most desirable elements of a powerful quad-core+ processor with iGPU-only graphics. On top of that is a pair of Thunderbolt 3 controllers to power four Thunderbolt 3 ports. Similar to the TB3 15" MacBook Pro, the x16 PCI Express Controller is reserved for the optional 10Gb Ethernet card (uses 8 PCIe lanes), the x8 PCI Express Controller connects to the two USB-C/Thunderbolt 3 ports closest to Ethernet port (uses 4 PCIe lanes), and the x4 PCI Express Controller connects to the two USB-C/Thunderbolt 3 ports closest to the HDMI port (uses 4 PCIe lanes). One major concern with the Thunderbolt 3 Mac mini its firmware. Apple makes constant changes with each macOS system update and the Mac mini has been suffering black screen as well as boot hang issues when an eGPU is connected.
With the exception of a few base 21" models, the iMac lineup is perhaps the most complicated for eGPU use in Windows Boot Camp. Due to desktop-only use, Apple deemed there's no need for multiple GPU configuration like the 15" MacBook Pro. Thus they disabled the Intel iGPU in the iMac firmware (Radeon dGPU models). AMD XConnect and Nvidia Optimus are not available for these iMacs so our options are limited to either running the eGPU with an external monitor or Windows 10 1803+ (manual graphics switching) for internal display loopback. One positive news is the full bandwidth four PCIe lanes directly attached to CPU for Thunderbolt 3 connection.
AMD eGPU vs Nvidia eGPU
What's the best eGPU for Boot Camp is a question we've seen a lot. The answer is a sad joke that long-time Mac users understand all too well; get AMD graphics cards for macOS and Nvidia graphics cards for Windows. One AMD eGPU to rule it all in both operating systems is possible but you'd have to work for it. If you decide to go with the green team, stop reading any further and go hot-plug the eGPU to your Mac. More than likely it will work without much trouble. For the red team, get ready to go on an adventure called, error 12. We have learned the version of Windows 10 can make a huge difference. Currently the recommended version is Windows 10 1903 OS Build 18362.295. These are the AMD Radeon cards with native macOS eGPU support and can function in Boot Camp.
|Radeon Pro||Radeon RX|
|Pro WX 9100||Radeon VII|
|Pro W5700||RX 5700 XT|
|RX Vega Frontier Edition||RX Vega 64|
|Pro WX 8200||RX Vega 56|
|Pro WX 7100||RX 480 / RX 580|
|Pro WX 5100||RX 470 / RX 570|
|Pro WX 4100||RX 460 / RX 560|
Large Memory Allocation
The name of the game is to allocate enough resources for the external graphics card to function in Windows 10 while not severely crippling other functionalities of the laptop. Other than the Late 2016 Thunderbolt 3 Macs, 2017 and newer models have "Large Memory" allocation in the firmware. Large Memory allocation helps Windows handle a PCIe component such as an external graphics card without error 12. Through many different user build guides, we have gathered not only setup procedures but also pre-compiled DSDT override files for those who need to patch the firmware of Late 2016 MacBook Pros.
Mac computers with only two Thunderbolt 3 ports would likely be able to negotiate enough resources for eGPU automagically. If error 12 arises, disabling the connection to the non-essential components such as iSight camera or Ethernet controller would usually resolve it. Macs with four Thunderbolt 3 ports are slightly harder for eGPU implementation due to an extra Thunderbolt 3 controller and two more Thunderbolt 3 ports. It's best to confirm whether the Mac firmware has "Large Memory" in Device Manager > View > Devices by resources to determine the next steps.
Only a handful of Macs can work with an eGPU via hot-plug [connect at Windows Desktop] in Windows Boot Camp. The majority of reported successes are with Nvidia graphics cards. AMD graphics cards are likely to produce error 12. We have also learnt timed hot-plug [connect at Windows logo & spinning circles] can work with both Nvidia and AMD eGPUs. The most reliable method is cold-plug [connect when Mac is OFF]. Here are the recommended steps to set up an external GPU with a Thunderbolt 3 Mac and the reasons behind them. If you're familiar with using an external graphics card in Windows 10 via Boot Camp, proceed to the summarized setup procedure.
Step 1: Install DDU & Restore Point
As of Spring 2020, the best version of Windows 10 to use with an eGPU is 1903, specifically OS Build 18362.295 (KB4512508). Microsoft improved hot-plug detection and handling of Thunderbolt 3 devices in this version. Mac computers greatly benefit from these changes in Win10 1903. With the exception of a few models such as 2017 13" MacBook Pro (boot loop when paired with Radeon eGPU), most Macs work well with this latest Windows version. If you experience issues, go with Win10 1809. Also keep in mind Security Updates may break eGPU compatibility. Windows 10 1903 [OS Build 18362.329 and 18362.359] for example causes most Macs to experience error 12 with an AMD eGPU. It's best to disable automatic updates once you get a working configuration.
There are setup guides to install Windows on an external hard drive so that the internal PCIe flash storage can be preserved solely for macOS partition. We don't recommend having the Windows volume on an external drive because it would complicate the eGPU setup process and may cause unforeseeable maintenance issues. If your MacBook Pro has a limited amount of storage, partition the Boot Camp volume with 50GB for Windows installation and save the rest for the macOS partition. You can then install all software and games on an external hard drive.
Windows 10 can detect new graphics cards and install the drivers automatically. However the drivers are not up-to-date and sometimes interfere with setting up an external GPU. We recommend using DDU to uninstall the Radeon Pro drivers that came with Apple Boot Camp drivers (part of Boot Camp Assistant in macOS). DDU can also disable Windows automated graphics drivers installation so that you have full control of which drivers version to use. If you have a Mac with Radeon dGPU and plan on using a Radeon eGPU, the modified drivers from bootcampdrivers.com is the best approach to use both dGPU and eGPU concurrently.
Keep in mind Apple itself has not provided support for external GPU in Boot Camp. Therefore the following steps to set up an external graphics card with your MacBook Pro can possibly cause bootup issues. We highly suggest the use of the Windows System Protection feature. You can create manual Restore Points that capture snapshots of Windows in order to revert changes should you run into trouble.
Step 2: Use EFI boot loader
When booting into an operating system that is not Mac OS, the Mac firmware tends to deactivate the internal GPU if there's another GPU present. For example, the 15" MacBook Pro boots into Boot Camp with only the Radeon Pro dGPU activated. Only having an Intel iGPU, the 13" MacBook Pro sometimes hangs at the Windows bootup process if an eGPU is connected. Similarly the Radeon dGPU in MacBook Pro or iMac would be deactivated as well when there's a connected eGPU at boot. Obvious symptoms is a stuck Windows logo during boot that flickers or worse a black screen on dGPU Macs. If you have an external monitor connected, you may be able to see Windows Desktop on it (given proper drivers for eGPU was installed). To remedy this hurdle we rely on apple_set_os.efi to trick the Mac into believing it's booting into macOS. This boot loader file can be stored on either a USB drive or in the ESP partition of the Mac's internal drive through the use of an EFI boot manager.
We strongly recommend using Goalque's automate-eGPU EFI, a boot loader that conveniently integrates apple_set_os.efi file. He provided clear instructions on creating a USB thumb drive so that the internal drive stays intact. It's possible to create a small FAT partition on the internal drive as well if you prefer not to attached an external drive for the boot loader. rEFInd is another alternative for the need to use an external USB drive. With Apple T2 Security Chip being used in more Macs since 2018, we have seen issues with EFI boot loader. Thanks to forum member, aa15032261 who modified the apple_set_os to make it play well with Apple T2 systems. Once the iGPU is active in Windows, we want to make sure it has the latest Intel graphics drivers. If the iGPU shows up in Device Manager as "Microsoft Basic Display Adapter," you may need to install the Intel graphics drivers manually.
In the 2016 and 2017 15" MacBook Pro, we want to attach the iGPU to the internal display so that we can use eGPU internal display acceleration and disable the dGPU if needed. This is where 0xbb’s integrated.bat comes in. The purpose of 0xbb's GPU-switch script is to assign a particular GPU to the internal display at the next boot. We want to run integrated.bat in Command with Administrative privilege to execute iGPU attachment to the internal display. Upon the next and subsequent restarts, Windows will use the iGPU to power the Mac internal display. Microsoft Visual C++ 2013 may be required to run this script successfully. Users of 2018 & 2019 MacBook Pro with a Radeon Pro dGPU (both 15-in & 16-in) are encouraged to visit the build guides. This is due to Apple completely disabled the Intel iGPU in these Mac laptops. Force-activation and internal display attachment of the iGPU may cause black screen issue.
Warning: One important thing to keep in mind is that you have to re-enable PCIe Controller x16 – 1901 in Device Manager (if it's disabled) then re-attach the dGPU to the internal display by running dedicated.bat prior to booting back into macOS. Otherwise the next Windows boot will hang due to macOS force-attaching the dGPU onto the internal display. This is another reason why we recommend creating manual restore points in Windows. In the event Windows fails to boot, you can go back to a safe point without redoing the entire setup process.
Step 3: Solve error 12
The last and most challenging step is to overcome error 12 (not enough resources for eGPU). This almost always happens on a Mac with dGPU paired to an AMD Radeon eGPU. There are several methods to resolve error 12. This is also called "yellow-banged," as visually identifiable in Device Manager by the yellow triangle and black exclamation. A reasonable workaround is to disable PCIe controllers/bridges to free up enough resources so that Windows can handle hosting an external GPU. The PCIe arrangement is different for each Mac but the approach is similar. We start with the PCIe component with the least usage.
In the 13" non-Touch Bar MacBook Pro, disabling the iSight camera PCIe bridge would likely resolve error 12. The 13" Touch Bar is slightly different in that it has one more Thunderbolt 3 controller to handle the two additional Thunderbolt 3 ports on the right side. Some have success by disabling the PCI Express Root Port #9 – 9D18 that connects to the right Thunderbolt 3 ports and using the lower left Thunderbolt 3 port [closest to the TAB key] for eGPU.
The 15" MacBook Pro is rather challenging to allocate resources for the external graphics card. By disabling the x16 PCIe controller - 1901 to the discrete Radeon Pro GPU, we found Windows likely has enough resources for an external GPU. From eGPU.io members' experience, Windows has a harder time with AMD cards. When we tried AMD eGPU, we needed to also disable the PCI Express x8 Controller - 1905 that connects to the left Thunderbolt 3 ports. External GPU works reliably using the right-side ports that connect to the PCI Express x4 Controller - 1909. Again 2018-2019 15" & 16" MacBook Pro have a completely disabled iGPU and would need to use Windows Hybrid graphics instead of AMD XConnect/Nvidia Optimus through the Intel iGPU.
Boot Camp eGPU Setup Procedure
As the combination of of Host laptop + eGPU enclosure + Graphics Card grow exponentially larger, there's no one setup guide for all. The best and easiest approach is to check our External Graphics Card Build Table which has hundreds of Boot Camp eGPU successes. Find the build with matching components and Windows version and follow the instructions in the build guide would be a good start. For example, here are all the steps from start to finish to get an external graphics card running on a 2017 13" MacBook Pro. Do not connect the external GPU to the Mac laptop until instructed to do so. Download the linked resources at each step.
Windows Booting Procedure
We've tested different combinations of the R9 Fury/X, RX 480, RX 580, GTX 980 Ti, GTX 1070, and GTX 1080 with the AKiTiO Node, Gigabyte AORUS Gaming Box, Mantiz Venus, Razer Core, and Sonnet Breakaway Box on a Late 2016 15" MacBook Pro, a Mid 2017 13" non-Touch Bar MacBook Pro, and a Mid 2017 13" Touch Bar MacBook Pro. External GPU works well and reliably once these steps are completed successfully. A normal boot procedure is as follows:
- Connect the external GPU to designated Thunderbolt 3 port and power MacBook Pro on
- Cold boot shows rEFInd boot menu (hold OPTION at boot if apple_set_os.efi is on USB drive)
- Press ENTER on apple_set_os.efi boot item - MacBook Pro's display flashes briefly to confirm selection
- Press ARROW key to Windows 10 volume then press ENTER to boot
- Windows loads to Desktop and AMD XConnect/Nvidia Optimus icon shows up to confirm eGPU activation
There are reports of hot-plug possibilities. However, we've found it's not reliable and can crash Windows. Furthermore it may cause corruption in the bootup process. We've made a habit of always creating a manual restore point following a change. You never know when Windows will decide it can't boot into the Desktop anymore. Having these restore points labeled for each step allows you to go back to a particular stage should something happen.
Apple can facilitate external GPU support in Boot Camp by optimizing its firmware. We're uncertain how many engineers are working on external graphics support for High Sierra. Boot Camp eGPU is likely low on the list of priorities, if on the list at all. We've opened a thread to petition for support of eGPU in Boot Camp. Please voice your opinions so that Apple will hopefully focus more attention on Boot Camp Mac users.
We're all learners as we venture into the territory of eGPU Boot Camp environment. If you know of a better procedure to setup and use external GPU in Boot Camp with a Mac, please share your experience with the community.
Apple has made some firmware improvements in 2017 and newer Macs. Windows 10 now shows "Large Memory" under Device Manager » View » Resources by connection. This means some 2017+ Macs may be able to use Nvidia eGPU without encountering error 12, no workaround needed. AMD eGPU typically requires more resources and error 12 is still an obstacle. Recent versions of Windows 10 (18362.365 and newer) produce error 12 on many Macs. The only remedy is to downgrade Windows 10 to an earlier version without this issue.
Great write up as always @theITSage - a very useful summary!
I appear to be one of the fortunate few who's MBP-2017 benefits from the later, enhanced F/Ware. I have had no issues with Code 12 and my Device Manager does indeed display the noted 'Large Memory' allocation to the PCI bus; which is a relief!
Apple has made some firmware improvements in the mid-2017 MacBook Pro. Windows 10 now shows "Large Memory" under Device Manager » View » Device by resource. This means some Mid 2017 MacBook Pros may be able to use eGPU without encountering error 12, no workaround needed.
Impressive guide, just created a back up/restore point of my current set up so I can roll back if/when I mess it up trying my 570 out again...
2017 13" MacBook Pro Touch Bar
GTX1060 + AKiTiO Thunder3 + Win10
GTX1070 + Sonnet Breakaway Box + Win10
GTX1070 + Razer Core V1 + Win10
Vega 56 + Razer Core V1 + macOS + Win10
Vega 56 + Mantiz Venus + macOS + W10
@Wunair, yes there is an alternative method of fixing error 12 on 2016 & 2017 15" MBPs by having the eGPU allocated into 'large memory' instead of disabling PCI bridge. Here are the guides to do that:
- 2017 15" MBP error 12 fix by reallocation to 'large memory' script by jzfgs
- 2016 15" MBP error 12 fix using Clover DSDT memory override by Mikeal
@Wunair, also keep in mind AMD eGPUs seem to require more resources than Nvidia eGPU. If you're currently using an Nvidia eGPU, disabling x16 PCI Express Controller - 1901 [connects to Radeon Pro dGPU] would free up enough resources to resolve error 12. This way you can use TB3 ports on both sides.
So I believe I am about there, but when i log into windows (without egpu connected) the desktop displays, then flashes black, and then back to the desktop again. It appears that it's attempting to switch from the igpu to the dgpu.
I installed rEFInd, copied apple_set_os.efi over to the boot partition. Select it, then go over to windows and tell it to boot. I disabled the x8 1905 pcie bit, installed the intel video drivers, and ran the integrated.bat file.
Ideally windows would be functional sans egpu if needed, and then with egpu for gaming if desired and for firmware updating. Ideas?
Oh yeah. If I start menu open, it stops flashing back and forth...
I have already installed refind and copied the .efi file. However, when I boot into Windows, I can see two Microsoft basic adapter things. But when I tried to install the Intel graphics driver, it always said that my system is below the minimum requirement. How can I fix this?
Hi @沈念雨, which MacBook Pro are you using? The Intel graphics driver version you have maybe different than what's needed.