This Article I found made mi MBP2011 boot again using only the i7 Intel HD3000!!! No Safe Mode 256 colors and slow graphic $@$*!& issues. This MBP was repaired under the Apple Extension Repair plan in 2015 and failed again in 2018. Please Spread this fix to all users you know with this issue... It really works (until now... its been almos two months since I tried this) It saves you a lot of frustration!!!
Background and explanations
All MacBook Pros from 2011 have a serious design defect. The thermal management and the generated heat together with the robustness of the discrete AMD graphics chips do not match up very well. Apple knew this and acted like a typical Soapy Smith, only reacting to this after an outrage. This scandal took on the name of RadeonGate. Only with a threatened class-action law suit Apple was finally pressured into offering a so called "Repair Extension Program".
The Apple Repair Extension program is not available anymore. The only real way to fix this problem is to replace the AMD chip alone. Not the logic board. Not "re-balling", not "reflowing", not "baking". Apple replaced a failed chip with a failing chip. Time and time again. Only replacing the graphics chip is still a costly hardware procedure for such a vintage laptop.
The only known way – that is: with software alone – to get a 2011 MacBook Pro (8,2) with 'only' a failed AMD graphics chip to almost reliably turn on again and boot into macOS and be quite useable with an accelerated GUI is this guide or a variation of it. Most previous tips just removed all AMD-kexts and this results in a horrible user experience with no GUI acceleration at all.
It is necessary to know your exact OS version. The following guide will be simpler for Yosemite but assumes El Capitan or newer. El Capitan, Sierra and High Sierra need SIP (System Integrity Protection) disabled. On previous systems (10.6–10.10) these steps are unnecessary.
Important: This guide assumes further that all kexts are still in their default location /System/Library/Extensions. Having all AMD-kexts there except one is beneficial for 'proper' operation. Previous hacks in this direction might have instructed you to move, or worse: remove all AMD*/ATI* kernel extensions. If that is the case: either move the kexts back into their default location or reinstall a system of your choice. Having most of the AMD kexts in place and then having the X3000-kext loaded with a delay will enable power management of the GPU which will otherwise burn electricity for nothing (and might hasten the final heat death of the chip on top of that). To reiterate: Only the file AMDRadeonX3000.kext really has be absent on boot to enable a successful startup, but all other (needed) AMD drivers should be in their default location and the X3000-kext loaded afterwards/delayed to get back into a realm of almost sensible power and temperature management.
Bypassing the discrete graphics chip
To get some display acceleration back it will be necessary to force the machine to not boot in discrete graphics (dGPU) but directly into integrated graphics (iGPU) and stay in this mode.
Booting into dGPU mode is the default on Macs with two switchable graphics cards. The procedure below will set an NVRAM variable that disables the dGPU and forces the system to only use the integrated Intel graphics even when booting.
The NVRAM variable is undocumented but appears to be universally applicable to all Macs with two switchable graphics cards. That means it should work on iMacs and MacBook Pros. Whether they have AMD or NVIDIA chips. The specifics about the drivers that might be necessary to move only cover AMD in this guide. But the NVRAM variable will bypass the discrete graphics chip in any case.
This will give you back your machine – but you will lose some features: e.g. the ability to drive an external display from the DisplayPort, a bit of 3D performance. Thunderbolt data connections should work.
In case this guide fails or is not wanted anymore: this procedure is pure software configuration and therefore fully reversible at any time with simple NVRAM reset.
The initial procedure:
Part 1: Disable SIP, disable dGPU, move one kernel extension
1 To start from a clean slate: reset SMC and NVRAM:
shutdown, unplug everything except power, now hold
and release all at the same time;
2 Now power on again and hold
at the same time until you hear the startup chime two times.
3 Boot into Single User Recovery by holding
4 Disable SIP: enter:
5 disable dGPU on boot with setting the following variable:
6 enable verbose boot mode:
7 reboot into Single User-mode by holding
8 mount root partition writeable
/sbin/mount -uw /
9 make a kext-backup directory
mkdir -p /System/Library/Extensions-off
10 only move ONE offending kext out of the way:
mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/
11 inform the system to update its kextcache:
12 reboot normally:
You should now have an iGPU accelerated display, but the system doesn't know how to power-management the failed AMD-chip. (In this state the GPU is always idling with relatively high power, consuming quite a bit of battery when unplugged and leading to GPU temperatures from 60°C upwards [on average 60-85°C], despite not being used for anything by system.)
Part 2: improve thermal and power management
For improved power management of the disabled GPU you have to either manually load the one crucial kext after boot by:
sudo kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
If you have a temperature sensor application you might want to have it open before issuing the above command and watch the temps drop…
Automate this with the following LoginHook that will get executed after the next reboot:
sudo mkdir -p /Library/LoginHook
sudo nano /Library/LoginHook/LoadX3000.sh
with the following content:
pmset -a force gpuswitch 0 # undocumented/experimental
then make it*1 executable and active:
sudo chmod a+x /Library/LoginHook/LoadX3000.sh
sudo defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadX3000.sh
*1: The undocumented use of this pmset command seems to improve sleep/wake/shutdown behaviour. If it doesn't, experiment with leaving it out.
See the Disclaimer below. The following is just speculation: sleep/wake/shutdown may remain troublesome. The theory here is that "something slowly corrupts" what is saved in the SMC. Therefore, resetting the SMC and re-applying the variable hack seems to alleviate the situation for a time. (Permanent solutions for this welcome!) As short time workarounds you might want to try to avoid "lid-closing sleep", that seems to give more trouble than other methods (Apple-Menu, Keyboard-Shorcut). Apparent hangs on shutdown are usually just very long delays that will shutdown, eventually, cleanly and successfully.
Unscientific sampling suggests that Yosemite is worst for this and El Capitan and Sierra much better behaved in this regard.
Manually or otherwise delayed loading of this crucial kernel extension allows the system to handle power management a bit better. The battery will be less used and the temperatures emanating from the unused GPU will drop to a range significantly below 50°C (on average between 15-50°C).
For proper power management the minimal set of loaded kexts are on boot (versions for 10.12.6, check with kextstat | grep AMD):
And if the above method of loading succeeded this should appear added to the list:
Preventive measures for future use
There are two further caveats to know: This is reversible when the SMC/NVRAM is reset. If that happens the GPU-power-pref NVRAM-variable can or even 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:
sudo nvram boot-args="-v"
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
– 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:
– And after mounting your boot-volume read-write to execute just this single line:
Part 3: Handling Updates from Apple
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.
Upgrading to High Sierra 10.13: with this hack in place is almost straightforward: Despite applying a firmware update the installation process should not touch the NVRAM variable. The installation process also does not use a fully accelerated AMD chip but basic acceleration that is not problematic regarding this hack. However, as noted in the paragraph above the first boot into a system that is finished installing but just about to start the setup process will produce a heat/crash induced boot loop. The offending kernel extension has to be moved again like described above. (Starting at Step 3) After moving the kext, all shall be well.
Closing Remarks and Recommendations
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 (both commercial).
Disclaimer: This whole procedure is no magic bullet. The state of failure for these chips not 100% predictable. Very few users have issues even with this hack in place: there might be issues with rebooting, going to sleep or waking up properly, most of them coming from users with Yosemite, the least trouble seems to be on Sierra. In these cases it seems sometimes necessary to not use the AMDRadeonX3000.kext, and therefore also not the LoginHook from Part 3. (But see the additional note under *1 above.) Within the restrictions outlined at the start of this answer: Most users report complete success.
A new and very cheap hardware modification is available at/from RealMacMods: While they use a relatively complicated way of setting the necessary EFI variable with linux the following has the advantage of cutting the core voltage to the dGPU completely by removing just one tiny resistor! (Pictures at the link)
On this reboot it is essential that you boot once into safe mode (hold Shift throughout boot), and then choose shutdown(not restart) from the menu.
Do this safe boot with the R8911 resistor in place. Without this SAFE BOOT, the next steps may not work.
Do no more boots until you complete the next steps.
The safe boot clears OS level GPU preferences, that may interfere with the following process.
This will now cause your MacBook Pro to stop switching to the Radeon automatically, but it will still draw power, create heat, and be visible to the OS.
We discovered that simply removing 1 resistor will resolve this.
The resistor can also be replaced with a switch, in case you need to turn your radeon back on for any reason.
The placement of this resistor varies between logic board models.
The resistor in question is R8911 on the 17″ MBP and R8911 on the 15″ MBP a 1 Ohm resistor that provides a current path to the ISL6263C DC to DC Converter.
This resistor controls power to the Voltage Regulator that provides the Core Voltage to the Radeon GPU. Simply put, no core voltage, no GPU. You will find the resistor just to the right of a cooling fan (in the above orientation). It will be near the ISL Voltage converter chip. This is the chip we will be disabling.
Just remove it. The preferred method is a professional reflow station, but an iron and a steady hand will get you where you need to be. If you used flux to remove it (not needed), make sure you clean up with a little Alcohol or other suitable solvent.
That is basically it. Next time you boot up you will notice your GPU defect issue is gone, and you will no longer see the AMD GPU as installed hardware.
I have not tested this but it should eliminate any need to care for the kexts and also solve any issues regarding sleep, wakeup, hibernation, reboot etc.