⏱reading time: 9 min

Update 2017.12.12-14.20 EET: whether or not I use the AMDGPUWakeHandler and whether I sleep or hibernate I can’t wake up of the hibernation/sleep. Depending on if I have AMDGPUWakeHandler on or off I get different outputs, but none of those end in a successful wakeup.

Update 2017.12.13-09.08 EET: After checking about the wake up problem after sleeping / hibernating with the people form MacRumors, I reached some conclusions.

  1. You don’t use AMDGPUWakeHandler with this solution, since it could create a kernel panic… so for that reason doesn’t work.
  2. pmset gpuswitch option can help, but it’s really undocumented officially, so we really don’t know what the values for 0, 1 and 2 stand for, and can vary from machine to machine I guess, or at least to macOS version to version.
  3. gfxCardStatus can help since the problem after wake up is the dGPU activates and the computer freezes.

I’ve updated steps 11 and 12 in consequence.

Update 2017.12.18-14.42 EET: I’ve tried to wake up from hibernation without gxfCardStatus and it worked pretty well I didn’t have any issue, so if you don’t want to have it installed or at least running in the background I think it’s OK.

Update 2018.01.09-21.35 EET: After install the security update to mitigate the effects of Spectre, I have to apply the fix again as explained here. Everything worked fine, but on wake up of hibernation I got a black screen a couple of times. Also the computer didn’t turn off and got stuck in a black screen. I really don’t know what is the reason, but seems it’s related to the gpuswitch parameter. I changed to 0 and then to 2 again, and seems that everything is normal again. But I don’t know if it’s really that or it’s other thing.

Update 2018.01.21-09.20 EET: I just installed macOS update 10.13.3 and after testing a little bit I got to the conclusion that what work best for me is to set pmset -a gpuswitch 1

Ok!!!!!! There is a third, and I think final, solution to totally deactivate the dGPU. Till this moment this is my favorite solution and I even have the brightness back to my computer. Also it sleeps correctly. You can check my previous post also 1 & 2.

We all have to thank to MacRumors community that all of them have been working really hard to create a workable solution to all of us. This guide is almost a exact copy of the one posted by MikeyN here. I’ve just changed somethings and added the AMDGPUWakeHandler to manage the sleep.

The fix

Let’s explain how it’s done:

  1. As always you have to reset SMC and PRAM/NVRAM before you do anything else.
    SMC: shutdown, unplug everything except power, now hold leftShift + Ctrl + Opt + Power and release at the same time.
    PRAM/NVRAM: with the power cord on, power on and immediately later and before the chime hold cmd + Opt + P + R at the same time until you hear the chime for the second time. Try to do the following step just right after, so you don’t let the computer to load –and fail.
  2. Now, boot into recovery single user mode by holding: cmd + R + S . When finish to load, you run:
  3. Reboot in single user mode holding on boot  cmd + S
  4. Now we are going to mount the hard drive and move the driver of the dGPU AMDRadeonX3000.kext  out of the drivers folder.
  5. Now you’re going to be able to load your desktop normally, but with an accelerated iGPU display. However, the system doesn’t know how to power-management the failed AMD-chip, so you are going to need to load it manually.
  6. You can automate the loading with the doing the following:
  7. On nano you type/paste:

    * I’ve decided to comment the line 3 since I’m not sure that 0 is the correct value. Besides, in the step 12 I set gpuswitch 2.
  8. You make it executable active:
  9. This is what I like the most. You create a script in the root of your hard drive to automate the process in case of an update.

    With the following content.
  10. Now you make it executable and I hide to avoid delete it:

    In the future if you reset SMC and PRAM/NVRAM you just have to load in single user mode holding cmd + S  and run:
  11. Then, you can copy the AMDGPUWakeHandler, or the one I created AMDGPUWakeHandler.kext, to /Library/Extensions  and run the following commands:
  12. This time you don’t need to change the way the machine sleeps. And you can reboot.
    I recommend you the way the machine sleeps to hibernate, but I haven’t tested if it can sleeps normally after we apply the following step

    All the fuss about the wake up after sleep / hibernate is related to when the computer wake ups checks the GPUs and somehow it gets stuck to dGPU. For that reason some people has changed the variable gpuswitch in pmset. Nevertheless, this variable is really undocumented and you find explanations to what the values to that variable (0, 1 and 2) do on internet. At this moment I have it set as default 2 I’ve decided to change to 1.

    Which I thing it’s the default value. The default value is 2.
    You can try the different values, reboot and then close the lid and wake up and see the results.
    What has worked for me is leave it in 1  and install gfxCardStatus, and every time I boot change to integrated only . But still testing. I’ve tried to wake up from hibernation without gfxCardStatus and it also worked, so I guess it’s optional. gfxCardStatus can help, but at least I’m not using it right now. I wake up from hibernation without it perfectly.
  13. After you reboot and if everything goes smoothly, perhaps you wan to return to the normal boot mode. You can room in terminal:

Now I just going to copy paste from MikeyN‘s post

This setup has now one kext in a place Apple’s installers do not expect. That is why in this guide SIP has not been reenabled. If an update that contains changes to the AMD drivers is about to take place it is advisable to move back the AMDRadeonX3000.kext to its default location before the update process. Otherwise the updater writes at least another kext of a different version to its default location or at worst you end up with an undefined state of partially non-matching drivers.

After any system update the folder /System/Library/Extensions has to be checked for the offending kext. Its presence there will lead to e.g. a boot hang on Yosemite and Sierra, an overheating boot-loop in High Sierra.

Further: this laptop is overheating, no matter what you do. The cooling system is inadequate and the huge number of failing AMD chips are just proof of that.

In case you have to update

So, before you update the system, please remember to run:

Then you update. If you can’t normally load your computer, you can hold  cmd + S  and run:

Then you can reboot again on single user mode holding  cmd + S and then run

To move again the kext. Keep in mid that the other one still there do you are going to probably rename it in this fashion:

Checking that everything is OK

If you run in terminal

You have to get something similar to this:

In the beginning I wasn’t getting any of these and the system just loaded AMDRadeonX3000. That resulting in a little bit of overheating in the dGPU and I wasn’t able to sleep the computer. The reason for the system to not load the kext was I moved them that much that I changed the ownership of the files. If that is your case you can run in terminal:

to return the ownership to the System / Root.

Let’s hope that everything goes smoothly from now on. You have to see the bright side of life, now you have a quite cold running Mac since the dGPU is totally deactivated. After a while your temps have to be something similar to this:

GPU diode and GPU proximity are the dGPU sensors. GPU PECI is the iGPU sensor.


27 thoughts on “Disconnecting the dGPU in a late 2011 MacBook Pro –third way

    • the method in this post works with High Sierra and you can control the brigthness as usually. The sleep / hibernate normally, I think you can perfecly do it also, but I think you need to have gfxCardStatus in integrated only.

  1. i do have gfxCardStatus in igpu, but still it wont work. idk if that matters, but i only have com.apple.kext.AMDLegacySupport and com.apple.kext.AMDRadeonX3000 kext loaded, all others dont load and cannot load manually either. also tried gpuswitch 0, 1 and 2, no result. maybe need clean install and start new

  2. Thx for trying to help me. I have hibernate 25 too and also repaired ownership, still they wont load. Do u think it might be the problem? Cause sudo kextload AMD…. for some reason doesn’t work, “not privileged…” blah blah…?

    • You’re welcomed and we are here to help one another. Can you tell me that you see if you ask for info to the AMD6000Controller.kext on /System/Library/Extensions/? System need to be able to read and write.


      • ok, there is no AMD6000Controller.kext at all, nowhere. must have deleted it somehow? all others are there. AMDLegacyFramebuffer.kext is read and write.

        “/Users/me/AMDLegacyFramebuffer.kext failed to load – (libkern/kext) not found; check the system/kernel logs for errors or try kextutil(8).” – this is what i get if i try to “sudo kextload AMDLegacyFramebuffer.kext

        can i just download AMD6000Controller.kext? or need to reinstall?

  3. i made it!!! it was really the missing AMD6000Controller.kext! i just copied it from my other macbook, installed it with kext utility, rebooted and now they are all loaded and everything works as it should 🙂
    thx dude!

  4. funny thing, i just noticed that my system doesnt even contain the AMDRadeonX3000.kext, only the AMDRadeonX3000.bundle??! how come? im on fresh installed high sierra 10.13.2. my mbp stopped working and i tried to do the fix, but there was no kext to move and so i stucked on system not booting. i started from extern hd and found out that there is no AMDRadeonX3000.kext at all. now my system works perfect again but without x3000. i would like to install the last update but im affraid to fuck up the system again. any suggestions?

  5. absolutely, just checked again, none. and kextstat says loaded are only: AMDLegacySupport, AMD6000Controller and AMDLegacyFramebuffer. search also doesnt find anything. but everything works just as its supposed to.should i update anyway?

  6. Hello, I have Macbook pro late 2011. (I had graphic card replace by Apple 2years ago. And now this problem again.) Started now with fresh Sierra instal 10.12.6.

    Last night I did this method and got my mac working again, I noticed it’s even faster than before. But I had some problems, first that I noticed was when youtube video was playing after 20min, just when I was on terminal at this line:
    sudo pmset -a hibernatemode 25
    sudo pmset -a gp…..

    whole screen froze and you can hear the audio stuck in last word ts ts ts ts, so I had to force shutdown. It loaded again. everything was working, but I noticed on one time whole screen brightens went to black and lighten up again. Still worked after that till I decided to test my build in camera, so when I clicked on Photo booth (app) screen froze again as before.
    (I have read people have this freeze with programs like Photoshop, Ableton etc.. and there are some fix for that too. I am still far from installing some software to test this.) On the next restart went to gray screen and I could hear the fans again.
    So I know I was back to start again.

    In single user mode I started the “sh /force-iGPU-boot.sh”, and in 5sec I was on Sierra. I watched movie, and before sleep I did regular shut down. Next morning I was on gray screen again….
    I did “sh /force-iGPU-boot.sh” again, and now I am here to write this. Can you please help me where I do wrong. I think after restart I will see Verbose mode again (as I see it regularly now after restart is this ok?)

    p.s. sleep works fine, brightness works too.

    Thank you so much!

    • I really don’t know what could be really wrong. In the end you have to think that this is just a rig to be able to continue to use your computer although it’s broken. I haven’t experience anything like you have experience, but I’m in High Sierra and I haven’t been watching any movie lately, but I’ve been doing some other intensive iGPU jobs.

      Two/three things that can come to my mind are:

      • Check if the AMDRadeonX3000.kext is really out of the /System/Library/Extensions/
      • Check the ownership of all the kexts, whether or not they are in the /System/Library/Extensions/ or in /System/Library/Extensions-off/
      • Check if all the kext related to graphics load.
      • See if something in your system is forcing to try to use the dGPU. I haven’t use sierra –I didn’t like it– I jumped from El Capitan to High Sierra. Perhaps your movie app or something.

      If you still have problems, I recommend you to post in the thread about issue in the MacRumors forums. I think the link is in my post.

  7. Thank you for the fast reply,
    just checked the folders and: kexts are still in /System/Library/Extensions/ including AMDRadeonX3000.kext,
    they are not in the new created folder: (your name “/System/Library/Extensions-off/”) (my name “AMD_Kexts”) this folder is empty.
    All 4 kext are load:
    102 2 0xffffff7f83b6b000 0x122000 0x122000 com.apple.kext.AMDLegacySupport (1.5.1) 0670744B-B64C-3424-B186-FD972A37E78E
    130 0 0xffffff7f83cd0000 0x12e000 0x12e000 com.apple.kext.AMD6000Controller (1.5.1) 2015FD1C-294C-3C71-AEB5-C1EE0E65BD46
    141 0 0xffffff7f83520000 0x571000 0x571000 com.apple.AMDRadeonX3000 (1.5.1) F6F37414-893B-3F66-8AB7-F3327DE6AC55
    148 0 0xffffff7f83c9a000 0x22000 0x22000 com.apple.kext.AMDLegacyFramebuffer (1.5.1) 930A7077-5EBD-3FA5-A023-415A1438E132

    For now I was able to boot just with: sh /force-iGPU-boot.sh,
    and I see now the line in this script is different of my folder “AMD_Kexts” : kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
    in my case should be: kextload /AMD_Kexts/AMDRadeonX3000.kext ?

    I will start over and use your folder name now, and see what happens.
    Thank you again, just by writing to you, I notice this mistake. I will try this and write back.

    p.s. Maybe is better for me to update with High Sierra and start over. I think it will work better maybe. Just don’t know should I start right after the update is done, or should I stop it and enter the code.

    • You’re really welcomed!
      About updating to High Sierra and so. Ponder if you really want to do that, because in the beginning –when I wanted to fix this problem– I found more people that was able fix it easier in Sierra than in High Sierra. So be careful, if you happy with Sierra, perhaps you don’t need to upgrade.

  8. Update:
    I did your steps one by one, tested and everything works great! And while doing the steps I understand better what it’s done.
    I have load some major programs, works perfectly, most important and kinda strange: it’s faster than before. 🙂
    Also I did more shut downs, and restarts, so far all good.
    For now I will stick on Sierra.
    I am grateful I landed on your blog Luis!
    Thank you again.

    • I’m glad that worked for you! When you understand the solution it’s kinda silly and really simple. You have to think that it load everything faster because it doesn’t have to be shifting between the two cards it just sticks with one. If you don’t do anything that it’s really GPU intense it’s going to be really fine. You have to think you have a kind of MacBook Air.

      As I think I’ve mentioned in the post, I still have some problems from time to time with the wake up from sleep. Perhaps you aren’t going to have any of those since Sierra seems to be more stable in that department. Basically what happens is the screen doesn’t turn on after I pull up the lid and I have to reboot. It’s a random error that I really don’t know why happens. Before the dGPU crashed it happened also, but perhaps once every 6 months or so.

      I didn’t developed this solution, I just put it here to make it more clear, but the ones that came out with it are the people from MacRumors forum.

  9. Thank you again, I saw the forum also, shoutout to MikeyN.
    But this was cleaner to look at to, as I am not programer or understand what I write :), and at the end I did.
    I see some security update for Sierra. I messed up last night. I did the update but I did not made copy for the X3000, and I thought I will just move it and then I was asked to overwrite and I did, but I ended with not working X3000, It was impossible to load the kext, to complete the last step. Today I did clean instal. and …

    I still have the urge to do the update, but I don’t understand the last step:

    $ sudo cp -r /System/Library/Extensions-off/AMDRadeonX3000.kext /System/Library/Extensions/
    -this will make copy in the original folder right ?
    sh /force-iGPU-boot.sh
    -this I know.
    $ sudo mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/
    -ok this is for the move of the newly created file.
    $ sudo mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/AMDRadeonX3000-1.kext
    -but here don’t know what to expect.
    when I enter step 3, I will be asked to rename the old one? What should I do when asked or ..?
    or should I manually rename it?
    the renamed file will stay in the same folder? what to do with it?

    did you made this step? any tips?
    for your problem why you don’t turn the sleep to never in energy saver?


    • Hi!

      Yes, you have to rename the kext, or at least it’s recomendable. mvin terminal works for moving files and for rename.
      The idea is that you don’t know if Apple is going to update the kexts or not, so you bring things back to normal update and take again the problematic kext out of the folder. In the spirit to keep every single kext you move, you rename the new one. Perhaps it’s a better idea to rename the old one and copy the new one. I’ll try to explain this better.

      Be careful when you move those files… they lose the ownership pretty quick if you don’t move then on terminal and being logged as root sudo. If they don’t load check the permissions / ownership.

  10. so after update if Im stuck at logo, that means I have new working file. this way I will know if system updated the kexts. if it’s there and system load i have copy that won’t work, and system did not made changes.
    in my case I know it will make update of files it’s security update with restart.
    I noticed when I did overwrite after update I did not lose ownership, it was read/write. but will not load in terminal with the script.

    $ sudo cp -r /System/Library/Extensions-off/AMDRadeonX3000.kext /System/Library/Extensions/
    this I enter in terminal, but when u make copy of the kext this means the copied file – will not load after. it will be “corrupted” ?

    Ok now understand, if i have new installed kext
    when I move the updated file I rename it:
    $ sudo mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/AMDRadeonX3000-1.kext

    AMDRadeonX3000-1.kext will be the new file. later in terminal I will see witch of those two can be loaded.
    as if they are different version maybe old one will not load. now i have 1.51.8 version of AMDRadeonX3000

    so for example if the new kext AMDRadeonX3000-1.kext load in terminal better to keep that without rename and make changes in the nano script to load that file:
    kextload /System/Library/Extensions-off/AMDRadeonX3000-1.kext

    pmset -a gpuswitch 0 # to prevent to switch to the dGPU

    exit 0

    But here Is what makes me scared. what if when you make rename the file is not in use anymore, the system, notice when u make rename, copy, or overwrite in my last case.

    lol I don’t know why I see this so complicated, or I think too much. that’s why I need simple steps what to do.

    • You can rename the other way around… I mean. First rename the file you already have in Extensions-off and then you copy the new file. You do that this way for example.

      This way you always know that the last one is the one with the correct name and not the ones renamed.

      Regarding why I don’t set hibernatemode 25… I have that way for a while, but it also happen to me from time to time that the computer doesn’t wake up correctly. Funny thing was it loaded, I could see the bar loading the hibernation info from hard drive, but at the end the screen ended up black. So I decided to leave it in hibernatemode 3.

  11. Ty for the fix, im able to use the MBP now 🙂
    Is there any chance to connect a external screen without amd GPU?

    • You’re welcomed!
      The dGPU controls the image output in the thunderbolt. No dGPU no external image in that port.
      However, there are usb controllers / adaptor, but I haven’t used any of those. People say they work but they are a little bit slow refreshing the image.

Leave a Reply