[SCRIPT] Better eGPUs on Macs with Discrete NVIDIA GPUs
 
Notifications
Clear all

[SCRIPT] Better eGPUs on Macs with Discrete NVIDIA GPUs  

 of  32
  RSS

mac_editor
(@mac_editor)
Famed Member Moderator
Joined: 3 years ago
 
Posted by: itsage
 
I sent you a PM but not sure it got through. Can you take a look at this workaround to disable dGPU in MacBook Pro and give it a try?
 
If it turns out universal and easily replicable, it would be great for users of MacBook Pro with a dGPU to soft-convert them into iGPU-only Macs.

That's a great resource I will surely look into. Thanks @itsage.

Also I just checked my inbox for your message and didn't find anything, although I did see your username. I tried sending you a PM and got a notification on the top right saying cannot send notification. It seems to have gone through however.

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


itsage liked
ReplyQuote
ljtzeng
(@ljtzeng)
New Member
Joined: 3 years ago
 
Posted by: mac_editor
Posted by: ljtzeng

First of all, I am so excited when I see this post. But when I give it a try, I have encounter one problem, after downloaded the script and move it to the desktop. I use terminal to enter the command, all I get is this error message (sudo: ./purge-nvda.sh: command not found), did I do something wrong ? Can you help me ? Thanks.

I am using Late-2013 15" MacBook Pro GT750M+RX580@16Gbps-TB2(Akitio Node via TB3 to TB2 adapter)+MacOS High Sierra B4 (17A315i) 

Also I have already disable SIP.

Try this:

  • Ensure you are in the Desktop on the command line: cd ~/Desktop
  • sudo chmod +x purge-nvda.sh > then run that command.

Yes, it works!! Thank you very much!!

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

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

Does not work on High Sierra Beta 5 possibly due to changes associated with /S/L/E/ handling on boot. Future builds may change this, however.

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


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

Updated the original post - NVIDIA discrete graphics can be disabled on macOS with purge-nvda.sh 1.1 or later.

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


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

After tons of haggling, the most I could do so far was to force High Sierra B5 to boot using the integrated GPU without touching system extensions (script nvram-only mode). This behavior is like 0xbb's gpu-switch, which gives you one boot on iGPU only. However, I'm not sure if gpu-switch forces an iGPU-only boot since it only modifies one NVRAM variable. It could be that the single modification affects other variables as well, but for the sake of consistency, my script modifies all necessary variables to ensure an iGPU-only boot (this version is not on GitHub yet, 1.1.1 also changes one variable like gpu-switch). Additionally, gpu-switch does not work on 10.12.4+. This script does. The tricky part is next.

On macOS Sierra and even High Sierra B4, to make this iGPU-only boot persistent, removing the discrete GPU's drivers works spectacularly. Additionally, without kext removal, the NVIDIA kexts are still loaded even in the iGPU-only configuration. This rules out gpu-switch as a potential solution because the loaded kexts interfere with external graphics, and, for the moment, makes kext removal essential - as evident on previous macOS builds. The same solution does not seem to work on Beta 5, which simply refuses to boot. The questions to answer are why moving around kexts that won't be used at boot interfere with the boot and why it only happens on HS B5?

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


ReplyQuote
mac_editor
(@mac_editor)
Famed Member Moderator
Joined: 3 years ago
 
Posted by: mac_editor

The questions to answer are why moving around kexts that won't be used at boot interfere with the boot and why it only happens on HS B5?

After some tinkering and posting on macrumors regarding this:

  • The problem could be with the WindowServer process on boot. It seems to die each time on B5 while booting without NVDA kexts. Given that WindowServer is a prominent update in High Sierra (since it now runs on Metal) - future betas are highly likely to make changes to it (fingers crossed though).
  • Technically, moving around the kexts isn't the problem then. However, apparently manually executing kextcache commands is completely discouraged on the High Sierra beta - can potentially render disk unbootable. Letting the system automatically execute this seems to work fine though.

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


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

Tested the script more extensively and it works on Mavericks (10.9)Yosemite (10.10)El Capitan (10.11), and Sierra (10.12). Can't wait to the test High Sierra Beta 6.

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


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

Beta 6 does some interesting stuff. Starting off with the bad news: script still doesn't work - same issue.

The potentially good news:

Unlike the previous beta, this build actually switches to discrete graphics before enabling the external GPU. This has eliminated the glitch on the external screen seen on logging out. The internal display also shows a scaled resolution of the screen for a moment - a good sign - but quickly gets stuck. Since I had verbose boot enabled - I noticed that the Mac had trouble detecting the external display - its value set to 0 on logout. What this means is -> the issue with NVIDIA - AMD driver collision MIGHT have been resolved and further builds may improve eGPU support (example: my eGPU on some betas did not work on Mid-14 13" MBP, B5 worked, B6 yet to test) and therefore result in working configs without the use of the script (which ain't working atm anyway). For those on a previous beta (with dGPU NVDA Mac), please disable Automatic Graphics Switching and try connecting the eGPU. For those on Beta 6, you will probably face the same issue as myself.

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


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

Beta 7 behaves similar to Beta 6 with regards to external graphics  - no changes. It seems to have trouble detecting an external display via my eGPU - as mentioned in the previous post. The AMD kexts seem to load correctly as well, so the problem most likely lies in how external displays are being managed, perhaps? Looking into this. 

purge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


Daelin and itsage liked
ReplyQuote
Daelin
(@daelin)
Trusted Member
Joined: 3 years ago
 

any news on this topic?

MacBook Pro 15" 2017, AMD RP560
Devil Box + MSI GTX 1080Ti Gaming X

Bricked thanks to rEFInd:
MacBook Pro 15" Late 2013, GT 750M

 
2017 15" MacBook Pro (RP560) [7th,4C,H] + GTX 1080 Ti @ 32Gbps-TB3 (PowerColor Devil Box) + macOS 10.13.3 & Win10 [build link]  


ReplyQuote
 of  32