失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 黑苹果SSDT修正关机/重启问题

黑苹果SSDT修正关机/重启问题

时间:2023-01-30 07:47:21

相关推荐

黑苹果SSDT修正关机/重启问题

前言

黑苹果进入十代酷睿搭 400 系主板时代后,某些机型上(部分 Z390 和 B460)的 macOS 可能会遇到一个奇怪的问题,就是关机时,电脑可能会变成自动重启,或卡在壁纸界面(开了 -v 跑码的卡在跑码界面)。

这是因为 ACPI 中缺少 S5 调用而导致控制器无法断电。当然,Windows 和 Linux 都有各自的黑科技来解决这个问题,但 macOS 没有内置此类修复(不是因为苹果傲娇,而是它的自家产品没有这个问题)。这个现象在 Clover 中并不常见,因为 Clover 内置了很多隐藏的自动应用的热补丁,再加上非常方便的各类 ACPI 开关,修复也比较方便。

但是 OpenCore 并没有内置这些东西,所以我们需要做一些本来应该是主板厂家工程师的工作,修复他们留在 ACPI 里的 Bug 导致的问题。

「注意」因为 SSDT 编辑有门槛,需要一定的编程基础知识和 ACPI 知识,本文只做思路分享,不做新手式教学。

需要的软件

DPCIManager.appMaciASL.appOpenCore Configurator:用于修改 OC 的配置文件,不喜欢 OCC 的话下面几个也可以 OCAuxiliaryToolsProperTreeVisual Studio Code

查找设备并添加到 SSDT

使用 DPCIManager 提取你的 DSDT.aml 文件,然后使用 MaciASL 打开,搜索其中 _PRW 相关内容,因为这个方法(Method)是 Power Resources for Wake 的关系,可能有非常多的结果。查看其中有没有提到 XHC、XHCI 和 XHC1 之类的设备,例如 SB.PCI0.XHC 。

然后,打开 MaciASL,新建文件,添加以下代码:

DefinitionBlock ("", "SSDT", 2, "HeiPG", "ZPTS", 0x00000000){External (_SB_.PCI0.XHC_.PMEE, FieldUnitObj)External (ZPTS, MethodObj) // 1 ArgumentsMethod (_PTS, 1, NotSerialized) // _PTS: Prepare To Sleep{ZPTS (Arg0)If ((0x05 == Arg0)){\_SB.PCI0.XHC.PMEE = Zero}}}

解释:基本意思就是当 ZPTS 的 Arg0 被赋值为 0x05 时(S5 状态),让 SB.PCI0.XHC 这个设备变成 0(就是没有了)。其中 SB.PCI0.XHC 是设备位置,这个需要根据你自己的情况自行确定。完成后,用 MaciASL 导出编译后的 aml 文件,添加到 EFI 目录和 config 文件中,并启用。

更进一步,再添加一个系统判断以及操作范围,就更加稳妥了。

DefinitionBlock ("", "SSDT", 2, "hack", "SHUT", 0x00000000){External (_SB_.PCI0.XHC_.PMEE, FieldUnitObj)External (ZPTS, MethodObj) // 1 ArgumentsMethod (_PTS, 1, NotSerialized) // _PTS: Prepare To Sleep{ZPTS (Arg0)If (_OSI ("Darwin")){If ((0x05 == Arg0)){If (CondRefOf (\_SB.PCI0.XHC.PMEE)){\_SB.PCI0.XHC.PMEE = Zero}OperationRegion (PMRS, SystemIO, 0x1830, One)Field (PMRS, ByteAcc, NoLock, Preserve){, 4, SLPE, 1}SLPE = ZeroSleep (0x10)}}Else{}}}

「注意」这个补丁还需要搭配 ACPI 重命名,将方法 _PTS 重命名为 ZPTS,否则无效(因为原本没有 ZPTS)。

重命名补丁可以通过 OCC 等编辑工具快捷添加到 OpenCore 的 config 中,记得把 Enabled 勾上。

代码如下:

Find: 5F505453 01Replace: 5A505453 01Comment: Change _PTS to ZPTS

尾声

不想自己弄的懒人,可以直接下载下面整理好的文件包,其中 .dsl 是源文件,.aml 是 OpenCore 可以直接使用的,已经写好了各类常见的 XHC 名称,但 ACPI 重命名补丁还是要自己加的。不保证一定可以解决你的问题,因为每台电脑的 DSDT 都是不一样的。

如果觉得《黑苹果SSDT修正关机/重启问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。