Setup & Software Discussions
2018 15" MacBook Pro (RP560X) [8th,6C,H] + RX 580 @ 32Gbps-TB3 (Sonnet Breakaway...
 

2018 15" MacBook Pro (RP560X) [8th,6C,H] + RX 580 @ 32Gbps-TB3 (Sonnet Breakaway 550) + Win10 1803 [Chris Moran]  

  RSS

(@chris_moran)
Active Member
Joined: 1 year ago
 

System specs:

2018 15" MacBook Pro - i9-8950HK/Radeon Pro 560x dGPU/32GB RAM/1TB SSD

eGPU hardware:

550w Sonnet breakaway + AMD Radeon RX 580

Display hardware:
Dell Ultrasharp U2515HX x3
Locktek Monitor arm (dual)
Locktek Monitor arm (single w/usb3.0 at the base) (I could not find this anymore as the amazon link to my prior order links to a new item that I did not purchase. )

Preface/Notes: (If you just want instructions skip to the Installation steps section)

I’m a first time poster here so I apologize if I leave out important information.

I purchased a 2018 15” MacBook Pro i9 with the AMD Radeon Pro 560X. I also already had the Sonnet 550w with the RX 580 and hoped the setup would be simple. My goals with my setup were:

  • No patches or DSDT
  • No boot options required
  • Ability to use both eGPU on my external monitor and dGPU on the internal display
  • Ability to disconnect the eGPU and boot to either macOS or Windows 10 using the internal laptop display (hot swap was not a requirement for me)

My first attempt was simple. I had to disable the T2 chip because I simply could not get the Bootcamp assistant to properly partition and start the install no matter what I tried. I booted to recovery and set the security options to the third option “No secure boot” option. And then enabled the external boot option at the bottom. While I was in recovery I disabled SIP. Rebooted and reran the Bootcamp assistant.

I installed Windows 10 (1803) and updated to the latest patches as of 08/27/2018. As expected, the dGPU worked out of the box. No issues whatsoever with the stock Bootcamp 6.1 drivers.

NOTE: I’ve learned from some previous experience that there is wisdom in enabling Remote Desktop before tinkering with my bootcamp. I’ve found that even if the internal monitor is black, I can usually still Remote Desktop into the machine. I would strongly recommend enabling this before continuing.

I followed a few of the guides on this site and was able to get my eGPU working without much trouble. The problem was that I could not get the internal display to ever work once the eGPU was set up. The screen would be black no matter what unless I booted into macOS. Only the eGPU and external monitor would work with my bootcamp Windows 10. I finally figured out a way to consistently get the dGPU AND the eGPU to work at the same time. \o/ No more black/blank laptop display!

Installation steps (Underline: indicate possible optional step)

IMPORTANT!!!: Ensure your eGPU is NOT connected
ALSO NOTE: My steps include an "attached script" (see below) written by me. The script is at the bottom of this post. Note that it must be run as Administrator. It requires devcon.exe as well as a utility called DeviceCleanup found here. devcon is Windows Device Console, created by Microsoft, DeviceCleanup is freeware, the script I wrote is free as in beer. 

  1. Disable SIP and T2 secure boot
  2. Install Windows 10 (1803) (I have 17134.472 installed and everything works)
    1. All updates and patches installed
    2. I have not been able to get both eGPU AND dGPU working on 1809 🙁
  3. Enable remote desktop (Optional but recommended)
  4. Download Adrenalin 18.8.2 from bootcampdrivers.com
    1. https://www.bootcampdrivers.com -> Hover over ‘Downloads’ at the top -> Hover over ‘Windows 10’ -> Hover over ‘For iMac 5k, MacBook Pro…’ -> Select ‘Adrenalin 18.8.2’ (It’s a MEGA.nz link)
    2. Adrenalin v18.8.2 for Windows 10 (if you are lazy and don’t feel like following the path above)
    3. NOTE: There are newer versions of Adrenalin. Notably: 18.11.1, 18.12.3, and 19.1.2. I have tried all of them. They all have the same issue for me: Mouse Lag. YMMV. I got both dGPU and eGPU working on all of them, however there was occasional mouse hesitation/stutter every few seconds. I could not figure out what caused it as there was no CPU spike and no other indicator of why the stutter happened. (I use synergy to share mouse/keyboard between my primary Mac and my bootcamp MacBook Pro - All other things exactly equal, I never have this stutter/hesitation of my mouse on 18.8.2). The stutter happens without synergy as well, in case you thought it was synergy.
  5. Run DDU (18.0.0.7 is the latest as of 01/26/2019)
    1. (Make sure this box is checked) -> Options => Advanced Options => Prevent downloads of drivers from “Windows update” when “Windows” search for a driver for a device.
    2. A popup will remind you that “Windows Device Installation Settings have been changed to NOT automatically install drivers.
    3. Click “OK”
  6. Click “Clean and restart”
    1. DO NOT PLUG IN YOUR eGPU!
  7. Once Windows has rebooted, run the Adrenalin Setup v18.8.2
    1. (I uncheck ‘Help us to improve… because privacy. But it is completely up to you)
    2. Accept and Custom Install
    3. Wait for checking for new drivers
    4. Click Install Radeon Software
    5. Click Install (??? Not sure how this is good User Experience but OK)
    6. (I uncheck ‘AMD HDMI Audio Driver’ and ‘AMD Problem Report Wizard’ just cuz. But this is up to you as well. They do not affect nor impact the display so whatever)
    7. Click Install
    8. Wait forever
    9. A popup may ask you if you would like to install device software. If so, you need to trust the driver from ‘BootCampDrivers.com
    10. Wait another forever
    11. When prompted about ReLive SKIP
    12. Once Radeon software has been installed Click Close
  8. Run the attached script to remove all graphics devices and monitors.
    1. NOTE: This script will SHUTDOWN your machine not REBOOT
  9. Start your Mac
  10. DO NOT PLUG IN YOUR eGPU!
  11. Once logged into Windows, Run the attached script to remove all graphics devices and monitors AGAIN (VERY IMPORTANT)
  12. Your machine will shutdown… Again.
  13. Once your machine is completely off
    1. NOW YOU PLUG IN YOUR eGPU
  14. Once your machine starts up, you should see the windows spinny on your internal laptop display. This is good.
  15. Login at the login screen, you should see the spinny start to spin and then freeze. This is also good.
  16. Your eGPU should make the WHOOSH sound in about 10-15 seconds. This is also good.
  17. In a few more seconds you’ll see both your internal monitor and external monitor working

IMPORTANT!!! Once you reboot your machine, unless you follow the steps below, you will not be able to get both screens working again.

  1. When you want to reboot, Run the attached script to remove all graphics devices and monitors.
  2. Once the external monitor goes blank, hot-unplug it.
  3. Wait for your machine to shutdown and then start it up. DO NOT PLUG IN YOUR eGPU
  4. Load Windows, once your machine is started up and you’re logged in, Run the attached script to remove all graphics devices and monitors.
  5. Once your machine is shutdown completely, PLUG IN YOUR eGPU
  6. Start your machine
  7. (Follow the steps from above Starting at 14.)

Comments:

Being able to use both my laptop monitor and eGPU-driven external monitor has been wonderful. I tried just using the external monitor but the laptop screen would not turn off. It would stay on even though the screen was black. (The backlit black screen was a dead giveaway). Plus, the CPU ran high nonstop even when I ran on the external monitor alone. This setup has no high CPU plus the benefit of the eGPU driven external monitor. Also, I've become accustomed to running this script before I shut down the machine to reboot into Mojave or take the laptop with me mobile. The extra reboot in order to get the external monitor + eGPU working again with the dGPU and laptop display is hardly an inconvenience. This machine is on most of the time anyway for my daily work. 

Below is the script referenced above. Copy this script and create a file called RemoveGraphicsDevices.ps1:
Note:
The devices PCI\VEN_1002*67DF and 67EF are specific to my setup (RP560x and RX580). Yours may be different and you must change them accordingly.

if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
 if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
  $CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments
  Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine
  Exit
 }
}
$log = "$Env:userprofile\Documents\eGPU.log"
$nfnd = "No matching devices found."

Add-Content -Path $log -Value "$(Get-Date -Format g) Finding Graphics Devices..."
$eGPU = devcon findall PCI\VEN_1002*67DF*
$dGPU = devcon findall PCI\VEN_1002*67EF*

Stop-Service -name "AMD External Events Utility"
Add-Content -Path $log -Value "$(Get-Date -Format g) Stopping AMD Tools..."
Add-Content -Path $log -Value "$(Get-Date -Format g)    Stopped AMD External Events Utility"

Add-Content -Path $log -Value "$(Get-Date -Format g) Removing Graphics..."
if ($eGPU -ne $nfnd) {
    $eGPU = $eGPU | select-string -pattern "PCI" | Foreach-Object { $_.ToString().split(':')[0].trim() -replace '&','"&"' }
    devcon remove "@$eGPU"
    Add-Content -Path $log -Value "$(Get-Date -Format g)    Removed eGPU: $eGPU" 

    $dGPU = $dGPU | select-string -pattern "PCI" | Foreach-Object { $_.ToString().split(':')[0].trim() -replace '&','"&"' }
    devcon remove "@$dGPU"
    Add-Content -Path $log -Value "$(Get-Date -Format g)    Removed dGPU: $dGPU"
}

if ($dGPU -ne $nfnd) {
    if($eGPU -eq $nfnd) {
        Add-Content -Path $log -Value "$(Get-Date -Format g)    No eGPU found. Simply shutting down..."
    }
}
Add-Content -Path $log -Value "$(Get-Date -Format g) Removed hidden monitors"

DeviceCleanupCmd.exe -s MON*

Add-Content -Path $log -Value "$(Get-Date -Format g) Shutting down"
Sleep 5
Stop-Computer -Force

EDIT: I've attached the RemoveGraphicsDevices.ps1 powershell file (which is the script above).

This topic was modified 3 months ago

2018 15” MacBook Pro i9 32GB 1TB + AMD Radeon Pro 560x + 550w Sonnet breakaway + AMD Radeon RX 580 + macOS 10.14.2 & Win 10 (1803)


itsage liked
ReplyQuote
mac_editor
(@mac_editor)
Noble Member Moderator
Joined: 3 years ago
 

@chris_moran I believe you may be the first on this forum to properly get the 2018 MBP functional with both the internal display and eGPU monitor. Awesome job! Steps seem a little tedious, but I believe this would be superbly beneficial for those wanting to use the eGPU on the internal display, as this issue occurs even with no external monitor (just presence of AMD eGPU) as well with these macs. I use the a similar configuration (i7 model, V64 - same symptoms but I don't need internal monitor) and I don't see high CPU usage though. Internal display being active is an issue yes.

purge-wrangler.shpurge-nvda.shset-eGPU.shautomate-eGPU EFI Installer
2018 MacBook Pro 15" RP560X + Vega 64 (Mantiz Venus MZ-02)


ReplyQuote
(@chris_moran)
Active Member
Joined: 1 year ago
 

Sorry. I don't yet have the post-count to embed photos. Here is a quickly mashed together set of images of my setup and screenshots.

https://imgur.com/a/fuxaXcN

1. Setup: This is the "left side" of my setup. My right two monitors are run by my other/primary machine (another macbook pro but this one running mojave)
2. Messy wires. sorry: This is just a quick peek at my connections. One TB3 directly to the Sonnet Breakaway 550. Typical Sonnet setup, it has to be backwards to be any use since the cable is like 4 inches long.
3-4. Display Settings: Just display settings for both monitors
5. Device Manager: Devices by connection. If you scan through the Pci Bus tree you can find both Radeons somewhere... (PCIe 1901 and PCIe 1909)
6. AMD Settings: Just showing both enabled. I like enabling the Super Resolution on the external monitor so I can match the vertical resolution of the native laptop display (1800)
7-8. HWiNFO: Showing the HWiNFO for each GPU

I'll run Valley on both cards with this setup and update with some benchmarks.

This post was modified 8 months ago

2018 15” MacBook Pro i9 32GB 1TB + AMD Radeon Pro 560x + 550w Sonnet breakaway + AMD Radeon RX 580 + macOS 10.14.2 & Win 10 (1803)


ReplyQuote
itsage
(@itsage)
Famed Member Admin
Joined: 3 years ago
 

@chris_moran Thank you for sharing this build and the script to keep the Radeon Pro dGPU working alongside AMD eGPU. In this process, do you think Windows recognize the eGPU or dGPU first?

This post was modified 8 months ago

Best ultrabooks for eGPU use

eGPU enclosure buying guide


ReplyQuote
(@chris_moran)
Active Member
Joined: 1 year ago
 

@itsage based on what I've seen (dGPU / internal laptop display from boot post until about 15-20 seconds after Windows initializes) I would say dGPU.

There is some more relevant information if anyone is interested. 

  • The system is booted into refind
    • I do not enable the spoof_osx_version flag.
  • macOS Mojave works perfectly fine. Hotplug and everything.
  • Windows 10 does not support hotplugging with this setup. However, I am able to avoid any blue-screen crashes when I use my script, and then unplug my eGPU. (But this is immediately prior to shutting down so it's of limited use)
  • If I knew more about Windows boot up sequence, I could probably eliminate the need to reboot.
    • This would allow us to hotplug the eGPU and reenable it.
  • This setup will not work on any version of AMD drivers that I have found except the BootCampDrivers.com Adrenalin v18.8.2 drivers
    • The issue I've run into on each subsequent version is multi-display-mouse-lag. This is where the mouse hesitates/pauses/stops moving for about about a half a second every few seconds.
    • There is no CPU spike
    • There is no Disk usage spike
This post was modified 8 months ago

2018 15” MacBook Pro i9 32GB 1TB + AMD Radeon Pro 560x + 550w Sonnet breakaway + AMD Radeon RX 580 + macOS 10.14.2 & Win 10 (1803)


itsage liked
ReplyQuote
OliverB
(@oliverb)
Noble Member
Joined: 11 months ago
 
Posted by: Chris Moran

NOTE: I’ve learned from some previous experience that there is wisdom in enabling Remote Desktop before tinkering with my bootcamp. I’ve found that even if the internal monitor is black, I can usually still Remote Desktop into the machine. I would strongly recommend enabling this before continuing.

Since I got a second eGPU I found another way to make sure you still have access to the system: Use a second eGPU with nVidia. It still will work even when the AMD dGPU and eGPU are going havoc.

2018 15" MBP & 2015 13" MBP connected to RTX2080Ti GTX1080Ti GTX1080 Vega56 RX580 R9-290 GTX680


ReplyQuote
itsage
(@itsage)
Famed Member Admin
Joined: 3 years ago
 

@chris_moran Thanks to your build guide, I was able to get both AMD dGPU and eGPU working alongside the internal display. While I did not use your script, your approach with removing the graphics cards and displays led to a similar procedure. I found there’s a split-second difference when the system decides whether the internal display would come on past the log-in screen. When an AMD eGPU has not established a connection to a particular TB3 port, there’s a couple second delay during log-in to Desktop so that Windows can load the drivers. This is when the internal display remains on.

My AMD eGPU connection procedure in Windows requires one restart. I hot-plug the eGPU when my 2018 15″ MacBook Pro is already at the Desktop screen. AMD eGPU should be yellow-banged with error 12. Next step is to manually uninstall it in Device Manager. Restarting the machine once would allow a re-establishment between the AMD eGPU and that same TB3 during boot. It results in working internal display with both AMD dGPU and eGPU. Here’s my build and more details.

No solution in sight for CPU overheating and thermal-throttling during heavy use however. Mine is the base configuration so I imagine it’s more of a challenge for your system.

This post was modified 7 months ago

Best ultrabooks for eGPU use

eGPU enclosure buying guide


ReplyQuote
mac_editor
(@mac_editor)
Noble Member Moderator
Joined: 3 years ago
 

I notice that @chris_moran's script also uninstalls the device (see devcon line) which is the key here. Great work. Eliminating the need to reboot will be tricky.

Researching further for those familiar with Windows development: https://www.thewindowsclub.com/delay-loading-of-specific-services-windows

Maybe delaying the AMD services (or some equivalent) could help too.

This post was modified 7 months ago

purge-wrangler.shpurge-nvda.shset-eGPU.shautomate-eGPU EFI Installer
2018 MacBook Pro 15" RP560X + Vega 64 (Mantiz Venus MZ-02)


ReplyQuote
OliverB
(@oliverb)
Noble Member
Joined: 11 months ago
 
Posted by: mac_editor

I notice that @chris_moran's script also uninstalls the device (see devcon line) which is the key here. Great work. Eliminating the need to reboot will be tricky.

Eliminating the need to reboot will solve the "Cannot Hotplug AMD Cards in Bootcamp" problem in general, not only for 15-inch MacBooks.

Maybe delaying the AMD services (or some equivalent) could help too.

Of course, understanding why the internal screen goes black in the first place would help most. I don't get it, why Apple and AMD are not into that problem. It would make a huge difference and bring people to prefer AMD over nVidia.

2018 15" MBP & 2015 13" MBP connected to RTX2080Ti GTX1080Ti GTX1080 Vega56 RX580 R9-290 GTX680


ReplyQuote
OliverB
(@oliverb)
Noble Member
Joined: 11 months ago
 

It may be of general interest that the same rules (and tricks) apply to nVidia cards.

Before you had to hotplug them, if not the internal display went black. (So it was the same issue only with the difference that nVidia cards are Error-12 resilient and so they can be hotplugged.)

So now new combinations go possible, all working well with accelerated internal display:

2xAMD nVidia

2018 15" MBP & 2015 13" MBP connected to RTX2080Ti GTX1080Ti GTX1080 Vega56 RX580 R9-290 GTX680


ReplyQuote
OliverB
(@oliverb)
Noble Member
Joined: 11 months ago
 

Remark: The solution is really very simple. Just follow those step:

0) Replace Apple AMD Drivers with BootcampDrivers.
1) Boot without eGPU
2) HotPlugeGPU => AMD eGPU will be yellow banged with error 12.
3) Uninstall it directly from Device Manager:

UninstallDeviceError12
UninstgallDeviceError12B

4) Reboot. Done:

UninstgallDeviceError12C

If will update my Bootcamp Guide with this plan. (@itsage, I can't edit my opening post there...)

This post was modified 7 months ago

2018 15" MBP & 2015 13" MBP connected to RTX2080Ti GTX1080Ti GTX1080 Vega56 RX580 R9-290 GTX680


ReplyQuote
(@chris_moran)
Active Member
Joined: 1 year ago
 
Posted by: OliverB

...

3) Uninstall it directly from Device Manager:

UninstallDeviceError12
UninstgallDeviceError12B

4) Reboot. Done:

UninstgallDeviceError12C

If will update my Bootcamp Guide with this plan. (@itsage, I can't edit my opening post there...)

It may be easier to put that into a script/tool. I use devcon and have had great success with it. Of course, it may be six in one hand, half dozen in another. I just prefer not to have to perform all of those clicks.

2018 15” MacBook Pro i9 32GB 1TB + AMD Radeon Pro 560x + 550w Sonnet breakaway + AMD Radeon RX 580 + macOS 10.14.2 & Win 10 (1803)


ReplyQuote
(@buh_khuu)
Trusted Member
Joined: 1 year ago
 

Hi @chris_moran. Your work is amazing, unfortunately it doesnt fully work for me. When i run the script with my needs (changing the Vega56 adress), it will always only remove my dGPU RP560X. Am i doing anything wrong? 

I've commented out the devcon remove dGPU to test if it would remove the eGPU, but havent got any luck with it...

EDIT:
Got the script working by changing the values for the eGPU manually. Now running into another problem:
The script can succesfully remove my Vega56, but reinitializes before my macbook is able to start the "power off" sequence. So, i removed the Sleep 5 (second to last line), but this didnt fix it. The Macbook still reinitializes my V56 card before it shutdown completely....

Nevermind, i see you unplug it directly afterwards the external monitors go black... I hoped to find a solution to keep the cable in

This post was modified 2 weeks ago

2018 15" MacBook Pro I7-8850H RP560X
Razer Core X with Sapphire Radeon Vega 56
Dual LG 4K Monitors (27UD88 and 27UD69)
Running MacOS Catalina and Windows 1903 non optional update


ReplyQuote