老款macbook pro升级oclp后需通过acpi补丁在efi层物理断电独显,避免过热损坏;须确认机型支持switchable显卡、提取dsdt、注入\_ps3/\_off补丁并验证无温升。

老款MacBook Pro(如2013 Late、2014 Mid)在升级OCLP后运行macOS Ventura/Sonoma时,NVIDIA GT 750M或AMD Radeon R9 M290X等独显常因驱动失效或过热引发黑屏、卡死、风扇狂转甚至主板供电模块老化。单纯禁用独显驱动或通过gfxutil屏蔽仅切断软件调用,【硬件级供电未断,GPU芯片仍持续耗电并发热,长期闲置反而加速电容鼓包和PCB氧化】。必须从EFI引导层注入ACPI补丁,在OpenCore启动早期就切断PCIe链路供电控制信号,实现物理级断电。
确认独显型号与供电路径是否可干预
打开终端,执行:system_profiler SPDisplaysDataType | grep -A 2 "Chipset Model\|Switchable"。若输出含“NVIDIA GeForce GT 750M”或“AMD Radeon R9 M290X”且标注“Switchable”,说明该机型使用MUX开关+独立供电设计,具备硬件断电条件。若显示“Intel Iris Pro Graphics”单显或无“Switchable”字样,本方案不适用,强行操作可能导致无法启动。
注意:2012及更早的MacBook Pro(如MacBookPro9,1)使用非标准PMU电源管理,ACPI _OFF方法无效,需跳过本流程。
提取原始DSDT并定位独显设备节点
重启进入OpenCore引导界面,按空格键呼出菜单,选择「Boot into OpenCore Shell」→ 输入fs1:→ ls EFI\OC\ACPI\,确认是否存在origin_DSDT.aml。若无,需先用Hackintool在正常系统中导出原始DSDT并放入该目录。
在Shell中执行:iasl -da -dl origin_DSDT.aml,生成origin_DSDT.dsl。用文本编辑器打开该文件,搜索Device (GFX0)或Device (PEGP)——这是独显在ACPI中的设备节点名。找到其内部的_STA(状态)方法,记录所在行号;再查找是否存在_PS3(D3冷态)或_OFF(关机)方法。若两者皆无,需手动添加。
注入强制断电补丁到config.plist
打开EFI分区中的OC\config.plist,定位到ACPI → Add数组,新增一项:
路径填SSDT-EC-USBX.aml(此为占位名,实际将被覆盖),启用勾选,类型选SSDT。
在ACPI → Patch中新增一条规则:
Find填5F5354410800000000(_STA方法签名十六进制),Replace填5F5354410800000001(强制返回0x01表示存在但禁用),Base留空,Count填1,Limit留空,Mask留空,Skip填0。【此项必须放在所有其他ACPI Patch之前,否则后续补丁可能因设备未识别而失败】
继续在ACPI → Patch末尾追加第二条:
Find填5F5053330800000000(_PS3签名),Replace填5F5053330800000001(强制进入D3冷态),Count填1,Skip填0。
编写硬件级断电SSDT并挂载
新建文本文件,命名为SSDT-GPU-OFF.aml,内容如下(以GT 750M为例,设备名请按上一步查到的实际节点替换):
DefinitionBlock ("", "SSDT", 2, "OCLP", "GPU-OFF", 0x00000000)
{
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
Scope (_SB.PCI0.PEG0.PEGP)
{
Method (_PS3, 0, NotSerialized) { Return (Zero) }
Method (_OFF, 0, NotSerialized) {
Store (0x00, \_SB.PCI0.PEG0.PEGP._PS3)
Return (Zero)
}
}
}
用MacIASL编译为AML格式,拖入EFI\OC\ACPI\目录。回到config.plist的ACPI → Add中,将刚才新增项的路径改为SSDT-GPU-OFF.aml,保存退出。
验证断电效果并固化设置
重启进入OpenCore,按空格→「Options」→ 勾选「Show Verbose」,观察启动日志。当出现ACPI: SSDT-GPU-OFF loaded且后续无GFX0 init或PEGP power on字样,即表示补丁已加载。
进入系统后,打开终端执行:log show --last boot | grep -i "gpu\|peg\|gfx"。若输出中不含power state change to D0、enable GPU等关键词,且pmset -g assertions中无PreventUserIdleSystemSleep因GPU触发,则说明供电已被切断。
最后,在OpenCore配置工具中点击「Validate Configuration」确保无警告,然后重启拔掉电源适配器,仅用电池运行10分钟,触摸独显区域(通常在键盘左上方)应无任何温升——这一步验证通过,即可确认物理断电成功。











