Administrators Leon Posted July 25, 2018 Administrators Share Posted July 25, 2018 Hi there, (this post is a bit of a my research notes - so it might be a long post) It happens now and then that i come across a Macbook with a dead GPU - so far the best solution is to patch the motherboard - but that itself can be pricey - let alone time costly - also - who wants to repair a 2011 macbook - that said - so lighting struck me - since the machine have 2 graphics cards (an intel and a AMD) - why not just disable the AMD Card ? In my first test i just removed the kexts.. that worked.. so.. so.. screen artifacts and genereally the machine was running extremely slow - something more was needed - the solution is to disable the GPU in NVRAM. Solution found here: https://apple.stackexchange.com/questions/166876/macbook-pro-how-to-disable-discrete-gpu-permanently-from-efi/196709?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa The key is to: sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00 So, to recap - what i did: 1. Removed the AMD kexts.. 2. Patched NVram Result: Machine boots into macos and feels quite normal.. HDMI dosent work.. but i can live with that - also, i fear that the NVram might get reset or kexts will zombie back after an update.. so i created 2x scripts. 1. /scripts/gpupatch.sh 2. /Library/LaunchAgents/com.user.loginscript.plist The combination of both will run gpupatch.sh on each boot, check if AMD drivers exists and remove them - and finally.. patch NVram.. my hope is that if something breaks i can just boot.. and reboot and it should work. Lets have a look at the files - first gpupatch.sh ------------ dt=$(date '+%d/%m/%Y %H:%M:%S'); sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01 echo "$dt - Patched GPU" >> /scripts/gpupatch.log if [ -d "/System/Library/Extensions/AMD10000Controller.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMD10000Controller.kext echo "$dt - Removed kext AMD10000Controller.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMD7000Controller.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMD7000Controller.kext echo "$dt - Removed kext AMD7000Controller.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMD8000Controller.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMD8000Controller.kext echo "$dt - Removed kext AMD8000Controller.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMD9000Controller.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMD9000Controller.kext echo "$dt - Removed kext AMD9000Controller.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMD9500Controller.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMD9500Controller.kext echo "$dt - Removed kext AMD9500Controller.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDFramebuffer.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMDFramebuffer.kext echo "$dt - Removed kext AMDFramebuffer.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDMTLBronzeDriver.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDMTLBronzeDriver.bundle echo "$dt - Removed kext AMDMTLBronzeDriver.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonVADriver.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonVADriver.bundle echo "$dt - Removed kext AMDRadeonVADriver.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonVADriver2.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonVADriver2.bundle echo "$dt - Removed kext AMDRadeonVADriver2.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX4000.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX4000.kext echo "$dt - Removed kext AMDRadeonX4000.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX4000GLDriver.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle echo "$dt - Removed kext AMDRadeonX4000GLDriver.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX4000HWServices.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX4000HWServices.kext echo "$dt - Removed kext AMDRadeonX4000HWServices.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX5000.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX5000.kext echo "$dt - Removed kext AMDRadeonX5000.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX5000GLDriver.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX5000GLDriver.bundle echo "$dt - Removed kext AMDRadeonX5000GLDriver.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX5000HWServices.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX5000HWServices.kext echo "$dt - Removed kext AMDRadeonX5000HWServices.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX5000MTLDriver.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX5000MTLDriver.bundle echo "$dt - Removed kext AMDRadeonX5000MTLDriver.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX5000Shared.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX5000Shared.bundle echo "$dt - Removed kext AMDRadeonX5000Shared.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDRadeonX6000HWServices.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMDRadeonX6000HWServices.kext echo "$dt - Removed kext AMDRadeonX6000HWServices.kext" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDShared.bundle" ]; then sudo rm -Rf /System/Library/Extensions/AMDShared.bundle echo "$dt - Removed kext AMDShared.bundle" >> /scripts/gpupatch.log fi if [ -d "/System/Library/Extensions/AMDSupport.kext" ]; then sudo rm -Rf /System/Library/Extensions/AMDSupport.kext echo "$dt - Removed kext AMDSupport.kext" >> /scripts/gpupatch.log .. and now com.user.loginscript.plist<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.loginscript</string> <key>ProgramArguments</key> <array><string>/scripts/patchgpu.sh</string></array> <key>RunAtLoad</key> <true/> </dict> </plist> Yes - i could have done the script different and much simplar - but i wanted you to be able to see what files i removed. Comments welcome. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now