[Solved] 2013 Mac Pro (nMP, 6.1, 2013, Trashcan) eGPU Setup Master Thread
I just wanted to offer up my experiences getting the nMP (Mac Pro 6.1; Mac Pro 2013) running with an eGPU on Bootcamp. Partly because it was a bit of a struggle to find concrete info about the Mac Pro and partly because, as of right now, I'm not entirely sure what I did to get it working, or whether the process I went through is fully documented. I am not, by any means, an expert with the deep, inner workings of MacOS or Windows, but I'm hoping that others might be able to shed some light on it.
My build is as follows:
- Mac Pro 2013 running Intel Xeon E5-1650 @ 3.50Ghz
- Dual AMD FirePro D700
- OWC Mercury Helios FX eGPU enclosure
- Radeon RX 580 8GB
- Apple Thunderbolt 3 to Thunderbolt 2 adapter
- OWC DriveDock (USB C) with SATA HDD running Windows 10
- Belkin Thunderbolt 2 dock
- MacOS Mojave (10.14.6)
- Windows 10 Pro (1809)
- automate-eGPU EFI, running on a USB stick
To begin, getting the eGPU working under MacOS Mojave was trivial - standard procedure of running automate-eGPU with no problems whatsoever. Windows 10, however, is a totally different story.
From what I could tell, the Mac Pro was unable to properly use an eGPU enclosure due to a firmware quirk that prevented proper access to them. The last mention of the Mac Pro in this forum that I could find (and please, correct me if I've missed something) were users trying to overcome Error 12 on the eGPU or Error 43.
Initially, I got Error 12 on the RX 580. I used the pre-compiled DSDT override to get past that and then got stuck on the classic error 43. Drivers wise, I DDU'd everything off the machine and used the bootcampdrivers.com version of the Radeon drivers. No change to error 43.
I left it for a while as I figured it just wasn't possible to get eGPU working. Then, out of what I assume is an act of wanton cruelty and stupidity, I decided to dive into Device Manger and start disabling some PCI-to-PCI Bridge devices in there, taking (somewhat little) care not to disable ones the eGPU sat on. I disabled five of them and rebooted and... it worked. Error 43 was gone and all three GPUs are now working.
In order to get the machine to actually use the eGPU, I have to physically plug my monitor directly into it. The graphics performance options in Windows 10 doesn't show the Radeon RX 580 as the high-performance option, possibly because it picks up the second D700 and thinks that's the high end option. When the monitor is plugged directly into the RX 580 though, the performance options only show that card. The Radeon Settings app also changes to show the RX 580 as the Primary/Discreet card, with the two D700s appearing as well as Discreet options.
And it works. Loading up Arkham Knight (currently the most GPU taxing game I have on my system right now) shows the RX 580 being used, with full access to its 8GB of VRAM. If my monitor is plugged into the Mac Pro directly, it reverts back to the D700s, with the expected performance hit.
So, now I have some questions!
- Why does this work? Has it been fully documented with regards to the Mac Pro?
- What exactly have I done in disabling some of those PCI-to-PCI Bridges?
- Has anyone else had the same success?
- I'm running Windows 10 externally on a SATA HDD. This is connected via the OWC Drive Dock, which is running into a Belkin Thunderbolt 2 dock via USB 3. In order to get this aspect working correctly, I had to transfer a copy of the EFI file for Windows off that hard-drive and onto the automate-EGPU EFI thumb drive. The boot process currently involves powering on the Mac Pro, selecting the thumb drive, powering up the OWC Drive Dock and letting the Windows HDD spin up for a few seconds before selecting the Load Windows option in automate-EGPU.
- In terms of the Windows installation itself, it's a bit of a Frankenstein nightmare. The drive was pulled out of my old Mac Pro 5.1 tower. I've removed as much of the old machine from it as possible and loaded fresh Bootcamp drivers using Brigadier. At some point, I'll format it and do a fresh install, but it's not viable at the moment.
I'm more than happy to provide more technical information if needed/requested!
Why does this work? Has it been fully documented with regards to the Mac Pro ?
@aj_scarcella Code 12 usually implies there aren't enough resources to allocate the PCIe device. Error 43 has myriad causes. Disabling PCIe devices frees up resources. No we don't have any documented solution for Mac Pro 2013 Bootcamp - this would be one if reproducible.
What exactly have I done in disabling some of those PCI-to-PCI Bridges?
Freed up precious resources for PCIe device allocation. If possible please share what all items you disabled. Also share your bootrom information from System Report in macOS. @itsage would definitely be interested in this. Are you by chance using apple_set_os.efi (which comes by default with automate-eGPU EFI) as well?
Has anyone else had the same success?
Not on this forum, I don't think so.
Thanks for the reply!
These are the PCI-to-PCI Bridges I disabled:
- PCI bus 17, device 10, function 0
- PCI Slot 2 (PCI bus 95, device 4, function 0)
- PCI Slot 4 (PCI bus 21, device 5, function 0)
- PCI bus 21, device 0, function 0
- PCI Slot 2 (PCI bus 95, device 1, function 0)
This was done (as I mentioned, stupidly) at random. Let me know if further information is required out of Device Manager. I should note that I have not noticed any bizarre behavior as a result of disabling these devices. The eGPU is plugged into the bottom left Thunderbolt port, as per recommendations in other threads. The top left port works fine to drive my LED Cinema Display (which defaults to using the D700 GPUs, as mentioned) and the middle left port is driving the Belkin Thunderbolt Dock (which is working because Windows is running off that port right now). I'm only running a single monitor, but dual monitors definitely works (combination top left Thunderbolt port and HDMI directly out of the eGPU).
Boot ROM version is 18.104.22.168.0. This is a relatively fresh install of Mojave as well.
I didn't think getting it up and running was a common thing, so I want to figure out exactly how to replicate it in case I need to start again with Windows.
Thanks for sharing! I don’t have a 2013 Mac Pro to corroborate your findings but I’m sure some other users will give it a shot and provide an update.
Are PCI bus numbers sufficient for recreating this? Bus numbers can change, depending on the software that enumerates PCIe devices. I think you need vendor and product IDs of each device to be sure. If they are not unique, then you may need to know the parent devices at least up to a unique ancestor.
You're right, they're probably not enough. I will try and get more information out of Device Manager later tonight (I'm physically in a different location at the moment with the Mac Pro but not the eGPU). I'm not the most experienced with all of this, but if you let me know which values out of Device Manager you want, I can grab them.
I should also mention that I'm currently booted into Windows 10 without the eGPU connected (i.e. a standard Bootcamp boot, no automate-eGPU EFI) and Device Manager only shows a single disabled PCI-to-PCI Bridge (specifically PCI bus 17, device 10, function 0). I have nothing plugged into any of the Thunderbolt ports at the moment (display is being outputted through HDMI).
@aj_scarcella Welcome aboard and amazing first post! I'm wondering if the new firmware of the 6,1 has exposed the PCIe components through Thunderbolt connection better in Boot Camp. My 6,1 is now running 22.214.171.124.0 due to macOS Catalina. I will it a try soon in Windows Boot Camp. Can you take a screen capture with several instances of Device Manager open to show these information?
It's possible to disable one of the FirePro dGPUs in Windows so that Graphics Options detects only one dGPU and one eGPU. I forgot the exact arrangement of PCIe root tree in Windows for the 6,1 but you can expand them all to identify which D700 has a Display attached. Here's the block diagram of the 2013 Mac Pro for reference.
Many thanks! I thought this would be pretty interesting news to this forum. Plus, I really do need to figure out a concrete method of replicating it so I can safely wipe Windows in the future. Here are the screenshots:
(Am I missing an image upload option for the forum or I am just daft?)
And some bonus images:
Arkham Knight graphics settings
@aj_scarcella Very nice to see a working eGPU in Boot Camp on the 2013 Mac Pro. Did you download and use the [Apple_2013_MacPro.zip] from the Nando4 created DSDT overrides from noted user's system DSDT dump (dsdt.dat)? I will install Win10 1809 on my trashcan later tonight and see if I can replicate your success with the use of automate-eGPU EFI + pre-compiled DSDT.aml. I currently use a very similar process with the 2016 15" MacBook Pro.