前言

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

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

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

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

需要的软件

  • DPCIManager.app
  • MaciASL.app
  • OpenCore Configurator:用于修改 OC 的配置文件,不喜欢 OCC 的话下面几个也可以
    • OCAuxiliaryTools
    • ProperTree
    • Visual 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 01
Replace: 5A505453 01
Comment: Change _PTS to ZPTS

尾声

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

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

  1. linux意外重启分析,Linux关机重启流程分析

    linux下的关机和重启流程对于一般的桌面应用和网络服务器来说并不重要,但是在用户自己定义的嵌入式系统内核中就有一定的研究意义,通过了解Linux 关机重启的流程,我们对它可以修改和自定义,甚至以此为 ...

  2. Hadoop 在关机重启后,namenode启动报错

    Hadoop 在关机重启后,namenode启动报错: 2011-10-21 05:22:20,504 INFO org.apache.hadoop.hdfs.server.common.Storag ...

  3. rsyslogd 重启_ubuntu12.04 syslog记录正常与非正常关机重启

    ##正常关机重启 Jul 12 16:59:50 ubuntu3 kernel: Kernel logging (proc) stopped. Jul 12 16:59:50 ubuntu3 rsys ...

  4. Linux基础二(挂载、关机重启与系统等级)

    一.Linux 基础之挂载 1. 挂载和查询 1.1 挂载 什么叫挂载?装系统的时候要给硬盘分区,在 Windows 中要分 C 盘 D 盘 DEF 盘,这个操作我们叫做分配盘符,分配盘符之后我们就可 ...

  5. Linux命令关机/重启和Windows系统dos命令关机/重启

    Linux命令关机/重启: 关机 shutdown –h now shutdown –h 20:25 shutdown –h +10 halt 立马关机 系统会在今天20:25关机 十分钟后关机 关闭 ...

  6. android关机分区卸载,Android关机重启流程(二)

    一.回顾 先回顾下上部分得分析,从最开始的PM.reboot(),经过层层调用,最终调用 SystemProperties.set("sys.powerctl", "re ...

  7. Windows11怎么关机重启?Windows11的关机键在哪?

    最近,随着Windows11的系统镜像流出,不少小伙伴都已经抢先下载体验了.而针对这一次Windows的界面大改,许多用户不知道一些基础的功能在哪,例如关机键.下面小编就为大家详细讲解一下怎么关机吧! ...

  8. Linux关机重启流程分析

    linux下的关机和重启流程对于一般的桌面应用和网络服务器来说并不重要,但是在用户自己定义的嵌入式系统内核中就有一定的研究意义,通过了解Linux 关机重启的流程,我们对它可以修改和自定义,甚至以此为 ...

  9. 服务器的重启的日志文件,服务器关机重启日志

    服务器关机重启日志 内容精选 换一换 创建VPC流日志,记录虚拟私有云中的流量信息.VPC流日志功能目前仅在"亚太-新加坡"."华南-广州"."亚太- ...

最新文章

  1. 一文读懂马斯克展示脑机接口:硬币大小芯片植入猪脑 实时读取猪脑信息
  2. 文件上传(上传至独立的文件服务器)
  3. 行为模式之State模式
  4. Oracle 创建及调用存储过程,脚本示例
  5. OneAPM挂牌新三板,续写ITOM新篇章
  6. 五大地形等高线特征_高中地理学习中如何快速掌握等高线地形图
  7. delphi与api中的加一减一函数
  8. linux服务器历险之linux性能监控
  9. 牛客 - 捡金币(思维+二维前缀和+构造)
  10. mysql多条数据合并一条之后取出重复值
  11. linux驱动编写(platform总线和网卡驱动)
  12. Java static、 final修饰符
  13. 利用OpenCV实现——目标跟踪方法(一)
  14. C++远征离港篇-学习笔记
  15. MATLAB生成正弦码表
  16. 【持续更新】1996-2022历代AMD Radeon桌面显卡列表,Radeon显卡发布日期
  17. 对计算机的一点点看法
  18. Maya模型导入到Unity3d 的秘诀
  19. 会说话的代码 Python pyttsx3,及AttributeError:partially initialized module......(......)报错,解决方法
  20. 沈阳艺术设计培训就业班 (学制一年)

热门文章

  1. ijkplayer点播和直播视频 问题 解决及优化,视频播放中可能有的bug
  2. 速溶全脂奶粉的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. 图10——判断顶点u和顶点v是否存在简单路径
  4. Android项目之二手交易淘学院APP
  5. 闲置交易,二手交易,二手商城,同城交易,社交商城类APP源码
  6. Ng-Alain 菜单图标引入iconfront 版本9.5.5
  7. border边框部分不显示
  8. 产品速递 | zCloud-云和恩墨数据库云化管理平台
  9. matlab半小提琴图,matplotlib – 分开的小提琴图的一半,以比较尾部数据
  10. Java面试题——基础篇一