Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.

Draeconis

macrumors 6502a
May 6, 2008
987
281
If you don't have time to read my story (which also describes some interesting technical approaches) just scroll down this thread until a "100% WORKING SOLUTION" text

Discrete AMD GPU of my 2011 MacBook Pro 8,2 has finally failed because of the reasons mentioned here ( http://logicboardmac.blogspot.ru/ ) and there ( https://www.macrumors.com/2015/02/19/2011-macbook-pro-repair-program-apple/ ) . It has been working perfectly for 6 years under quite a high load, even tried SETI@HOME mining at background! So I was confident that my MBP is not affected by bad solder / bad soldering quality and didn't want to bring it to Apple for a free repair program - partially because couldn't find the time to pause my important software projects, partially because I was afraid that Apple might give me a less reliable logic board or refuse a free repair because of the several unrelated repairs that I did manually by myself earlier to save money: changed thermal paste a few times, replaced the internal battery 2 times, replaced a keyboard with broken buttons, etc. But it finally broke down last week: laptop's screen image became distorted, it refused to boot OS X (always freezing half-way), and - Apple free repair program has already ended! I know there are affordable solutions like $50 BGA resoldering at unofficial local repair shop and that its possible to get a new replacement HD 6750M chip from AliExpress for $35 or cheaper ( http://www.aliexpress.com/item/DC-2...0028-216-0810028-BGA-Chipset/32764872143.html or https://www.aliexpress.com/item/DC-2015-New-216-0810001-216-0810001-Graphic-Chipset/32718112928.html , because don't know if this is true - https://www.rossmanngroup.com/board...0604-replace-216-0810005-gpu-with-216-0810028 ) to guarantee a successful repair, so the total price of repair would be either $50 or $50+$35=$85 - less than $100 in any case. But I don't like investing money to the old computers, so I have thought - what if there is some hack to force MBP to use integrated graphics ALL THE TIME, even while booting ? And then started to explore the possible solutions...

===

First of all, it is possible to successfully boot a MBP to OS X while still using the failed GPU, after you remove the AMD drivers by booting in command line mode (CMD+S) and entering these commands:
1) fsck -fy (to check a disk)
2) mount -uw / (mount a root filesystem with read/write permissions)
3) sudo mkdir /AMD_Kexts/ (make a directory to store the AMD drivers in case you'll need them in future)
4) sudo mv /System/Library/Extensions/AMD*.* /AMD_Kexts/ (move the AMD drivers)
5) sudo rm -rf /System/Library/Caches/com.apple.kext.caches/ (remove the AMD drivers cache)
6) sudo mkdir /System/Library/Caches/com.apple.kext.caches/ (just in case OS X will be dumb and will not recreate this directory, I am creating it for OS X)
7) sudo touch /System/Library/Extensions/ (to update the timestamps so that new driver caches - without AMD drivers - will be definitely rebuilt)
8) sudo umount / (umount a partition to guarantee that your changes are flushed to it)
9) sudo reboot

The degree of your inconvenience while doing these steps - strongly depends on how heavily a screen's image is distorted in your case. In my case it was even more difficult because the OS X partition became a "read-only" partition (because of too many emergency shutdowns I did while desperately trying to boot OS X with a failed GPU) so I had to remove a hard drive from MacBook Pro and (using a USB to SATA 2.5" adapter taken from my portable HDD) attached it to a computer with Linux, then followed these instructions:

https://superuser.com/questions/961401/mounting-hfs-partition-on-arch-linux (1st answer) - carefully executed a number of commands, calculated a sizelimit for my parition layout, and finally ran sudo mount -t hfsplus -o force,rw,sizelimit=YOURNUMBER /dev/sdb2 /mnt to mount this HFS+ partition to /mnt directory in read-write mode. Then I performed these "1)-7)" steps you see above, and also repaired a filesystem by running sudo fsck.hfsplus -f /dev/sdb2 before unmounting a partition with sudo umount /mnt and putting a hard drive back to MBP...

===

This gave me a MBP which could boot to OS X although STILL using a broken AMD GPU: so it screen's image is very distorted (could browse the Internet but quite inconvenient to read a text), Launchpad is super laggy, and you can't switch to Integrated GPU using gfxCardStatus because: without AMD drivers (which we had to remove to successfully boot to OS X) Macbook Pro thinks its' internal screen is External Display and gfxCardStatus tells it is impossible to switch because External Display is using AMD GPU. Somewhere I found a suggestion that it is possible to rebuild a gfxCardStatus from the source code - https://github.com/codykrieger/gfxCardStatus - with removed or commented out 156-166 lines in the ./gfxCardStatus/Classes/GSProcess.m to make it to ignore the external display:

// find out if an external monitor is forcing the discrete gpu on
CGDirectDisplayID displays[8];
CGDisplayCount displayCount = 0;
if (CGGetOnlineDisplayList(8, displays, &displayCount) == noErr) {
for (int i = 0; i < displayCount; i++) {
if ( ! CGDisplayIsBuiltin(displays))
[list addObject:[NSDictionary dictionaryWithObjectsAndKeys:
Str(@"External Display"), kTaskItemName,
@"", kTaskItemPID, nil]];
}
}


So I rebuilt a gfxCardStatus using the instructions from the last reply of this issue -
https://github.com/codykrieger/gfxCardStatus/issues/229
(also had to download a MacOSX10.11.sdk from here - https://github.com/phracker/MacOSX-SDKs/releases - unpack and copy it to XCode's /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk - because of the Apple's stupidity the latest XCode for El Capitan does not include SDK for El Capitan!) However, it still didn't work - gfxCardStatus only pretended that it has switched to Integrated GPU, while in reality OS X did not let it switch! Even after I edited ./gfxCardStatus/Classes/GSGPU.m file to enable the mysterious "Nuke it from orbit switching" option, it still couldn't switch...

===

Then I discovered this interesting repository - https://github.com/0xbb/gpu-switch - which is partially similar by its' source code to gfxCardStatus but also has the "Login Hooks" (install_hooks.sh) to "automate the switching process for login/logout". Sadly it didn't work for me... However, there is a very interesting gpu-switch text file right at the root of this repository, which describes the EFI variables!

https://github.com/0xbb/gpu-switch/blob/master/gpu-switch

After studying it and also reading this issue's comments - https://github.com/0xbb/gpu-switch/issues/11 - I became confident to try this solution, but found out that my MacBook Pro 2011 8,2 with OS X El Capitan 10.11.6 is in a VERY problematic situation:

1) rEFInd is not installed, and to install it - must disable SIP protection. But I cannot boot to Recovery mode (Command+Option+R) or to OS X Installation DVD/USB (hold Option), (to disable SIP), because they freeze while booting! - although I removed AMD kexts from my system, of course these recovery tools are using AMD kexts integrated to their design. Also cannot use Rootfool hack ( https://github.com/gdbinit/rootfool ) to disable SIP during runtime, because it works only at OS X version older than 10.11.4

2) Tried overheating my Macbook Pro on purpose (forcing CPU usage to 100% and putting it to a tightly closed bag) to force it to shutdown from overheating and then quickly reboot so that Integrated graphics will be enabled during the boot time - making it possible to boot to Recovery. But because of the wonderful high end thermal paste I have applied not so long ago - cannot overheat it even after waiting for a long time! At this point I thought that could either: a) remove AMD kexts from Installation media, or b) to connect MBP's hard drive to a Linux machine again and run a bunch of chmods to remove the SIP flags from the directories mentioned here ( http://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really ) which could potentially make a system unbootable, or c) to try installing rEFInd to HFS+ partition directly from a Linux machine with root rights because it will bypass SIP --- but have not explored these options, although some of them might have worked...

3) Wanted to boot a Linux LiveCD to edit the EFI variables from there, but no matter what I did: tried booting straight without GRUB option modifications, tried editing GRUB boot options (with "e" key) to add nomodeset / remove quiet splash / or both in every combination , or like suggested in this article ( https://wiki.archlinux.org/index.php/MacBookPro8,1/8,2/8,3_(2011) ) also add i915.modeset=0 radeon.modeset=0 or radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2 ; and then pressed Fn+F10 or Shift+Ctrl+Fn+F10 to boot with these options: but the Linux boot process always failed at different boot stages, no matter what popular user-friendly Linux distribution or what version of it I am trying: tried many releases of Ubuntu / Lubuntu / Fedora , even the old "AMD64 Mac" and "Alternate AMD64 Mac" images, but they always failed - either at the very beginning of boot process (black screen, or a black screen with a blinking or stuck _ character at the left upper corner) or failed at the very end of it - right before it is supposed to show a graphical desktop environment...

Later, totoe_84 wrote that he was able to boot Ubuntu in graphical mode using the following setup for GRUB:
  • To disable the AMD graphics card I added the following lines after set gfxpayload=keep
outb 0x728 1
outb 0x710 2
outb 0x740 2
outb 0x750 0
  • Next I added the following after quiet splash
    i915.lvds_channel_mode=2 i915.modeset=1 i915.lvds_use_ssc=0
(based on https://ubuntuforums.org/showthread.php?t=2157775 )

===

Then I remembered that there are not-mainstream Linux distributions for advanced users, which have a LiveCD without any graphical interface: you are dropped to a pure console and you are supposed to install the system along with only those graphical interfaces and software packages / groups of packages which you explicitly select. For example: Arch Linux (https://www.archlinux.org/) and Gentoo Linux (https://gentoo.org/) . Because their LiveCD does not have a graphical interface, they could be booted without a problem to a pure Linux console and there you could edit the EFI variables ! So here is a...

===
=== 100% WORKING SOLUTION
===
=== Force your MBP to ALWAYS use Intel integrated GPU (EFI variable fix)
===
=== to make it great again ! ;)
===


1) Create the Arch Linux LiveCD/LiveUSB :

You need a working computer for that and a spare CD/DVD/USB drive. After downloading archlinux-2017.03.01-dual.iso (see the links below) you have to check the integrity of the .ISO file to see if it is not corrupted (avoid I/O error, printf: not found, chattr: not found, etc). After checking the integrity of archlinux-2017.03.01-dual.iso and everything is OK, then you can generate an ArchLinux boot disk.

archlinux-2017.03.01-dual.iso

MD5:
1d25235e7cebe45f93452fbc05a0fb66 archlinux-2017.03.01-dual.iso

SHA1
f426866ca632a35a3eeae8e4080cff25ec8da614 archlinux-2017.03.01-dual.iso

Official website ArchLinux (only Torrent) - See MD5 and SHA1 hash numbers:

https://www.archlinux.org/releng/releases/2017.03.01/

The MD5 and SHA1 of the official ArchLinux website are the same as the mirrors Virtapi.org and Belnet.be. The archlinux-2017.03.01-dual.iso on Virtapi.org and Belnet.be are legitimate.

Virtapi.org:

http://archive.virtapi.org/iso/2017.03.01/

http://archive.virtapi.org/iso/2017.03.01/archlinux-2017.03.01-dual.iso

http://archive.virtapi.org/iso/2017.03.01/md5sums.txt

http://archive.virtapi.org/iso/2017.03.01/sha1sums.txt

Belnet:

http://ftp.belnet.be/pub/archlinux.org/iso/2017.03.01/

http://ftp.belnet.be/pub/archlinux.org/iso/2017.03.01/archlinux-2017.03.01-dual.iso

http://ftp.belnet.be/pub/archlinux.org/iso/2017.03.01/md5sums.txt

http://ftp.belnet.be/pub/archlinux.org/iso/2017.03.01/sha1sums.txt

Check for archlinux-2017.03.01-dual.iso integrity (Mac OS):

Boot in Safe Mode (press SHIFT key at boot) -> no freeze Mac OS -> El Capitan or Sierra.

HighSierra maybe freeze at boot time (Safe Mode). There were changes in the HighSierra in relation to the AMD kexts loaded during the Safe Mode. More tests are needed.

File downloaded -> /Users/Your_User/Downloads/archlinux-2017.03.01-dual.iso

Finder -> Applications -> Utilities -> Terminal:

MD5:
Code:
cd Downloads/

md5 archlinux-2017.03.01-dual.iso
MD5 (archlinux-2017.03.01-dual.iso) = 1d25235e7cebe45f93452fbc05a0fb66

SHA1:
Code:
cd Downloads/

shasum archlinux-2017.03.01-dual.iso
f426866ca632a35a3eeae8e4080cff25ec8da614  archlinux-2017.03.01-dual.iso

Or try the simplest way - No needed ArchLinux - Only MacOS:

1 - Boot Single User (press Command + S) at boot (If you have MacOS installed on your hard drive).

2 - If you have a blank HD, then use the USB stick/Pendrive with the MacOS installer (El Capitan, Sierra or HighSierra).

2.1 - Press Option key at boot, Position the mouse on the MacOS installer icon.

2.2 - Press Command + S and keep holding these two keys.

2.3 - Click the MacOS installer icon -> continue holding the Command + S keys until you finish the MacOS installer Single User boot .

Enter these commands (change gpu-power-prefs to Intel GPU and boot verbose):

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

nvram boot-args="-v"

reboot

If you've chosen the Arch Linux route, please continue reading:

Then you could either simply burn this ISO to CD/DVD (which later could be either inserted to MBP's SuperDrive or External DVD Drive connected to MBP by two USB cables) or create a bootable USB: use the great detailed instructions from this page, https://wiki.archlinux.org/index.php/USB_flash_installation_media

2) Boot to it: insert this CD/DVD/USB to Macbook Pro, hold Option key while booting, choose "EFI boot" (that is your bootable installation media), press "e" key to edit the GRUB options of the Arch Linux archiso x86_64 UEFI CD menu entry while it is selected at the main screen, add nomodeset to the end of this line and press Enter. If everything is done correctly, you will find yourself at the Linux console!

3) Edit EFI vars: looks like efivarfs filesystem is mounted by default! So you can already cd /sys/firmware/efi/efivars and ls to explore this directory and see if there is a "gpu-power-prefs-..." variable (where ... is UUID of this variable). If there is such a variable, its better to remove it with rm. In my case the efivarfs has been mounted by default with read/write permissions, but if you are getting the "operation not permitted" message while attempting to rm, it means that in your case efivarfs has been mounted as read-only and you need to remount it with read-write permissions and try again (credits to totoe_84 for this valuable addition) :
*) cd /
*) umount /sys/firmware/efi/efivars/
*) mount -t efivarfs rw /sys/firmware/efi/efivars/
*) cd /sys/firmware/efi/efivars/

If your screen is so distorted that it is difficult to see the letters, just start typing the rm gpu-power-pre and then press TAB key for autocompletion. In my case there were not such a EFI variable, only "gpu-active-..." and maybe somehow related "gfx-saved-config-restore-status-..." . Then I looked again at that gpu-switch text file (mentioned above, https://github.com/0xbb/gpu-switch/blob/master/gpu-switch),
and entered THESE COMMANDS:

*) chattr -i "/sys/firmware/efi/efivars/" <----- skip this command

Actually a gpu-switch script had "${sysfs_efi_vars}/${efi_gpu}" but I didnt have a "gpu-power-prefs-..." variable - so, partially by mistake, I didn't add that efi_gpu suffix and entered this incomplete path accidentally

*)
printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9

Did not have a EFI "gpu-power-prefs-" variable so I thought that it will be OK to create a new one with a random UUID - in this case, taken directly from a gpu-switch script

*) chattr +i "/sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9"

http://www.tecmint.com/chattr-command-examples/ - chattr (Change Attribute) is a command line Linux utility that is used to set/unset certain attributes to a file in Linux system to secure accidental deletion or modification of important files and folders, even though you are logged in as a root user.
...
Syntax of chattr ---> chattr [operator] [flags] [filename]
...
A file is set with ‘i‘ attribute (+i as you see in this command) ---> cannot be modified (immutable). Means no renaming, no symbolic link creation, no execution, no writable, only superuser can unset the attribute.
...
Operator
  1. + : Adds the attribute to the existing attribute of the files.
  2. : Removes the attribute to the existing attribute of the files.
  3. = : Keep the existing attributes that the files have.
This chattr command is supposed to lock a file to make it accessible only by "superuser" - and so that, while booting, your EFI will have no chance to screw up your gpu-power-prefs-... variable under any circumstances

*) cd /

Could not unmount efivars if you are inside this directory, so change to the root directory

*) umount /sys/firmware/efi/efivars/

Guarantees that your EFI variables are flushed to efivarfs filesystem, please unmount it safely before rebooting)

*) reboot

===> IF YOU DID EVERYTHING CORRECTLY, MOST LIKELY THAT YOUR MACBOOK PRO IS NOW USING INTEGRATED GRAPHICS WHILE BOOTING, AFTER BOOTING, AND IS WORKING GREAT AGAIN ! ;)

In the future maybe you could need to re-apply this solution if you would have to reset your PRAM / NVRAM / SMC because of some other problems, so remember this solution somewhere... Funny thing: now you can't switch to Discrete GPU even using gfxCardStatus, it is forever stuck at Integrated

I spent two working days to discover this solution, and really hope that it will work flawlessly for every MBP owner with a broken discrete GPU. Good luck!

=== NEWS ! YOU COULD ALSO FOLLOW THESE GUIDES FOR THE EXTRA IMPROVEMENTS : ===

Follow the MikeyN Guide - page 35 - #875 - to move the AMDRadeonX3000.kext from the /System/Library/Extensions directory and do not freeze Macbook Pro (at 75% progress bar or "IOConsoleUsers: gIOScreenLockState 3" message).

Rename old AMDRadeonX3000.kext and move new AMDRadeonX3000.kext after update - Page 57 - #1425

Shutdown or Restart Macbook Pro - avoid black screen freeze - Update 2 - Page 57 - #1425

Close the Lid - Sleep - Waking - Page 43 #1066 - Page 50 #1243

I just wanted to say, thank you so much.

My trusty 8,2 lasted years, but died after it became Vintage last year, so there was no way to get a replacement board. What made my situation worse was that I'd enabled FileVault and added a Firmware Password, making this task seemingly impossible..

However while trying to boot it up again randomly, the screen unexpectedly sprung to life 15 minutes into booting; turns out RecoveryOS uses the iGPU on this model.. so there was a chance! The Mac was booting to RecoveryOS because after a minute at the FV2 screen, macOS assumes you're having issues logging in, and should set nvram to boot to RecoveryOS (specifically with the recovery options for FV2).

As I could get to RecoveryOS, I could plug in a macOS installer, use Startup Disk to reboot to it, and disable the Firmware password. I re-installed Sierra (for testing; the only OS I had to hand as a DMG), ran the nvram commands you listed, and relocated the AMD Kexts, and rebooted.. and the thing works!

Sadly this isn't really useful for gaming any more, but I mostly used it for Ableton Live performances, so it's great to have it back :)

Restoring 10.12.6 and performing all the available patches worked as normal; you'd never know there'd been an issue!

Next thing is to test with High Sierra, then perhaps test Mojave..

But thanks again :)
 

H-P.

macrumors member
Aug 24, 2015
48
26
Hi there,

My macbook pro 2011 had two motherboard replacements in warranty, but died for the third time a couple of months ago. This thread is a lifesaver! :)

I tried two fixes yesterday:

- the simplest way as described in the first post: it worked, but I had to do this procedure with every boot, which is annoying.
- the nvram solution with tool from dosdude1's website (http://dosdude1.com/gpudisable/): it worked and it boots everytime without problem, but sleep/wake and brightness controls don't work (did work with the first fix).

I'm looking into the hardware mod of soldering and applying the demux firmware for a more permanent solution, but I'm using the quick fix(es) for the time being. Is there a solution to get sleep/wake and brightness controls to work? Is there a combination of the two fixes possible?

Thanks in advance!
 
Last edited:

IKSector

macrumors newbie
Jul 23, 2019
2
0
Lagos Nigeria
Please, has anyone managed to test out nsgr's fix for the "wake up from sleep panic mode" on High Sierra?
I hope to be sure that it eliminates the panic mode issue on HS before having to buy the Pacifist software that I may not use again. Thanks
 

IKSector

macrumors newbie
Jul 23, 2019
2
0
Lagos Nigeria
Use the TAB key to auto complete filenames and directories.
Start by typing a directory name or file and press the TAB key to auto complete. Name directories and files that have already been created.


- Macbook Pro 15" Early 2011 with failed AMD GPU. Only Intel GPU work.
- High Sierra 10.13.6.
- gfxcardstatus 2.4.3i (fork Steve Schow) -> preferences -> load gfxCardStatus at Startup and Dynamic Switching selected.

This is a test you can do if you are having problems with black screen after Macbook Pro sleep or macOS trying to switch to the failed AMD GPU.

The focus of the problem is AppleMuxControl.kext and AMDRadeonX3000.kext.
AppleMuxControl.kext is the kext responsible for changing GPUs while using macOS.

AMDRadeonX3000.kext needs to be loaded so that the IOAcceleratorFamily2.kext can power off the failed AMD GPU.

I'm testing the AppleMuxControl (version 3.13) of Sierra 10.12.1 with no problems so far (6 days).

High Sierra 10.13.6 with AppleMuxControl.kext (3.13) from Sierra 10.12.1.
High Sierra 10.13.6 Frankenstein.

Sierra 10.12.1 -> AppleMuxControl.kext (version 3.13)

High Sierra 10.13.6 -> AppleMuxControl.kext (version 3.20)


The correct location for AppleMuxControl.kext is:

/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleMuxControl.kext


I did not test with other Sierra AppleMuxControl.kext (10.12.2, 10.12.3, 10.12.4, 10.12.5 and 10.12.6).

There is a big difference in AppleMuxControl.kext from Sierra 10.12.0 and 10.12.1. In these two AppleMuxControl.kext there is no message: "AGC: booted to IG, policy disabled!!".

IG = Integrated Graphics = Intel GPU

After the discovery of how to make the Intel GPU boot Macbook Pro 2011 by gpu-power-prefs, then Apple changed the AppleMuxControl.kext.

Apple is not content to be a billion dollar company decides to make life difficult for the Macbook Pro 2011 users only to force a new purchase Macbook.


1 - Download Sierra 10.12.1 update from Apple:
https://support.apple.com/kb/DL1897?viewlocale=en_US&locale=en_US


2 - Double click on macosupd10.12.1.dmg .


3 - After mount .DMG file, extract /System/Library/Extensions (macOSUpd10.12.1.pkg) with Pacifist to another directory. See pictures bellow.

This example -> extract kexts -> directory: /Users/Shared/Kext-Sierra-10.12.1

Pacifist 3.6.1
https://www.charlessoft.com


4 - The Pacifist will ask if you want to keep kext's administrative privileges. Answer YES and enter your user name and password.


5 - To ensure that everything is correct, use the commands below to configure AppleMuxControl.kext with user: root and group: wheel and execution privilege.
Code:
sudo chmod -Rv 755 /Users/Shared/Kext-Sierra-10.12.1/Extensions/AppleGraphicsControl.kext


Code:
sudo chown -Rv root:wheel /Users/Shared/Kext-Sierra-10.12.1/Extensions/AppleGraphicsControl.kext


6 - Reboot Macbook Pro 2011.

7 - Boot Recovery Mode (press Command + R keys at boot).

8 - Menu Utilities -> Terminal
Code:
csrutil disable


9 - Boot Single User Mode (press Command + S keys at boot).

10 - Verify filesystem
Code:
fsck -fy


11 - Mount system partition with Read and Write permissions. Do not forget the final Slash "/".
Code:
mount -uw /


12 - Create a backup directory for AppleMuxControl.kext (3.20) - High Sierra 10.13.6.
Code:
cd /
sudo mkdir -v Kext-HighSierra


13 - Move AppleMuxControl.kext (3.20) inside /System/Library/Extensions/AppleGraphicsControl.kext/Contents/Plugins to Kext-HighSierra directory.
Code:
sudo mv -v /System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleMuxControl.kext /Kext-HighSierra


14 - Copy AppleMuxControl.kext (3.13 - Sierra 10.12.1) to /System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/
Code:
sudo cp -vR /Users/Shared/Kext-Sierra-10.12.1/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleMuxControl.kext /System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/


15 - Modify timestamp and create new kextcache. Do not forget the final Slash "/" kextcache command.
Code:
sudo touch /System/Library/Extensions

sudo kextcache -v 1 -i /


16 - Boot normal with High Sierra 10.13.6.

17 - Verify AppleMuxControl.kext (version 3.13.74) with kextstat command.
Code:
kextstat | grep -i Mux
com.apple.driver.AppleMuxControl (3.13.74)


18 - System Preferences -> Display -> see if brightness slider works

19 - Everything works? YES

20 - Boot Recovery Mode

21 - Menu Utilities -> Terminal
Enable SIP again.
Code:
csrutil enable
reboot

or

Enable SIP partially without the verification of kext signed by Apple.
Code:
csrutil enable --without kext
reboot


22 - Boot normal and verify SIP status.
Finder -> Applications -> Utilities -> Terminal

Code:
csrutil status
System Integrity Protection status: enabled

or

Code:
csrutil status
System Integrity Protection status: enabled (Custom Configuration).

Configuration:
Apple Internal: disabled
Kext Signing: disabled
Filesystem Protections: enabled
Debugging Restrictions: enabled
DTrace Restrictions: enabled
NVRAM Protections: enabled
BaseSystem Verification: enabled


Update 1:

With a new Update, the procedure must be repeated.

Update will put a new AppleMuxControl.kext.

Update will put a new AMDRadeonX3000.kext. MikeyN Guide deacrese AMD GPU - System temperature - Page 35 - #875


gfxCardStatus 2.4.3i - fork Steve Schow
https://github.com/steveschow/gfxCardStatus

https://github.com/steveschow/gfxCardStatus/releases

https://github.com/steveschow/gfxCardStatus/releases/tag/v2.4.3i


Hello Nsgr, thanks a million lot for discovering and sharing this fix. I need to ask about your experience so far since you've been running your system with this solution.
Have you experienced the panic mode again after your system goes into sleep mode and you try to wake it up?
Please can you share your experience so far?
Thanks again...
 

mcbeej

macrumors member
Jun 7, 2007
77
3
Ok, a weird one.

Summary - I have a 2011 failed GPU with Sierra, which I used the grub solution for, and works perfectly.

Investigating upgrading to HS, I created a test partition, installed a clean HS (10.13.6) on it, and used the guide where you remove the X3000 driver and so on. This all worked fine, boots fine, brightness/sleep works etc. Great!

So, now I'm trying to upgrade my main Sierra system to the same HS for real.

I followed the exact same HS procedure, but this system won't boot normally (it will boot in safe mode).
It seems to crash at the point where it's disabling the GPU. I get:
*** Panic Report ***
: GPU is not found. PCI config access fails!!!
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleGraphicsControl/AppleGraphicsControl-3.20.13/src/AppleMuxControl/kext/GPUPanic.cpp

in the problem report.

I can still boot fine into the clean HS system, so the problem is with the upgraded system. The clean HS does pass that point where the dGPU is disabled.

So, the dGPU is disabled in Nvram, driver is correctly moved into Extensions-off, everything is the same between both systems, SIP off in both cases.

Any tips as to what to try, or what might be going on here?

Edit: OK fixed - I still had the old AMDWakeHandler kext in /Library/Extensions, which is why I missed it - and that was what was causing the problem.
 
Last edited:

John.giannakou

macrumors newbie
Jul 26, 2019
1
0
I sent my 'MBP 17" late 2011' for repairs and now I am trying to find a way to revert the fix (which has been working good so far) so it can boot with AMD graphics again! Can anyone help? Thanks a lot
 

DoctorJO

macrumors newbie
Jul 26, 2019
1
0
i have some issue, my can boot only till "?" sign and when i start install MacOS laptop is restarted. All sreen is red or rose lines. When i boot up from USB ArchLinux and wrote nomodeset command he attempt open terminal and then restart again. Any advice how to disable AMD GPU ?

Thanks ;)
 

envy23

macrumors newbie
Jul 27, 2019
1
0
Hi,
Holy smoke, I can start and see the system boot ...
Now i follow you step

Or try the simplest - No needed ArchLinux - Only MacOS:


Now, as soon as i type the 1st line, the screen when blank and gone ...
I can start fully to gui ( high Sierra with Retina Mid 2012 15"MBP) but this seem buggy.
I would love to recover back to somewhere stable and leave it there.

TIA, Tom
 

Reg from France

macrumors newbie
Aug 5, 2008
4
0
Hi,
just post that to say a big thank you to all of you, particularly to AppleMacFinder of course.
You saved my life... hum... not my life yet by my MBP late 2011 with the EFI fix.
its not long that I have the pb corrected but so far, everythg is workg great. Again, thx to all of you.
KR
 

hageir

macrumors newbie
Aug 3, 2019
2
0
Hello,
I have a bunch of these MBPs and have done this to all of them.
One of them runs Lion and is my audio recording computer (no graphics needed anyways)
I’ve run into this twice now:
I have a FireWire audio interface and once daisy-chained another one to it and the 15” 2011 MBP panicked and all a I got was a black screen... I remember I left it without the battery for a night and did a couple of SMC and PRAM resets and it finally got back to normal after some procedure I don’t remember!
Now it’s happened again: black screen of Doom... No dice, just a weak/dim sleep light.

Does anybody have tips for that?

(the last time, it also got stuck in a “chime loop” never seen that, it was creepy as hell LOL)
 

3liminate

macrumors newbie
Apr 21, 2019
2
0
Wanted to check if people are using an External monitor/display?
I saw a comment that says to use a USB to HDMi adapter? Does everything work as normal? Thanks
 

Draeconis

macrumors 6502a
May 6, 2008
987
281
QW
Wanted to check if people are using an External monitor/display?
I saw a comment that says to use a USB to HDMi adapter? Does everything work as normal? Thanks

If you've got a 2011 model you've disabled the AMD GPU on, using the Thunderbolt/MiniDisplay Port as an output will no longer work.

Since this model also only has USB2, a USB to HDMI adapter also will not work, I don't think.
 

hageir

macrumors newbie
Aug 3, 2019
2
0
the 15” 2011 MBP panicked and all I got was a black screen... I remember I left it without the battery for a night and did a couple of SMC and PRAM resets and it finally got back to normal after some procedure I don’t remember!
Now it’s happened again: black screen of Doom... No dice, just a weak/dim sleep light.

Anybody run into this? I've tried everything (the last time it worked again, eventually)

*edit*
I disconnected the fans, overheated the machine,
(had previously inserted a CD into the drive, as suggested in another thread)
after it heated up quite a lot, shut it off, disconnected the battery+power, took out the RAM, let it sit and cool down.
Connected all above, held in the Eject button and turned it on, BOOM boot chime and question mark (there was no hard disk present)
Now I need to install a hard disk and do the NVRAM dGPU variable hack again and all is back to normal (running on Intel software GPU)
 
Last edited:

mclindy

macrumors newbie
Aug 10, 2019
2
0
Portland, OR USA
I have had to "fix" my wife's 2011 15" MBP several times due to updates. Yes, I've since resolved that issue (I hope), but I'm not confident that it won't happen again!

I have seen and used versions of the script(s) I found here. However, I wanted to consolidate it/them *and* make them EASY for a typical user. I also wanted to make it glitchy screen booting in single user mode friendly.

So here's what I came up with.

Somebody better than me (that's most of you!) should vet it. If you don't read code you shouldn't use this until others either confirm/approve or tear it apart/critique. For this reason I'm not going to get into how to set proper permissions on the file. Hopefully that's some kind of firewall to protect users until this is vetted.

Booting into single user mode then changing to read/write is kind of a big hurdle for a typical user. However, if they can get that point they only have to type ./amdFix.sh (I named mine amdFix.sh) then hit Y,V,Y. This applies the necessary changes then reboots the system.

Note that it does not create the directory for inactive extensions, nor does it move the AMD kext. Hmm, now that I'm typing it I should probably add some script that checks to see if the new directory exists and if it contains a copy of the AMD kext. If that directory doesn't exist and/or doesn't contain the kext, the script should offer to create the directory and copy the file over before prompting for step 1. This would be risky, though, because I don't know what others might have named that directory! On my system, I named it Extensions-off .

BTW I realize that sudo is almost certainly redundant here, since in S.U.M. I'm logged in as root. I think I said earlier that I took this/these from scripts that have been posted earlier. I/we could modify this script and remove sudo but what's the harm in a little redundancy?

At any rate, props and thanks to all of the work everyone has done. I hope this helps the less tech-savvy people resolve this issue.

For the record, this scrip is working on:
MacbookPro 8,2
15 inch, late 2011
Intel Core i7 2.2 GHZ 4 core
8 GB RAM
High Sierra 10.13.6
Latest OS update: Security Update 2019-003​

Code:
#!/bin/bash
# Compiled from https://forums.macrumors.com/threads/force-2011-macbook-pro-8-2-with-failed-amd-gpu-to-always-use-intel-integrated-gpu-efi-variable-fix.2037591/
#
#
# Clear terminal screen so a user with a bad display has some evidence that script is running
printf '\ec'
#
#
# Describe step 1 and prompt user to execute
printf 'Step 1\n * Delete Radeon X3000 kext from /System/Library/Extensions\n * Clear drivers cache\n * Recreate cache directory\n * Update timestamps\n * Change GPU power preferences to Intel graphics\n\n'
read -n1 -p 'Do step 1? [y/n] ' step1
case $step1 in
    y|Y)
        sudo rm -rf /System/Library/Extensions/AMDRadeonX3000.kext
        printf '\n\n + Deleted Radeon X3000 kext'
        sudo rm -rf /System/Library/Caches/com.apple.kext.caches
        printf '\n + Driver cache cleared'
        sudo mkdir /System/Library/Caches/com.apple.kext.caches
        printf '\n + Cache directory was created'
        sudo touch /System/Library/Extensions
        printf '\n + Timestamps updated'
        sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
        printf '\n + Changed GPU power preferences to Intel graphics\n\n';;
    n|N)
        printf '\n\n - Skipped Step 1\n\n';;
    *)
        printf '\n\nInvalid input!\n\n***Aborted***\n\n'
        exit;;
esac
#
#
# Set boot arguments
read -n1 -p 'Set boot arguments to verbose [v] or none [n]? [v/n] ' setBootV
case $setBootV in
    v|V)
        sudo nvram boot-args="-v"
        printf '\n\n + Boot arguments set to verbose with nvram boot-args="-v"\n\n';;
    n|N)
        sudo nvram boot-args=""
        printf '\n\n + Boot arguments set to none with nvram boot-args=""\n\n';;
    *)
        printf '\n\n - Did NOT change boot arguments\n\n';;
esac
#
#
# Prompt user to reboot now or exit
read -n1 -p 'Restart now? Y/y = yes, any other key = exit ' rebootExit
case $rebootExit in
    y|Y)
        printf '\n\n + Restarting...\n\n'
        sudo shutdown -r now
        ;;
    *)
        printf '\n\n - Script ended without rebooting\n\n';;
esac
When you run it in the terminal it looks like this:

Step 1
* Delete Radeon X3000 kext from /System/Library/Extensions
* Clear drivers cache
* Recreate cache directory
* Update timestamps
* Change GPU power preferences to Intel graphics

Do step 1? [y/n] y

+ Deleted Radeon X3000 kext
+ Driver cache cleared
+ Cache directory was created
+ Timestamps updated
+ Changed GPU power preferences to Intel graphics

Set boot arguments to verbose [v] or none [n]? [v/n] v

+ Boot arguments set to verbose with nvram boot-args="-v"

Restart now? Y/y = yes, any other key = exit y

+ Restarting...




 
Last edited:

mclindy

macrumors newbie
Aug 10, 2019
2
0
Portland, OR USA
This is just a script that automates part of what AppleMacFinder and MikeyN provided. I stored a copy in my root directory so that I can quickly and confidently apply their fixes. I haven't added anything to it so it won't withstand resets any better than their suggestions. I bring nothing new to the table. I'm just automating a process that I've had to repeat and I want to make sure that I don't make a typo in the future, etc. It might be helpful to some and worthless to others.
 

macattack600

macrumors member
Jan 7, 2012
31
0
This is just a script that automates part of what AppleMacFinder and MikeyN provided. I stored a copy in my root directory so that I can quickly and confidently apply their fixes. I haven't added anything to it so it won't withstand resets any better than their suggestions. I bring nothing new to the table. I'm just automating a process that I've had to repeat and I want to make sure that I don't make a typo in the future, etc. It might be helpful to some and worthless to others.

No I'm saying the whole process the whole EFI variable fix , is the a way to disable a pram reset in terminal
 
Last edited:

mcbeej

macrumors member
Jun 7, 2007
77
3
I followed the exact same HS procedure, but this system won't boot normally (it will boot in safe mode).
It seems to crash at the point where it's disabling the GPU. I get:
*** Panic Report ***
: GPU is not found. PCI config access fails!!!
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleGraphicsControl/AppleGraphicsControl-3.20.13/src/AppleMuxControl/kext/GPUPanic.cpp

Edit: OK fixed - I still had the old AMDWakeHandler kext in /Library/Extensions, which is why I missed it - and that was what was causing the problem.

I'm having occasional kernel panics from sleep wake on this HS system (maybe once or twice a week, it doesn't always happen when waking from sleep). it's definitely dGPU related, from the crashreporter message.

Are there any procedures for investigate or fix this?

Edit: I'll try the "pmset -a force gpuswitch 0" in LoginHook to see whether that helps...
Edit2: It didn't, the very first sleep it crashed on wake.

*** Panic Report ***
panic(cpu 0): "GPU Panic: mux-regs 2 0 1 0 0 0 severity 3 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:0 power-state 6 3D idle HDA idle system-state 1 power-level 20:20 connect-change 0 : UH eHlPH
: GPU is not found. PCI config access fails!!!
\n"@/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleGraphicsControl/AppleGraphicsControl-3.20.13/src/AppleMuxControl/kext/GPUPanic.cpp:170
 
Last edited:

McSimon

macrumors newbie
Aug 12, 2019
2
0
UK
Hi all, newbie here and scared of any kind of programming. I feel quite lucky that it’s now 2019 and this is only just happening to my MBP. I want to try and avoid putting all this code in. I’ve managed to reboot using a Time Machine backup - can I just carry on and try not to use anything graphics heavy or is the problem progressive and eventually Time Machine backup will also fail to boot?

If it helps I’ve got a late 2011 15inch MBP running on High Sierra and all I want to do is use Logic and go on YouTube.

Thanks
 

diggel

macrumors newbie
Aug 12, 2019
1
0
trying this on a 2011 MBP. installed High Sierra through an iMac first on an external 2,5" HDD; then updated all (on iMac) and placed this updated HDD in MBP2011. did the vram and pram reset; then opt cmd r s. I turn into localhost:/ root

this won't let me "csrutil disable" and all the other necessary steps. What went wrong (and how to get this MBP fixed)?

thanks!
 

yukari

macrumors 65816
Jun 29, 2010
1,021
688
QW


If you've got a 2011 model you've disabled the AMD GPU on, using the Thunderbolt/MiniDisplay Port as an output will no longer work.

Since this model also only has USB2, a USB to HDMI adapter also will not work, I don't think.

I have 2011 MBP that has failed dGPU which I have disabled using MikeN’s method. I have it hooked up to eGPU using TB1/2 -> TB3 adapter to Razer Core X Chroma. It works great with AOC’s 40” curved 4K monitor.
 
  • Like
Reactions: pckrullenbol

Clockwise7

macrumors newbie
Apr 13, 2018
6
4
Barcelona
Hi guys,

I messed up, without thinking I clicked to update my late 2011 MBP... so my previous graphics card fix was deleted.

Tried to do the fix again, but unsuccessful. Tried everything (but probably wrong)... I did do an internet recovery as well.

Now I tried to follow the steps from the youtube video “2011 Macbook Pro Graphics Card FIX 100% WORKING!!!” But after step 2, csrutil disable, I get the error “this tool needs to be executed from recovery OS”

Further steps don’t work... anyone can give me some help....

Thanks,
Tim
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.