背景和说明
在采取任何措施之前,请至少从头至尾阅读所有这篇文章。
2011年以来的所有 MacBook Pro都存在严重的设计缺陷。散热管理和产生的热量以及分立的AMD图形芯片的坚固性并不能很好地匹配。苹果知道这一点,并像典型的 肥皂史密斯一样,只在愤怒后才对此做出反应。此丑闻取名为RadeonGate。最终,只有在集体诉讼提起诉讼的情况下,苹果才最终被迫提供所谓的“维修扩展计划”。
Apple Repair Extension程序不再可用。解决此问题的唯一真正方法是仅更换AMD芯片。不是逻辑板。不是“重新堆积”,不是“回流”,不是“烘烤”。苹果用故障芯片替换了故障芯片。一次又一次。对于这种老式笔记本电脑,仅更换图形芯片仍然是昂贵的硬件过程。
唯一已知的方法-即:仅使用软件-即可使2011 MacBook Pro(8,2)仅带有故障的AMD图形芯片,从而几乎可以可靠地再次打开电源并启动进入macOS,并可以在加速的 GUI中使用是本指南还是它的变体。先前的大多数技巧只是删除了所有AMD-kexts,这导致了根本没有GUI加速的可怕用户体验。
有必要知道您的确切操作系统版本。对于优胜美地,以下指南将更简单,但假定使用El Capitan或更高版本。El Capitan,Sierra和High Sierra需要禁用SIP(系统完整性保护)。在以前的系统(10.6-10.10)中,这些步骤是不必要的。
重要提示:本指南进一步假设所有kext仍位于其默认位置/ System / Library / Extensions。除了其中一个以外的所有AMD-kext,对于“适当的”操作是有益的。以前在此方向上的破解可能已指示您采取行动,或更糟糕的是:删除所有AMD * / ATI *内核扩展。如果是这样的话:要么将kexts移回其默认位置,要么重新安装您选择的系统。将大多数AMD扩展安装到位,然后为X3000-kext加载延迟,将启用GPU的电源管理,否则将无耗电地消耗电力(并且可能会加速芯片的最终热死)。重申一下:只有文件AMDRadeonX3000.kext
确实不存在 在启动时可以成功启动,但所有其他(必需)AMD驱动程序应位于其默认位置,并且在X3000-kext之后/延迟加载后,才能恢复到几乎明智的电源和温度管理领域。
绕过独立显卡
要恢复某些显示加速,必须迫使计算机不启动离散图形(dGPU),而是直接进入集成图形(iGPU)并保持此模式。
在具有两个可切换图形卡的Mac上,默认情况下引导至dGPU模式。以下过程将设置一个NVRAM变量,该变量禁用dGPU并强制系统即使在引导时也仅使用集成的Intel图形。
NVRAM变量未记录,但似乎普遍适用于具有两个可切换图形卡的所有Mac。这意味着它应该可以在iMac和MacBook Pro上使用。他们是否拥有AMD或NVIDIA芯片。本指南仅涉及AMD可能需要移动的驱动程序细节。但是无论如何,NVRAM变量都会绕过离散图形芯片。
这将使您的机器恢复使用-但您将失去一些功能:例如,可以从DisplayPort驱动外部显示器的功能,一点点3D性能。Thunderbolt数据连接应该正常工作。
万一本指南失败或不再需要该指南:此过程是纯软件配置,因此可通过简单的NVRAM重置随时完全恢复。
初始过程:
第1部分:禁用SIP,禁用dGPU,移动一个内核扩展
要从干净的状态开始:重置SMC和NVRAM:
关闭,拔下除电源以外的所有电源,现在按住
leftShift+ Ctrl+ Opt+ Power
并同时释放所有内容;
现在再次开机并按住
Cmd+ Opt+ p+ r
,直到两次听到启动提示音。
通过按住进入单用户恢复
Cmd+ r+s
禁用SIP:输入:
csrutil disable
通过设置以下变量在启动时禁用dGPU:
nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
启用详细启动模式:
nvram boot-args="-v"
通过按住重启进入单用户模式
Cmd+ s
开机时
挂载根分区可写
/sbin/mount -uw /
制作一个kext-backup目录
mkdir -p /System/Library/Extensions-off
仅将一个令人讨厌的kext移开:
mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/
通知系统更新其kextcache:
touch /System/Library/Extensions/
正常重启:
现在,您应该拥有一个iGPU加速显示器,但是系统不知道如何对发生故障的AMD芯片进行电源管理。(在这种状态下,GPU总是闲置相对较高的功率,拔出电源会消耗大量电池,并且会导致GPU温度从60°C升高到[平均60-85°C],尽管系统没有使用它。 )
第2部分:改善散热和电源管理
为了改善禁用的GPU的电源管理,您必须在启动后手动加载一个关键的kext ,方法是:
sudo kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
如果您有温度传感器应用程序,则可能希望在发出上述命令之前先将其打开,然后观察温度下降。
使用下面的LoginHook自动化该操作,该操作将在下次重新引导后执行:
sudo mkdir -p /Library/LoginHook
sudo nano /Library/LoginHook/LoadX3000.sh
具有以下内容:
#!/bin/bash
kextload /System/Library/Extensions-off/AMDRadeonX3000.kext
pmset -a force gpuswitch 0 # undocumented/experimental
exit 0
然后使其* 1可执行并处于活动状态:
sudo chmod a+x /Library/LoginHook/LoadX3000.sh
sudo defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadX3000.sh
* 1:未记录使用此pmset命令似乎可以改善睡眠/唤醒/关机行为。如果不是,请尝试将其忽略。
请参阅下面的免责声明。以下只是推测:睡眠/唤醒/关机可能仍然很麻烦。这里的理论是“某些东西会慢慢破坏”存储在SMC中的内容。因此,重置SMC并重新应用变量hack似乎可以缓解这种情况。(永久的解决方案,欢迎您!)作为短时间的解决方法,您可能想要避免“闭门睡眠”,这似乎比其他方法(Apple-Menu,Keyboard-Shorcut)带来更多麻烦。关闭时明显挂起的延迟通常只是很长的延迟,最终会完全成功地关闭。
不科学的抽样表明,优胜美地对此最不利,而El Capitan和Sierra在这方面表现更好。
手动加载或以其他方式延迟加载此关键内核扩展,可使系统更好地处理电源管理。电池使用量将减少,并且未使用的GPU发出的温度将下降到明显低于50°C(平均15-50°C之间)的范围。
为了进行适当的电源管理,必须在引导时最小加载一组kext(针对10.12.6的版本,请通过进行检查kextstat | grep AMD
):
com.apple.kext.AMDLegacySupport (1.5.1)
com.apple.kext.AMD6000Controller (1.5.1)
com.apple.kext.AMDSupport (1.5.1)
com.apple.kext.AMDLegacyFramebuffer (1.5.1)
如果上述加载方法成功,则应将其添加到列表中:
com.apple.AMDRadeonX3000 (1.5.1)
最后一步是再次重新启动进入SingleUserRecovery
,在激活命令行后,
使用Cmd+ r+ s
进行此操作,输入:
nvram boot-args="-v agc=0"
并正常重启。
这将使dGPU进一步冷却。
必须从SingleUserRecovery发出此命令,因为启用了SIP的系统将阻止您从常规引导卷引导(无论是在常规完全引导模式下还是在常规SingleUser中)设置此变量的尝试。重要的是要注意,因此此步骤不能轻松地集成到force-iGPU.sh脚本中(您将在一分钟内创建),并且必须在NVRAM重置后自行重复执行。
最后一步假定已重新启用SystemIntegretyProtection。但是,如果有意永久性地禁止SIP,则可以将该步骤集成到上面的force-iGPU.sh脚本中。
但是由于某种原因我打算永久关闭SIP,并且在没有引起我注意的情况下将其重新打开,因此依靠SIP保持“关闭”可能不是最好的方法。清除存储SIP设置的NVRAM可能是一种无法预料的干扰。
未来使用的预防措施
还有两个需要注意的警告:重置SMC / NVRAM时,这是可逆的。如果发生这种情况,则可以甚至必须重新设置GPU功耗偏好的NVRAM变量,以从启动时开始强制使用iGPU。
由于这很容易发生(并且经常被错误地建议使用多次,而不是实际有用的方法),因此您可能应该为这种情况做准备,并创建一个简单的脚本来大大加快该过程,并使输入必要的变量变多更少的错误倾向:
sudo nano /force-iGPU-boot.sh
–在此文件中输入以下内容:
#/bin/sh
sudo nvram boot-args="-v"
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
exit 0
–现在使该可执行文件:
sudo chmod a+x /force-iGPU-boot.sh
将来,当SMC / PRAM / NVRAM重置为默认值时,现在可以通过以下方式启动到SingleUser中:
Cmd+s
–在安装引导卷读写后,仅执行以下一行:
sh /force-iGPU-boot.sh
请记住,agc变量现在也已清除。(请参见上文)
此外,请确保再次在“系统偏好设置”>“启动磁盘”中设置默认启动卷。
第3部分:处理来自Apple的更新
现在,此安装程序可以在Apple安装人员无法期望的位置安装一个kext。这就是为什么在本指南中尚未重新启用SIP的原因。如果即将进行包含AMD驱动程序更改的更新,建议在更新过程之前将AMDRadeonX3000.kext移回其默认位置。否则,更新程序将至少另一个不同版本的kext写入其默认位置,或者最糟糕的是,您最终会得到部分不匹配的驱动程序的未定义状态。
在任何系统更新之后,必须检查文件夹/ System / Library / Extensions中是否存在有害的kext。它的存在将导致例如优胜美地和塞拉的靴子悬挂,高塞拉山脉的靴子循环过热。
升级到High Sierra 10.13:有了这个hack,几乎是很简单的:尽管应用了固件更新,但是安装过程不应触及NVRAM变量。安装过程也不使用完全加速的AMD芯片,而是使用基本加速功能,对于这种黑客攻击而言,这没有问题。但是,如以上段落中所述,首次引导进入已完成安装但即将开始设置过程的系统时,会产生由热量/碰撞引起的引导循环。令人讨厌的内核扩展必须如上所述再次移动。(从第3步开始)移动完结点之后,一切都将恢复正常。
Apple的最新更新:在阅读以下内容之前,请不要更新。
直到另行通知:
最近的更新再次破坏了计算机。它更新了固件RecoveryPartition,似乎无法引导进入SingleUserRecoveryMode
并使其无法安装(即使使用DeltaUpdate),也可以正常运行AMDRadeonX3000.kext!
如果没有准备,只有手头的机器,您会有点卡住。
如果SingleUserRecoveryMode永久消失,请使用常规的RecoveryMode。结果是相同的,但是启动起来要慢一点:上面的过程仍然有效,并且对于所有先前版本的Mac OS X / macOS来说都更快。
但是,如果您更新到10.13.6或更高版本:
那么您必须用常规的RecoveryMode(+ )替换SingleUserRecoveryMode(Command+ r+ s)的说明,并通过终端禁用SIP(此精确用例的示例)。Commandr
如果您确实属于那些常规恢复模式无法正常工作的用户:
无法通过SingleUserRecovery禁用SIP的变通办法:
首先,启动进入单用户恢复模式。在此模式下,不允许进行csrutil编辑,但可以设置gpu-power-prefs nvram属性。这将有助于以恢复模式重新引导计算机。然后,您必须用常规的RecoveryMode(+ )替换SingleUserRecoveryMode(Command+ r+ s)的说明,并通过终端禁用SIP(此精确用例的示例)。Commandr
在更新之前,请准备可引导卷。那可以是外部磁盘或棒。引导计算机的任何版本都可以。可以在另一台Mac上创建这样的驱动器。
请记住,在外部驱动器上,AMDRadeonX3000.kext也必须被移动。尝试从该驱动器启动。只有在按预期方式工作并且可以将其安装到内部驱动器上时:从内部驱动器重新引导,然后继续将内部驱动器/系统更新到10.13.6。
更新快要结束后,将重新启动一次。强制关机并从外部驱动器重启。安装内部驱动器并移动Radeon.kext。SIP仅保护引导的系统。
建议在某处在线,但实际上是一个绝望的猜测,并且未经测试:Cmdrs您可以尝试使用InternetRecoverySingleUserMode 而不是SingleUserRecoveryMode CmdOptrs。另外,可能值得尝试看看SafeRecoveryMode是否有效CmdShiftr。
图形恢复模式可能无法像我一样正常工作。但是,在High Sierra的最新版本中,仍然可以引导到单用户恢复模式。它只需要适当的时机。诀窍是首先通过按cmd + R启用恢复模式,并在识别出单用户模式的cmd + S命令后立即启用恢复模式。确切的时刻必须由用户确定。如果同时按cmd + R + S,将仅激活单用户模式。如果先按cmd + R并按得太晚,则将加载图形恢复模式。– TAKeanice↵
屏幕亮度键在High Sierra中不起作用?
苹果公司更改了在High Sierra中处理用于更改屏幕亮度的键盘事件的方式。有了此hack或下面的硬件mod,密钥将失效。留在Sierra的另一原因。但是,使用此技巧,您可能还求助于使用其他软件解决方案。除了破解您自己的AppleScript解决方案外,您可能还想尝试现成的应用程序。
例如,AppStore上的Brightness Slider提供了可自定义的键盘快捷键。
为避免这些崩溃/死机/引导循环(对于您的文件系统而言从来都不是一个好主意),在全新安装或升级时:请确保坚持安装过程,并始终引导至“安全模式”(Shift在引导过程中一直按住直到将kext移到安全的地方–在SafeMode中安装应该可以正常进行。
结束语和建议
此外:无论您做什么,笔记本电脑都过热。冷却系统不足,大量故障的AMD芯片就是证明。
为了延长这台被黑客入侵的机器的寿命,建议不要在很长一段时间内都进行繁重的工作。严格遵循笔记本电脑的通常建议:在坚硬的表面上使用,保持风扇和散热片清洁。使用任何具有相对激进设置的fancontrol软件也应有所帮助:例如smcFanControl,MacsFanControl或TGPro(均为商业产品)。
免责声明:整个过程不是魔术。这些芯片的故障状态不是100%可预测的。即使存在这种黑客攻击,也很少有用户遇到问题:重新启动,进入睡眠或正常唤醒可能会出现问题,其中大多数来自优胜美地的用户,最小的麻烦似乎出在Sierra上。在这些情况下,有时候似乎有必要不使用 AMDRadeonX3000.kext,因此也不要使用第3部分中的LoginHook。(但请参阅上面* 1下的附加说明。)High Sierra上的用户数量过多,显示问题背光调节。因此,目前,我认为10.12 Sierra是选择操作系统的最佳时机。
在某些情况下,即使采取了所有这些措施,如果在机器进入睡眠状态时连接了任何外围设备并处于活动状态,仍可以使用的Thunderbolt端口似乎也会引起一些问题。在这种情况发生之后,任何后续的睡眠周期都可能受到影响,并且再次需要使用上述概述的后续变量设置舞蹈进行NVRAM重置。在这种情况下,建议在机器进入睡眠状态之前,防止机器进入睡眠状态或拔下Thunderbolt端口上的任何硬件。
在此答案开头列出的限制范围内:大多数用户报告完全成功。
硬件改装/黑客
现在有几种可用的方法,有些不好,有些很好。
错误的解决方案:RealMacMods提供了非常便宜的硬件修改:
尽管他们使用相对复杂的方式在linux上设置必需的EFI变量,但以下优点是只需去除一个微小的电阻就可以完全切断dGPU的核心电压!(图片链接)
在这种重新启动过程中,至关重要的是,必须一次引导进入安全模式(在整个引导过程中按住Shift键),然后从菜单中选择“关机(不重新启动)”。
使用R8911电阻器进行此安全启动。没有此安全启动程序,后续步骤可能无法正常工作。
完成后续步骤之前,请勿再穿靴子。
安全启动会清除操作系统级别的GPU首选项,这可能会干扰以下过程。
现在,这将使MacBook Pro停止自动切换到Radeon,但仍会消耗功率,产生热量且对操作系统可见。
我们发现只需删除1个电阻器即可解决此问题。
如果出于任何原因需要重新打开radeon,也可以用一个开关代替该电阻器。
该电阻器的位置在逻辑板型号之间有所不同。
所涉及的电阻是17英寸MBP上的R8911和15英寸MBP上的R8911,这是一个1欧姆的电阻,可为ISL6263C直流至直流转换器提供电流路径。
该电阻器控制向稳压器供电,该稳压器向Radeon GPU提供核心电压。简而言之,没有核心电压,没有GPU。您会在冷却风扇的右侧找到电阻器(按上述方向)。它将在ISL电压转换器芯片附近。这是我们将禁用的芯片。
只需将其删除。首选的方法是专业的回流焊台,但是铁杆和稳定的手将使您到达需要的位置。如果使用助焊剂去除了助焊剂(不需要),请确保使用少量的酒精或其他合适的溶剂进行清洁。
基本上就是这样。下次启动时,您会注意到您的GPU缺陷问题已解决,并且您将不再将AMD GPU视为已安装的硬件。
我没有对此进行测试,但是它应该消除了对kext的任何需要,并且还解决了与睡眠,唤醒,休眠,重新启动等有关的所有问题
。考虑此方法的一个警告:因为它似乎也依赖于设置NVRAM变量似乎完全有必要采用一种全自动方法来设置此变量,而无需任何用户干预。(就像进行必要更改的Linux操作系统一样),否则NVRAM重置实际上可能会使计算机变砖。供应商声称对此没有数据!
(在读完用这种方法咬住用户的故事后,最终得到的只是一个黑屏:似乎可以通过VNC或ssh远程访问该计算机,因此,如果事先设置了这些设置,在之后确实可能不是一个糟糕的选择所有,因为可以通过这种方式设置nvram变量。请记住:未经测试的互联网故事。)
永久,可靠且便宜的硬件解决方案!
Dosdude1显然找到了解决该问题的方案:永久禁用2011 15“ / 17” MacBook Pro专用GPU-gMux IC旁路
- 选项A(将在下面详细介绍)是将LVDS输出线从集成图形LVDS输出线直接硬连接到连接到显示器的线。
- 选项B是使用自定义固件重新编程gMux IC(它只是莱迪思LFXP2微控制器),以禁用GPU切换功能。我将来可能会对此进行试验,但是这样做需要我没有的特殊硬件。当然,这将是最佳解决方案。
这几乎是容易的。所需要的只是各种长度的电线。瞥一眼:
也在youtube上!
上面的“错误解决方案”现在变成了一种几乎专业的预制硬件解决方案,从而消除了该方法以前的“缺点”:
Tiresias(GPU杀手):
Tiresias是一块小板,可以焊接到15英寸或17英寸2011(早期或晚期)型号的MacBook Pro的主板上。
这些都是具有820-2914-A,820-2914-B,820-2915-A或820-2915-B主板的型号。
820-2914和820-2915板具有两个GPU。PCH的内部(英特尔)GPU和外部(离散)AMD GPU。它是外部GPU在“一小部分MacBook Pro系统”中发生故障(Apple表示:“很多”)。Tiresias将'gpu-power-prefs'nvram变量写入ROM,以便Mac不再使用(死)外部(离散)AMD GPU。如果用户清除了NVRAM(PRAM),就没有问题,因为Tiresias将再次写入记录,而Mac将再次运行。
这使其成为使死GPU的820-2914或820-2915复活的理想解决方案。安装简便(无需焊接电线)。您将需要在主板上安装一个很小的板。经验丰富的技术人员可以在几分钟内完成此操作。除此以外,还应卸下R8911以关闭死掉的GPU的电源。这样可以节省能源,产生更少的热量并节省电池寿命。卸下R8911还可以防止Mac被死掉的GPU弄糊涂,因为即使关闭了GPU,它仍会尝试与死掉的GPU对话。根据GPU中哪些内部触点破裂,这可能会使Mac感到困惑甚至崩溃。
还支持Mac OS X 10.13 High Sierra。要解决睡眠后背光不恢复的问题,请同时卸下R9704并将R9704的引脚2连接到C9711的引脚1。
Tiresias(GPUkiller)技术详细信息Tiresias是一块小板,可以焊接到15英寸或17英寸2011(早期或晚期)型号的MacBook Pro的主板上。
这些都是具有820-2914-A,820-2914-B,820-2915-A或820-2915-B主板的型号。
820-2914和820-2915板具有两个GPU。PCH的内部(英特尔)GPU和外部(离散)AMD GPU。它是外部GPU在“一小部分MacBook Pro系统”中发生故障(Apple表示:“很多”)。Tiresias将'gpu-power-prefs'nvram变量写入ROM,以便Mac不再使用(死)外部(离散)AMD GPU。如果用户清除了NVRAM(PRAM),就没有问题,因为Tiresias将再次写入记录,而Mac将再次运行。
这使其成为使死GPU的820-2914或820-2915复活的理想解决方案。安装简便(无需焊接电线)。您将需要在主板上安装一个很小的板。经验丰富的技术人员可以在几分钟内完成此操作。除此以外,还应卸下R8911以关闭死掉的GPU的电源。这样可以节省能源,产生更少的热量并节省电池寿命。卸下R8911还可以防止Mac被死掉的GPU弄糊涂,因为即使关闭了GPU,它仍会尝试与死掉的GPU对话。根据GPU中哪些内部触点破裂,这可能会使Mac感到困惑甚至崩溃。
OS X 10.6-10.12(Sierra)
背光滑块(在系统偏好设置中)和背光键(F1和F2)起作用。系统睡眠有效。Thunderbolt端口上的视频输出不起作用,但是Thunderbolt端口上的所有其他功能都起作用。
OS X 10.13(High Sierra)
据我们所知,10.13(塞拉利昂)没有比10.12(塞拉利昂)更具优势。苹果完全重塑了High Sierra中的视频驱动程序,并且似乎一团糟。背光控件将不起作用。更糟糕的是,机器从睡眠状态唤醒后,背光灯根本无法重新打开。
要解决睡眠后背光不恢复的问题,请卸下R9704并将R9704的引脚2连接到C9711的引脚1。这会将背光设置为全亮度。不利的一面是,通过此修改,亮度也将在旧版OS上达到全亮度。
轮胎820-2915(15英寸)轮胎(一)(1)包括运费(全球)60欧元。
一站式软件解决方案更新
上面的过程似乎已植入与硬件黑客相关的应用程序中!好吧,至少它的一部分。但是另一方面,该应用程序比上面的应用程序更具通用性,因为它似乎还可以处理NVidia卡,即:它用于禁用所有Mac中的所有离散CPU。
,,此应用是由dosdude1制作的,没有很好的文档记录。自述文件屏幕显示,它将设置NVRAM变量,移动所有图形加速驱动程序,然后安装启动守护程序以处理更新并确保该变量保持设置状态。
如果您已经按照上述步骤操作,则未经我的测试,也未得到我的认可!
但是,如果该程序在某个时候对您不起作用,或者似乎只是令人生畏,那么您可以尝试以下操作:
dosdude1:我编写的其他未公开文档的软件存储在这里:MacBook Pro dGPU Disabler.zip
您可能不得不再次查看上述过程,因为该应用程序似乎错过了改进热管理部分的功能(如果您通过移除晶体管来修改硬件,则很容易出现:混搭)。
如果有人对此进行了测试,请在此处通过评论或编辑提供反馈。
Easter更新2019:20美元解决方案,使用64位Windows计算机和Lattice HW-USBN-2A ICSP FPGA编程器将自定义固件应用于gMux IC。Dosdude1声称这是“完美”的解决方案,这意味着即使在HighSierra和Mojave的电池寿命,温度,亮度控制和唤醒/睡眠状态下也能按预期工作。使用该解决方案是永久性的,并且会使以上所有内容都过时。
但是,这种新解决方案不是免费的,并且需要Windows PC和编程器形式的硬件。以及目前暂时将几根导线焊接到逻辑板上。)