------------------------------------------------------------------------------------------
Update 18th of May 2019:
a) My GPU finally and totally died my NVRAM has been reseted!
b) I couldn't boot anymore in any way.
c) I finally removed the diode and ...
d) ... this guy here helped me to boot my mac again: https://realmacmods.com.
e) Result: My Mac is running again, with the GPU uncoupled, backlight and everything working except brightness keys doesn't work anymore and I replaced them with the free Brightness Slider tool: https://itunes.apple.com/de/app/brightness-slider/id456624497.
------------------------------------------------------------------------------------------
Here are my 5 cents back: I have a solution in place that works perfectly without any hardware modification so far!
Here's my setup:
- MacBook Pro (17-inch, Late 2011) [MD386LL/A] [A1297]
- I changed the HDD to a SSD Samsung 840 EVO 1TB
- I changed the battery to a LMP (95 Wh)
- I changed the memory to 16 GB Corsair
- macOS High Sierra 10.13.6 (17G4015)
Furthermore, the battery runs of course longer and I would like to mention here, that the backlight of the keyboard works as designed as well the brightness range of the screen that can be adjusted with F1/F2 as designed to.
For me it is unclear yet, what I would lose when I would remove the R8911 diode from the motherboard that seems to power the dedicated GPU. Hence, the GPU is still powered, but I can accept this, since this solution doesn't limit functionalities (yet)!
One personal note: I love my MacBook Pro, even it's old. I love it, because it is the last MacBook that has a 17" matte screen; I still have no idea who in the world really wants a *sorry* ****** glossy screen - glossy screens are the biggest nonsense ever invented - I can see NADA when I'm in a train or when daylight is reflecting on the screen & furthermore, for me it still is the only system I can do all with: to develop, compose, have a secure & save system, a UNIX shell & still enough performance to create everything I want. So, actually it is a great compliment to the Steve Jobs era of Apple & its employees, despite the fatal engineering error with this dedicated GPU. But as a long-time Apple-user (in different areas and products) I condemn Apple's behaviour towards users that have this GPU problem. It stays a fatal engineering error without any real solution for the users. This is not the way to make a business, never! It has nothing to do with "THINK different." but unfortunately more with "You’ll see why 2018 is like “1984”."
Before I list the modifications, I need to point out a circumstance that I had, since I have updated to High Sierra and converted my SDD to APFS:
- Since the conversion and a certain system security update from Apple (Can't remember the version), my MacBook always booted into prohibited sign. I'm using the Chameleon SSD Optimizer to turn on TRIM and I had SIP enabled. I assumed it had something to do with the unsupported Samsung SSD in combination with TRIM, possibly SIP & APFS too; an unholy combination! I recommend everyone to stay on HFS+ instead APFS. APFS is not a bad filesystem, but you might be happier later whenever you need to mount your SSD/HDD from an external system. There are foreign filesystem protocols out there to mount APFS, but it is annoying.
- Anyway, to be able to boot my MacBook, I had to first boot into recovery mode, chose there the Startup-Volume and reboot, then AND ONLY THEN the system started up from my APFS SSD volume. (Note: Surprisingly, this problem has been gone after this solution!)
- So when my dedicated GPU finally died - the second time after the official nonsense Apple repair program that doesn't do anything good - I had the problem, that I even couldn't boot into recovery mode nor in the single user mode, because somehow the defect GPU hanged up the system in both cases ! So I was in big trouble.
The following steps show my way of bringing the system back, with the above conditions and it is a combination of many solutions out there already provided by some power users (see references below). I haven't approached the solution in these exact steps, but this is the conclusion of my solution:
Step 1: Boot from Arch Linux
Reference: https://forums.macrumors.com/thread...ntel-integrated-gpu-efi-variable-fix.2037591/ ("100% WORKING SOLUTION" Section)
- Download latest Arch Linux ISO Distribution and burn the ISO image 1 to 1 to a CD or create a bootable USB stick with that image (depending on what your MacBook is able to boot from the Mac Startup Manager).
- Enter CDROM or attach USB stick with Arch Linux and start your Mac by pressing the left ALT-Button till you end up in the Mac Startup Manager.
- Boot from "EFI boot" and be ready to use the arrow keys as soon the selection menu appears.
- When you see the menu use the arrow down key to stop the timer from making an auto selection, then go back to the first entry "Arch Linux archiso x86_64 UEFI CD" and press 'e' - when pressing 'e' you see that the arguments for that selection appear.
- In the arguments go to the end with the right arrow key, add a space and add the argument nomodeset
- Press enter, wait a while till Arch Linux has been booted
- Note: the EFI Partition is automatically mounted!
- cd /sys/firmware/efi/efivars/
- If there are any files starting with gpu-, delete them all with rm gpu-*; if this is not possible you might need to execute chattr -i gpu-* first.
- printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
- Make the new file/gpu-prefs immutable: chattr +i gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
- cd /
- umount /sys/firmware/efi/efivars/
- reboot (...and be ready to boot into Single User Mode by holding down CMD-S)
Step 2: Make some NVRAM modifications & make a Script to repeat modifications
Reference: https://apple.stackexchange.com/questions/267581/gpu-problem-boot-hangs-on-grey-screen ("Background and explanations" Section) & https://forums.macrumors.com/thread...fi-variable-fix.2037591/page-34#post-24944928
- In my case with the SSD boot problem and with the defect GPU I have been able to boot now successfully into Single User Mode and the GPU is already deactivated to a certain level I would say. "Step 1" can be repeated in any case if you are getting new problems and now you have a boot medium that can be reused - always a good thing!
- cd /
- mkdir /tools
- vi /tools/roxy (assuming you know how to use the vi-editor: "i" goes into insert mode, then press ESC and ":wq" writes out the file and ends the editor)
- Script:
nvram boot-args="kext-dev-mode=1 agc=0"
nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
wait 1
reboot - chmod 755 /tools/roxy
- Note: If you cannot use "vi" you should even be able to boot your mac normally and to create the file & make the changes in the macOS GUI, but you have to make sure that the folder "tools" and the script "roxy" are assigned to the user root & the group wheel, then you would have to reboot into Single User Mode again. To change user & group you must use the terminal anyway:
sudo chown root /tools
sudo chgrp wheel /tools
sudo chown root /tools/roxy
sudo chgrp wheel /tools/roxy - Now back in Single User Mode or if you have created your file here, reboot the system by executing the script created:
bash /tools/roxy . - If you made it that far and your system has booted, I recommend you take a break boot the system and make a Time Machine Backup. Just do it & don't think! BTW, the nvram parameter agc=0 seems to be doing really magic (lowering GPU temperatures a lot!)
Step 3: Disable SIP
- Reboot / boot into Recovery Mode by holding down CMD-R.
- There's not much to do here but opening a terminal from the menu and enter the following command to disable System Integrity Protection:
csrutil disable - Reboot normally.
Step 4: Taking care of KEXT's & create a Login-Hook (improved power management)
- Note: I do load all AMD kernel extensions (kexts) except one I load with a login hook.
- Use a terminal.
- cd /
- sudo mkdir /AMDExtensions
- Copy /System/Library/Extensions/AMDRadeonX3000.kext to /AMDExtensions and delete /System/Library/Extensions/AMDRadeonX3000.kext in Finder.
- Make sure /AMDExtensions and /AMDExtensions/AMDRadeonX3000.kext belongs to the user root and the group wheel (See step 2 how to do; if this doesn't work for any reasons, activate the root user: https://support.apple.com/HT204012 and login with the root user in a terminal)
- It seems it is essential - as far I remember - recursively change the user and group, since kernel extensions are packages:
sudo chown root /AMDExtensions
sudo chgrp wheel /AMDExtensions
sudo chown -R root /AMDExtensions/AMDRadeonX3000.kext
sudo chgrp -R wheel /AMDExtensions/AMDRadeonX3000.kext - Then create the login hook that lazy loads the moved AMD kernel extension:
sudo mkdir -p /Library/LoginHook
sudo vi /Library/LoginHook/LoadX3000.sh - In "vi" editor enter the following:
#!/bin/bash
kextload /AMDExtensions/AMDRadeonX3000.kext
exit 0 - Save the file and exit "vi" (Press ESC, ":wq")
- Make it executable and activate it:
sudo chmod a+x /Library/LoginHook/LoadX3000.sh
sudo defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadX3000.sh - The separated AMD kernel extension is now loaded at login; I'm not sure if the hook is executed when the login window appears or when the user logs in. It would be preferable that it is executed when the login screen appears, so the power management is in place before the user logs in. If anyone knows more about this or has a better solution please comment!
- Now reboot your system normally.
- When you have logged in, check if the necessary kernel extensions all have been loaded, 5 pieces:
kextstat | grep AMD - The output should look like that:
... com.apple.kext.AMDLegacySupport ...
... com.apple.kext.AMD6000Controller ...
... com.apple.kext.AMDSupport ...
... com.apple.kext.AMDLegacyFramebuffer ...
... com.apple.kext.AMDRadeonX3000 ...
- If you have activated the root user, I recommend to deactivate it again.
- Watch your temperature with the free iStat Pro Widget (e.g. here: https://www.chip.de/downloads/iStat-pro_44806820.html)
- When I'm writing this, my GPU temperature is 44 degrees celsius and the GPU diode is 10 degrees celsius [must be defect....])
- It is a good time to make a Time Machine Backup again.
- Now, whenever you get apple system updates or the NVRAM is reseted - depending on your system, configuration and/or problem - start with Step 1 or in most cases execute the script in Single User Mode that has been created in Step 2 : bash /tools/roxy .
Note: If you find any error in this solution let me know or comment for improvements. Thanks to the power users that I have been referring to. Hope this works for you without heating up your soldering iron ;-)
Last edited by a moderator: