Skip to content

Instantly share code, notes, and snippets.

@cdleon
Last active October 17, 2023 18:23
Show Gist options
  • Save cdleon/d16e7743e6f056fedbebc329333d79df to your computer and use it in GitHub Desktop.
Save cdleon/d16e7743e6f056fedbebc329333d79df to your computer and use it in GitHub Desktop.

Improving heat management after macbookpro 2011 discrete GPU fix, also a script to automate part of the fix process

Taken from StackExchange

Thanks to LangLangC

NOTE: This is experimental; works for some people, not for others

Improved thermal and power management

Open Terminal.app

Create login hook folder for thermal and power management

sudo mkdir -p /Library/LoginHook

Create login hook file

sudo nano /Library/LoginHook/LoadX3000.sh

Add folowing contents when nano opens

#!/bin/bash
kextload  /System/Library/Extensions-off/AMDRadeonX3000.kext
pmset -a force gpuswitch 0    # undocumented/experimental
exit 0

Use ctrl + o to save and ctrl + x exit

Make it executable

sudo chmod a+x /Library/LoginHook/LoadX3000.sh

Register login hook

sudo defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadX3000.sh

Reboot normally

Check that proper kexts exist

kextstat | grep AMD

The command above should display

... com.apple.kext.AMDLegacySupport (1.5.1) ...
... com.apple.kext.AMD6000Controller (1.5.1) ...
... com.apple.kext.AMDSupport (1.5.1) ...
... com.apple.kext.AMDLegacyFramebuffer (1.5.1) ...

And this
... com.apple.AMDRadeonX3000 (1.5.1)  ...

should also appear on the list

Reboot normally

Boot into single user recovery by pressing on boot

Command + r + s

Modify NVRAM

nvram boot-args="-v agc=0"

Reboot

reboot

Script ot make part of the process automatic

Open terminal

Create script

sudo nano /force-iGPU-boot.sh

Add contents

#/bin/sh
sudo nvram boot-args="-v"
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
exit 0

Make exectuable

sudo chmod a+x /force-iGPU-boot.sh

When booting into single user mode (Cmd + r or CMD + r + s) use

sh /force-iGPU-boot.sh
@mattdrepo
Copy link

To answer your questions simply. Yes you can spoof the identifier and have your cake. It would take looking at what kernel extensions power the 15 and 17 models as well as what the 13 inch uses specifically. There was also a i7 variant of the 13 which gets things closer. Regarding fans, i forget what kexts are used in the 13 inch model, but a quick hop over to insanelymac to ask would get us there. It's a case of mixing and matching a few things.

Hardware wise I would want to null the use of the chip permanently. But that's my personal choice. By having a switch (as some have done) I could reverse the step, and later invest in some of the hardware solutions that have been employed to use the backlight whilst ignoring the requests to engage the ATI chip (however, once again, using opencore could null some of this potentially by spoofing the system identifier and changing values of kernel extensions while keeping the operating system untouched).

I am sure opencore could be used to prevent nvram writes as a interim step. You could do this over all the things I mentioned previously and keep the identifier the same. But I am not 100% sure here, as the way the Mac Operating system handles nvram was discussed before - other operating systems do not get the same privileges. I could see the UEFI being replaced in the future by Coreboot and opencore being used to allow egpu for those intent on using these machines into BigSur for example (or any metal O.S) like some of the Mac Pros. (hence me wanting to make a physical switch for the capacitor that also sadly handles TB1 power).

Just ideas.

@MBP2011User
Copy link

I think the 2011 i7 variant on the 13in is dual core rather than quad core. 2011 15in and 17in is quad core.

I think you may cause more problems by removing that resistor. I think it is required in order for the backlight to turn on from sleep. That may only apply to high Sierra but I would do a lot of research before you remove that resistor if I were you. Also look into screen brightness control issues.

Incidentally, my 2011 MBP 15&17s have never rewritten NVRAM unless I hold down the reset keys but I'm not sure if losing power via completely flat battery can reset NVRAM.

Something else I just remembered: re-enabling CSR util (system integrity) after applying CDLeon's fix will stopped the fix from holding. If you had problems with the fix you may want to try leaving that disabled and see what happens.

@alato19
Copy link

alato19 commented Oct 29, 2021

Hello Experts!
I'm very grateful for the great help you have offered in this forum.
I followed this guide, with best result.
The only problem I am facing is that macbook freezes on shutdown; I have to force shutdown by pressing the power button.
I have an MBP Early 2011 running OS X El Capitan (10.11.6)

Today I deleted both login hook and force-iGPU-boot script. I reset to default the com.apple.loginwindow and the shutdown is working fine.
I tired also closing the lid and opening back after few minutes; it works.
I'm not using much though the computer, so I'm not sure what happens when the temperature rises.

Do you have any counsel for me? Can I consider this 'solved'?
I'm concerned because I want to sell this MBP and don't want the buyer to have issues. I do have a little experience (minimum comparing to you), but the buyer might not have any.

I appreciate a lot any input on my issue.

Thanks a lot!!!

@MBP2011User
Copy link

Hi alato19,
I'm not advising you but I'll tell you what I do. I use something called Macs Fan Control (Crystalidea software). I use a custom preset details as follows:-
Sensor based value - CPU Proximity.
Temperature fan starts to increase from 60degs.
Maximum temperature 75degs.
This keeps mine running cool, the fan probably comes on more than designed but fans are cheap and easy replace. Logic board is expensive.

Also I'm curious, why don't you run Mac OS Sierra on that machine?

@fa-bs
Copy link

fa-bs commented Dec 19, 2022

amazing, it downs gpu temperature in my mbp 2011 late high sierra.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment