I’m happy to say that my MacBook Pro is back up and running thanks to this thread! I used most of the steps in
MikeyN’s guide, along with some steps from another guide found on
asyncro.com. It took a few tries, but after adjusting a few things for my set up (MBP 15” Early 2011 running Yosemite), everything is working perfectly and I have a fully functioning MacBook Pro (aside, of course, from video out to an external monitor).
Below are the steps I took for
Early 2011 15” MacBook Pro running Yosemite 10.10.5:
1.
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.
2.
Now power on again and hold
<Cmd>+<Opt>+<p>+<r>
at the same time until you hear the startup chime two times, then immediately press and hold:
<Cmd>+<r>+<s>
to boot into Recovery Mode. If done correctly, you will boot to a command line (DOS-like) interface.
3.
Disable dGPU on boot
type: nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00 (press ‘Enter')
4.
Enable Verbose Boot Mode and Reboot:
type: nvram boot-args="-v" (press ‘Enter')
type: reboot (press ‘Enter’), then hold:
<Cmd>+<s>
to reboot into single user mode.
Again, you will reboot to a command line interface.
5.
Make root partition writeable:
type: /sbin/mount -uw / (press ‘Enter')
6.
Make a kext-backup directory:
type: mkdir -p /System/Library/Extensions-off (press ‘Enter')
7.
Only move ONE offending kext out of the way:
type: sudo mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/ (press ‘Enter')
8.
Let the system update its kextcache:
type: sudo kextcache -v 1 -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions/ (press 'Enter’)
This process may take a few moments to complete. Then:
9.
Turn off Verbose Boot Mode and Reboot:
type: nvram boot-args="" (press ‘Enter’)
type: sudo reboot (press ‘Enter’)
You should now be able to boot to the login screen and/or desktop. In my case, I needed to
QUICKLY DO THE FOLLOWING STEP to keep my Mac from shutting down:
10.
Manually load the dGPU kext (this needs to be done for power management. You are NOT re-enabling the faulty dGPU)
Open the Terminal and type: sudo kextload /System/Library/Extensions-off/AMDRadeonX3000.kext (press ‘Enter’)
11.
Now follow the rest of MikeyN’s guide:
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