软件介绍
WWW.IMACOSX.CN

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

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

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

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

 

需要的软件
WWW.IMACOSX.CN
    • DPCIManager.app
    • MaciASL.app
    • OpenCore Configurator:用于修改 OC 的配置文件,不喜欢 OCC 的话下面几个也可以
  • OCAuxiliaryTools
  • ProperTree
  • Visual Studio Code
查找设备并添加到ssdt
WWW.IMACOSX.CN

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

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

DefinitionBlock ("", "SSDT", 2, "hgws", "ZPTS", 0x00000000)
{
    External (_SB_.PCI0.XHC_.PMEE, FieldUnitObj)
    External (ZPTS, MethodObj)    // 1 Arguments

    Method (_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, "hgws", "SHUT", 0x00000000)
{
    External (_SB_.PCI0.XHC_.PMEE, FieldUnitObj)
    External (ZPTS, MethodObj)    // 1 Arguments

    Method (_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 = Zero
                Sleep (0x10)
            }
        }
        Else
        {
        }
    }
}

 

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

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

代码如下:

Find: 5F505453 01
Replace: 5A505453 01
Comment: Change _PTS to ZPTS
最后
WWW.IMACOSX.CN

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

——高尔基

发表回复

后才能评论

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或夸克网盘或者蓝奏云。 若排除这种情况,可在对应资源底部留言,或联络我们。

夸克网盘需要保存到自己的夸克网盘中,然后进入自己网盘下载,不需要下载app或者客户端,直接网页登陆即可

本站资源大部分来源于网络,魏叔一个人精力有限,无法进行一一测试,希望谅解。

如果您已经成功付款但是网站没有弹出成功提示,请联系魏叔提供付款信息为您处理

素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源