Check the ram’sGuys, I think I may be experiencing the dreaded GPU issue but need someone to confirm the symptoms:
- Random system crashes - entire UI freezes, no mouse pointer movement, then black screen. System then reboots - often it would be stuck in a boot loop - e.g. Apple logo, fans at near full speed then sudden fan stop and restarts the boot automatically again. Sometimes it would manage to get through to the login screen and I can continue using the computer as normal until the next crash...
Any tips on what action I should take now (if things get worse and this is the GPU issue)?
I've had the GPU issue in the past and got the Logic Board replaced under their replacement program, so this is the replacement board. 90% of the time I've been using gfxCardStatus to force-run on integrated GPU and prolong the life of the MBP, but alas, I think the time has come again...?
Any help/advice most appreciated. Couldn't have come at a worse time when I need to use the MBP
There is not *one* guide to write up. Many roads lead to Rome. The best option would be if AppleMacFinder would update the first post of this thread pointing to the best alternatives.
Anyway. Even if this post now will quickly drown in the sheer length of this thread, I think this is currently one of the better guides:
#####__ The Guide __#####
This guide assumes that you run a stock system. Problem just occured. That means:
This guide assumes that all kexts are still in their default location /System/Library/Extensions.
Having all AMD-kexts there except one is beneficial for 'proper' operation.
To get some display acceleration back it will be necessary to force the machine to not boot into discrete graphics (dGPU) but directly into integrated graphics (iGPU). This will give you back your laptop – but you will lose some features: e.g. the ability to drive an external display. Thunderbolt data connections should work.
The initial procedure:
– To start from a clean slate: reset SMC and PRAM/NVRAM:
shutdown, unplug everything except power, now hold
<leftShift>+<Ctrl>+<Opt>+<Power>
release at the same time;
– Now power on again and hold
<Cmd>+<Opt>+<p>+<r>
at the same time until you hear the startup chime two times.
– Boot into Recovery by holding
<Cmd>+<r>+<s>
– Disable SIP:
csrutil disable
– disable dGPU on boot
nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
– enable verbose boot mode:
nvram boot-args="-v"
– reboot into single user-mode by holding
<Cmd>+<s>
on boot
– mount root partition writeable
/sbin/mount -uw /
– make a kext-backup directory
mkdir -p /System/Library/Extensions-off
– only move ONE offending kext out of the way:
mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/
– let the system update its kextcache:
touch /System/Library/Extensions/
– wait for the kextcache process to finish
then
reboot
Reboot normally:
you will have an accelerated iGPU display.
But the system doesn't know how to power-management the failed AMD-chip.
For that you have to either manaully load the kext after boot by:
sudo kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
Automate this with the following LoginHook:
sudo mkdir -p /Library/LoginHook
sudo nano /Library/LoginHook/LoadX3000.sh
with the following content:
#!/bin/bash
kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
exit 0
then make it executable and active:
sudo chmod a+x /Library/LoginHook/LoadX3000.sh
sudo defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadX3000.sh
Preventive measures for future use
There are two further caveats to know: This is reversible when the SMC/PRAM/NVRAM is reset. If that happens the GPU-power-pref nvram can/has to be set again to force the use of the iGPU from boot-time.
Since this can happen quite easily (and is often erroneously recommended way too many times than it is actually useful), you should probably prepare for such a scenario and create a simple script to greatly speed up the process and also make entering the necessary variable much less error prone:
sudo nano /force-iGPU-boot.sh
– Enter the following content to this file:
#/bin/sh
sudo nvram boot-args="-v"
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
exit 0
– Now make that executable:
sudo chmod a+x /force-iGPU-boot.sh
In the future, when the SMC/PRAM/NVRAM gets reset to default values it is now possible to boot into SingleUser with:
<Cmd>+<s>
– And after mounting your boot-volume read-write to execute just:
sh /force-iGPU-boot.sh
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.
To prolong the life of this now hacked machine it is advisable to abstain from really heavy lifting over prolonged stretches of time. Strictly follow the usual recommendations for laptops: use on hard surfaces, keep the fans and fins inside it clean. Using any fancontrol software with relatively aggressive settings should also help: like smcFanControl, MacsFanControl, or TGPro (the latter both commercial).
This is fairly complete and what I do recommend to everyone asking me.
Nevertheless. We're not done here, yet. Improvements are welcome. Share them!
I wouldn’t dare to tinker with hardware, but I’d try that MikeyN’s guide. Btw, is that guide limited to certain OS’s or will it work on any macOS up to High Sierra (including HS)?You type that thing only once each time you install major updates. You don't have to do it on each restart. Follow this MikeyN's guide.
There are other ways to permanently disable AMD GPU card by doing hardware modifications. Follow Dosdude1's method or Arda Yilmaz's gmux solution. The latter method can be used to restore brightness control.
It will work up to High Sierra, but on HS you might get wakeup/sleep problem, when it crashes anytime it goes to sleep. With Sierra or earlier OS versions you shouldn't have any problem.Btw, is that guide limited to certain OS’s or will it work on any macOS up to High Sierra (including HS)?
It will work up to High Sierra, but on HS you might get wakeup/sleep problem, when it crashes anytime it goes to sleep. With Sierra or earlier OS versions you shouldn't have any problem.
This happened to me but the problem only seems to happen if I re-enable SIP after the fix. So I have had to leave SIP off. i.e. I do "csrutil disable" at the start but I don't do "csrutil enable" at the end.Hi all
Thank younfornthe fix
This been working for a while on my mbp 17 late 2011 8,3 but somehow when i replaced the battery, the mac cannot detect my intel hd 3000 gpu and only shows "Display 8MB" with sluggish performance and searching not working on folders. Tried to fix again using the nvram on single user ,ode but no succeed? Any advice?
Thanks
I followed your guide and it worked. I was using MBp for about 2 days, but when I tried to power on yesterday, its giving continuous startup chimes(nothing on screen). Any ideas what could have been wrong ? Sometimes when I power off (long press) and it starts without any chime and nothing on screen.Hey guys, I'm happy to report that after long struggles with trying to find a PERMANENT fix for this crappy GPU I finally found one that works like a charm! Now I can restart my MBP and it will boot normally by using the Intel GPU rather than the faulty AMD GPU and I no longer have to bring it back to life after each restart!
Below I'm sharing the exact steps I followed and I hope it can help someone else as well.
First of all, many thanks to @jaynaland for pointing me into the right direction and then @MacTinkerer2011Fan-Pun for his continual help.
I have a 15" late-2011 MBP and I'm on High Sierra 10.13.6 (with Security Update 2020-003 installed). (This would probably also work with Security Updates 004 or 002 etc. but can't say for sure, though.)
I mostly followed the procedure by arhirienko from GitHub, though I had to add some of my own tweaks in order to really make it work. It is a very straight-forward manual, but please make sure to follow the instructions very closely and to type the commands precisely:
It will show a bunch of text in the screen (don't be alarmed, let it finish) and then it will restart again. On the second restart it will show a bunch of text in the screen again and then it will show normal login screen and your computer now should work properly.
- Reset SMC. (Shutdown your MBP, unplug everything except charging cable and hold leftShift + Ctrl + Option + Power for about 15 secs. Then let go and you should see the the light on the charging dongle flash once.)
- Reset PRAM. (Turn on your MBP and immediately hold Command + Option + P + R buttons. Hold it until you hear the chime at least 2 times.
- Shut down your MBP and turn it on again and then boot using Command + S.
- Manually type nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00 and run it.
- Manually type nvram boot-args="-v" and run it.
- Manually type reboot and run it.
- Boot using Command + R (this may take a bit longer for the progress bar with Apple logo to boot).
- Go to Utilities in the menu bar above and open Terminal.
- Disable SIP: manually type csrutil disable and run it.
- Manually type nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00 and run it.
- Manually type nvram boot-args="-v" and run it.
- Manually type reboot and run it.
- Boot using Command + S.
- Manually type /sbin/mount -uw / and run it.
- Manually type mkdir -p /System/Library/Extensions-off and run it.
- Manually type mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/ and run it.
****CAVEAT: in my case the step no. 16 didn't work properly and I kept getting the following message: ... “Directory not empty”. For some reason I had the AMDRadeonX3000.kext file both in Extensions and Extensions-off folder when ideally the kext file should be only in the Extensions folder and by running step no. 16 you'd move this kext file into the Extensions-off folder. So what I had to do was force-delete the kext file from my Extensions-off folder in order to be able to successfully move it there from the Extensions folder.
So, if you get the “Directory not empty” message after running step no. 16, using the following command to force-delete the kext from Extensions-off folder helped in my case:
Manually type rm -rf /System/Library/Extensions-off/AMDRadeonX3000.kext and run it.
Then repeat step no. 16.- Manually type touch /System/Library/Extensions/ and run it.
- Manually type reboot and run it.
Once your MBP is up and running again, you will now be able to shutdown/restart your MBP without fears of it not booting again.
One last thing to do is to turn off the verbose mode (ie. a bunch of text showing up on the screen when you restart your MBP), so follow these steps:
1. Restart your MBP and boot using Command + R.
2. Go to Utilities in the menu bar above and open Terminal.
3. Manually type nvram boot-args=" agc=0" and run it.
4. Manually type reboot and run it.
And you're good to go!
PS: it is advisable not to do any system updates after this anymore because it will likely result in having to do the whole procedure again!
As per GitHub:
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.
Hmm, hard to say. Unfortunately I'm no expert in this, but perhaps you could again try step 1 and 2 from my instructions above and report back what happens? When you reset PRAM make sure you hear the chime at least twice.I followed your guide and it worked. I was using MBp for about 2 days, but when I tried to power on yesterday, its giving continuous startup chimes(nothing on screen). Any ideas what could have been wrong ? Sometimes when I power off (long press) and it starts without any chime and nothing on screen.
I have tried re-seating the RAM
Hey guys, I'm happy to report that after long struggles with trying to find a PERMANENT fix for this crappy GPU I finally found one that works like a charm! Now I can restart my MBP and it will boot normally by using the Intel GPU rather than the faulty AMD GPU and I no longer have to bring it back to life after each restart!
Below I'm sharing the exact steps I followed and I hope it can help someone else as well.
(...)
As per GitHub:
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.
Yes.Hello jon08, do you still have brightness and sleep with this tutorial ?
Worked for me too.Hello jon08, do you still have brightness and sleep with this tutorial ?