2015 15" MacBook Pro [4th,4C,H] + RX 580 @ 32Gbps-M2 (ADT-Link R43SG) + macOS 10.15.1 & Win10 1903 [itsage]
This is the Mac eGPU build I've been waiting for a long while. First of all the 2015 15-in MacBook Pro is one of my favorite Mac laptops. My wife had been using it since 2016 and refused to let me touch it for eGPU testing. With the arrival of the 2019 16-in MacBook Pro, Apple infused the great elements of the retina lineup into the Touch Bar lineup. Their footprint and overall size are nearly identical. She agreed to let it go for the newer 16-in MBP so now the 2015 15-in MBP was ready for external graphics.
I had upgraded this laptop with a Samsung 1TB NVMe SSD in the past. It's one of the very few non-Thunderbolt 3 Macs with a x4 PCIe 3.0 socket. 2015 27" iMac is another but accessing the PCIe SSD socket in that computer is hell (full logic board removal after cutting the 5K display off). In order to use the NVMe M.2 eGPU adapter, ADT-Link R43SG I needed to relocate the SSD externally. It's best to use a Thunderbolt 2 SSD enclosure but I don't have one so it's through an OWC USB 3.0 enclosure. Due to the non-standard socket, I used Sintech NGFF M.2 NVMe SSD Adapter to connect the M.2 connector. The power supply was Dell DA-2 which could handle a Radeon RX 580 with ease.
2015 15" MacBook Pro - i7-4770HQ/HD Graphics 5200 iGPU/16GB RAM/1TB SSD
Prior to relocating the internal SSD to an external enclosure, there are a few house-cleaning tasks regarding Windows Boot Camp. The first was to create a small (24MB) volume to store automate-eGPU EFI boot loader. I also downloaded the pre-compiled DSDT file in order to resolve error 12 in Boot Camp with an AMD Radeon eGPU. The last task was a change in Registry Editor so that Windows can load USB 3.0 drivers during boot up. Without which it would hang at the circle dots screen. Thanks to @sskillz who provided the instructions in his build, I was able to replicate this edit easily.
In macOS it was fully plug-and-play, no software modification needed. Unlike the Thunderbolt interface, Apple does not place any restrictions on the PCIe interface because they likely didn't anticipate people would open these Mac laptops and feed a wire right into the belly of the beast. Well, life is not always pretty and you need your septic tank pumped out periodically. This is what using the M.2 eGPU adapter with a Mac laptop looks like, ugly plumbing but very efficient connection for best performance.
I was hoping for AMD XConnect in Windows because this laptop only comes with Intel iGPU. Unfortunately due to the directly attached PCIe connection, Radeon Software didn't see it as an external graphics card. Other than that everything worked great. For internal display acceleration with the eGPU, we can use Windows 10 Hybrid Graphics feature. This was the setup and boot-up procedure:
- Install Windows 10 1903 V1 ISO (version 18362.30) through Bootcamp Assistant [in macOS]
- Create a 24MB FAT partition in Disk Utility and copy @goalque‘s automate-eGPU EFI onto it [in macOS]
- Download and copy dsdt-modified.aml to /EFI/CLOVER/ACPI/WINDOWS/ inside the FAT partition [in macOS]
- Hold OPTION at boot to select EFI drive and hit Q to access automate-eGPU EFI [boot selection]
- Download and install Radeon drivers from AMD website [in Windows]
Due to external USB 3.0, booting speed was much slower than internal connection. Once boot up completed, Radeon eGPU worked without error 12. Device Manager confirmed RX 580 has a direct x4 PCIe connection to the CPU. There's also "Large Memory" thanks to dsdt override. Both CL!ng in macOS and AIDA64 in Windows confirmed the superior bandwidth through this M.2 eGPU adapter vs. Thunderbolt 3 (22Gbps) or Thunderbolt 2 (16Gbps) as in the case of this 2015 15-in MacBook Pro.
External monitor testing was done through an HP Z27q 5K monitor. If you were to go the Apple route [Blackmagic eGPU + LG UltraFine 5K], you'd be spending 3x as much.
|Win10 eGPU Internal Display||Win10 eGPU External Monitor|
I only ran Luxmark 3.1 and Unigine in macOS.
The ADT-Link R43SG M.2 eGPU adapter is neither convenient nor elegant. It is the best performance external graphics solution. It's also affordable and very flexible through the pairing of power supply, graphics card, and even a DIY enclosure should you want to build one.
@joevt, I like the two choices for power supply connection this R43SG board provides. I'm currently using the Dell DA-2 220W power adapter. If needed I could use a higher output PSU through the 24-pin and 8-pin EPS. The different switches also help with host laptops that don't play well. I had to set SW1 to position 2 in order to get reliable detection on the 2017 Alienware 13 R3 [build link].
@itsage, thank you so much for your reply. For macbooks, I have only seen people posted models such as 2012 13' or 2013 13' that deployed eGPUs in ubuntu, but I havent seen anyone posted models such as 15' pre-touch bar versions. I know that touch bar versions have lots of issues with installing ubuntu. Also, would 2015 15' with dGPU version work on eGPU in ubuntu? My model is 2014 15' with gtx750m, this model would not work with windows using Nividia cards, but I am not sure if I can use Nividia cards in ubuntu system. Thanks again.
I have a mid-2015 MacBook Pro 15" Retina on Mac OS 10.15.4. My enclosure is the AKiTiO node with an AMD Radeon RX 580 eGPU. Given that the enclosure has a TB3 port and my MBP has TB2, I bought the Apple thunderbolt adapter.
My external screen is the Apple Thunderbolt 27" display. My internal GPUs are AMD Radeon R9 M370X 2 GB and Intel Iris Pro 1536 MB.
eGPU <- TB3 -> TB3 to TB2 adapter -> Apple 27" <- TB2 -> MBP 15"
This post is my last hope to fix this.
I tried the automate-eGPU EFI script following this, but with no luck: the boot screen shows "eGPU not detected" and I still booted to Mac but the eGPU does not work (I cannot see the Disconnect AMD RX 580 chip icon on the menu bar and activity monitor does not show eGPU).
Then, I tried to use purge-wrangler. This time it worked, but with issues: I do see the chip icon following the next reboot, and using Prefer External GPU from Get Info on an app causes significant activity on the eGPU activity monitor. However, I am facing two major problems:
1) I often get popping/crackling sounds from the sound card
2) The mouse connected to the USB port on the Thunderbolt display can sometimes lag, often aligned with the times the sound issue happens.
3) My Cinebench R15 shows a disappointing 47.65 fps on this eGPU compared to 63.85 fps for the internal AMD Radeon R9 M370X!
When I disconnect the eGPU the problems above go away.
Is there anything I could do to fix this mess, before I give up on this entirely?
@egpu-new-user, The hardware connection arrangement you described does not seem right.
eGPU <- TB3 -> TB3 to TB2 adapter -> Apple 27" <- TB2 -> MBP 15"
The eGPU needs to connect directly to the Mac system. There are two Thunderbolt 2 ports on the 2015 15-in MacBook Pro so you can use one for the eGPU and the other for Thunderbolt Display.
eGPU <- TB3 -> TB3 to TB2 adapter -> TB2 port #1 -> 2015 15-in MBP -> TB2 port #2 -> TB3 to TB2 adapter <- TB2 -> Apple 27"
@itsage you are right! Now I am connected as you were saying and I do see 67 fps with the 580 RX. Further, the issues with the sound and mouse seem to be gone! Sounds like for Catalina I did not need to do the automated-EFI, since purge-wrangler seems to work well. Do you agree?
Thank you for your help and answer!
@egpu-new-user, I'm glad to hear you got it to work. Both automate-eGPU EFI boot loader and Purge-Wrangler script should provide the same eGPU functionality. Purge-Wrangler is easier to install and use for most people.