Z-Car

2011 MacBook Pro GPU Failure – A software fix to disable GPU

Last year I repurposed a 2011 Macbook Pro 15″ as my home media server.  This laptop had been my main machine for a couple years until I upgraded in 2015.  Early in its life, I had used gfxCardStatus to disable the discrete AMD graphics card.  I mainly did this because I did not need the performance, and it definitely affected battery life negatively.  Because of this, I never was aware of the issue that thousands of other MacBook Pro owners experienced, a failing GPU causes the machine to either not work at all, have odd display effects, or reboot when video modes are switched.

About a year after using this machine as my main media server, it started to randomly reboot.  I could not find anything that was causing it, it would just be running fine, and then reboot.  I did notice that if I started up the machine, but did not login to a user account, it would stay running for quite awhile.  After some online research, I soon found out about all the issues that have plagued this machine.  The AMD GPU seemed to be the most likely culprit.  After finally having the machine stay running long enough for me to reinstall gfxCardStatus, I determined that I could immediately crash the system just by switching graphics modes.  Success, I was finally able to confirm that the GPU was failing.

Because I do not have any application that requires the GPU, I realized if I could somehow disable it, I could be back in business.  After extensive searching, I found lots of partial solutions, many required booting with Linux, putting the logic board in an oven, or trying to cut power traces on the motherboard.  After lots of reading, I finally was able to come up with a solution that worked, one that did not require opening up the laptop, or installing Linux.

My machine is a basic system running High Sierra, version 10.13.  I have confirmed that this works, although I did not try with previous versions.  If you have a highly modified system with lots of custom kexts, it may not work.   This modification will force the laptop to not boot into discrete graphics (dGPU) but directly into integrated graphics (iGPU).  While you will now be able to use your system you will lose the ability to use an external display.  Thunderbolt data and video connections should continue to work as normal.   It also assumes that all kexts are still in their default location /System/Library/Extensions, all AMD-kexts remain except one which is required to be moved.

Let’s get started!

Power on your laptop while holding <Cmd>+<r>+<s>, this will get you into Recovery/Single-User mode.  If your machine will not boot up into this mode, you can try putting it into a freezer for 10-15 min beforehand.  If you can keep the machine cool, it should let you boot to a command prompt.

The first step is to disable SIP.  This is done by entering : csrutil disable 

This is a critical step, as the following commands will not run unless you disable the default SIP protection.  You can leave this off permanently, or re-enable after you complete the whole process.  At this point, reboot the laptop by entering : reboot

This time hold down <Cmd>+<s> to boot into single-user mode.  We will then issue commands to disable the AMD GPU on boot by writing specific values into the NVRAM.  

Enter : nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00

Enter : nvram boot-args=”-v”

This will turn on verbose mode when booting up.

One again : reboot

Hold down  <Cmd>+<s>  on boot

Next we will want to move one AMD kext so that it is not loaded on initial boot.  We will just move it, because after the machine boots up and you login, we will want to reload it.  This will keep the GPU disabled, but also will remove power from it so that it keeps your system cooler.

Type the following :

mount root partition writeable
/sbin/mount -uw / 
mkdir -p /System/Library/Extensions-bkup 
mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-bkup/ 
touch /System/Library/Extensions/ 
mkdir -p /Library/LoginHook
nano /Library/LoginHook/LoadAMD.sh

In nano, add the following text and hit control-X to save

#!/bin/bash
kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
exit 0

You should have a saved file called LoadAMD.sh at this point.  Now type : 

chmod a+x /Library/LoginHook/LoadAMD.sh
defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadAMD.sh 
reboot

This time, let the machine boot up normally

Reboot normally and your machine should work normally, however you will have an accelerated iGPU display.  This process will most likely need to be repeated when you do any system upgrade.  The NVRAM setting should stay, however you most likely will need to move the AMDRadeonX3000.kext file again.  Just make sure that if a new version is used, you save each.  

Hopefully this will allow your machine is provide several more years of service.  Leave me a message if you have any questions, and/or you will successful.

To return your system back (if you need to do this for some reason), execute the following.

Power on your laptop while holding <Cmd>+<r>+<s>, this will get you into Recovery/Single-User mode.

Re Enable SIP by doing : csrutil enable 
Shut down your machine.
Press the power button and then press command-option-p-r to reset the Mac PRAM 
Hold those keys down until your Mac reboots again and you hear the startup chime.
Let go of the keys and let your Mac reboot normally.

Your Mac should now be back to stock.

13 thoughts on “2011 MacBook Pro GPU Failure – A software fix to disable GPU

  1. JRichards

    Hello, could you please elaborate on the steps below? are these one command or a series of commands, while pressing enter after each line?

    mount root partition writeable
    /sbin/mount -uw /
    mkdir -p /System/Library/Extensions-bkup
    mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-bkup/
    touch /System/Library/Extensions/
    mkdir -p /Library/LoginHook
    nano /Library/LoginHook/LoadAMD.sh

  2. Zac Jordaan

    Hi There

    Thank you for this guide – it certainly helped me out of a temporary bind.
    Now, I wonder if there’s an easy way to “undo” these changes?

    If you could help out with that via reply comment I would be most grateful.

    Thank you
    Rgds
    Zac

  3. Jimmy Post author

    Hey Zac, it is fairly easy to undo the changes. Simply enter csrutil enable from the command prompt after logging into recovery mode. And, then reset the Mac PRAM by doing :

    Shut down your machine.
    Press the power button and then press command-option-p-r
    Hold those keys down until your Mac reboots again and you hear the startup chime.
    Let go of the keys and let your Mac reboot normally.

    Your machine should then be back to normal

  4. Brad

    Hello, first thank you for taking the time for doing this. I have a question. When I’m in nano world, and I type all that you say to type and after I type exit 0 and then I hit control + X to save, what do I do after that? Do I exit out of nano? If yes, how do I exit from nano? And where am I typing in the next items in the list? In nano or back in terminal? I’m stuck there? Thanks

  5. gjsmith66

    Brad, after you hit Control-X, you should be exited from Nano. That is the command to save and exit.

    You are typing the next commands into terminal, one line at a time.

  6. Brad

    Thanks for the fast response! When I hit control x it says at the bottom of the nano window (save modified buffer) my options are yes no or cancel. I hit yes and it stays in the nano window. If I hit no it then takes me back to the terminal prompt. So I thought by hitting no was they way to get back to the prompt in terminal, and then I typed the rest of the items you said to type in terminal and typed chmod a+x /Library/LoginHook/LoadAMD.sh and it says after enter no such file or directory. So I ignored it and typed the next line defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadAMD.sh and it said after hitting enter could not write domain com.apple.loginwindow; exiting

    I went ahead and rebooted anyway and it seems to work but the area where the discreet video chip is located is still very hot. Did I miss something? Thanks

  7. Brad

    Hello again, I finally figured out how to get out of the nano window, after control x and then hit yes and then just hit enter to get back to the terminal prompt. However I’m still having issues with the last command line you gave us. defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadAMD.sh
    After I hit hit enter after this line it says (defaults[14:523] could not write domain com.apple.loginwindow; exiting

    Any ideas?

    Also for anyone else out there, this works for High Sierra 10.13 in a early 2011 Macbook Pro i7 15″. When I updated to 10.13.2 and redid the above as the author mentioned you would have to do after an update, I could not get it to work. Everytime I rebooted my screen would go back to the red tint like before. So I would go back and redo all the above and it would work until I shutdown or rebooted again. I was reading that some others were having some issues with 10.13.2 also. Hope this helps. Thanks

  8. Chris

    Hmm iT worked perfectly on my
    Mbp 15” I7 2011. This Morning auto update started itself:(

    It doesnt work anymore.

    Now in don’t seem to manage to type/enter the commanda correcty.

    Could you please elaborate once more on were to lines start en when to hit enter? Especially the part Just Before entering Nano. It is a little confusing when to hit enter. Thanks! IT has been Great:)

  9. Christiaan de Jong

    Ok. Reading it on my ipad made more sense.

    Defaults write to apple.com… etc resulted in a cannot write message.
    Not working yet with this new osx version….fak!

  10. Christiaan

    I did reply a little fast today. First of All: thank you very much for All your effort. Great stuff. IT worked Great for me untill my MacBook did the auto update of high sierra.

    Now the procedure Does not work anymore. Same results as the other poster here.

    Perhaps you know what is to be changed to make the script suitable for the new high sierra version?

    If I ever get iT Working again I Will disable updates forever. Im sure my mbp would have lasted for a couple of years more because your fix worked perfectly on the previous high sierra. Now it is a brick:(

    Thank you in advance for your 2 cents. Great stuff!:)

  11. Wade C

    I was surprised to find your solution after a lot of solution, but it looks like it partially worked for me. I have a Late 2011 MBP running Sierra. I have already bought a 2017 refurb as a replacement but thought I would take one last stab at getting this one back up and working.
    I followed everything in your list and it looked like all was going well until the last step:
    defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadAMD.sh
    the response was something like: error, could not write to domain com.apple.loginwindow
    I tried the command again and got the same response. I rebooted, not knowing if the fix was going to work, but the machine restarted twice in verbose mode and on the second one went to the apple screen and eventually the login page. I am not sure how everything is working if it is not calling the /Library/LoginHook/LoadAMD.sh file. It still seems to cycle running hot, so my guess is your fix was only partially executed.
    Should I go back through the process from the beginning? Or just try to create the LoadAMD.sh file again and try to get the last command to take? Thanks for posting such a thorough and well researched, step-by-step solution!

  12. Mervin

    Hi, I’m running Yosemite

    I did everything to the letter time and again…

    But, from these commands;

    “In nano, add the following text and hit control-X to save

    #!/bin/bash
    kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
    exit 0

    You should have a saved file called LoadAMD.sh at this point. Now type :

    chmod a+x /Library/LoginHook/LoadAMD.sh
    defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadAMD.sh
    reboot

    This time, let the machine boot up normally”

    my MBP first time [tried various other methods on the internet] had a clear screen since it failed completely about 4 months ago and can I finally see what’s happening on my screen again \0/ YAY !!!

    However, I can only boot into ‘safe mode’ to operate the Mac. Booting normally just hangs there in the boot-up screen. The progress bar goes to about 1/4 of the way and stays there, and after an extensive time reboots in this loop.

    From safe mode I’ve done HDD repair, to restoring from external disk, to installing gfxcardstatus, to fresh install. No luck….yet.

    Thank you for all this valuable information to us desperate ones to get our machines working again.

Leave a Reply and Let me know what you think...