准备 ACPI
基本概念¶
APCI¶
高级配置与电源接口(Advanced Configuration and Power Interface),是 1997 年由英特尔、微软、东芝共同提出、制定的操作系统电源管理、硬件配置接口,ACPI 定义了系统固件 BIOS 或 UEFI 和操作系统之间的硬件抽象接口。
它帮助操作系统合理控制和分配计算机硬件设备的电量,有 了 ACPI ,操作系统可以根据设备实际情况,根据需要把不同的硬件设备关闭。
它主要涵盖的功能包括:
- System power management(系统电源管理)
- Device power management(设备电源管理)
- Processor power management(处理器电源管理)
- Device and processor performance management(设备及处理器性能管理)
- Configuration / Plug and Play(配置/即插即用)
- System Events(系统事件)
- Battery management(电池管理)
- Thermal management(温度管理)
- Embedded Controller(嵌入式控制器)
- SMBus Controller(SMBus控制器)
在计算机应用平台,ACPI 越来越重要。ACPI 由很多表组成,包括:RSDP,SDTH,RSDT,FADT,FACS,DSDT,SSDT,MADT,SBST,XSDT,ECDT,SLIT,SRAT。其中 DSDT 就是它的一个重要的描述表。
DSDT 、SSDT¶
正如上面所说,DSDT 和 SSDT 是 ACPI 规范的一部分,概述了硬件设备,如 USB 控制器、CPU 线程、嵌入式控制器、系统时钟等。
DSDT(差分系统描述表)可以被视为包含大部分信息的主体
SSDT(辅助系统描述表)传递的信息较少
可以将 DSDT 视为建筑蓝图,其中 SSDT 是概述项目额外细节的便签。
黑苹果下一般是先提取 DSDT,然后根据 DSDT 内容来编写对应的 SSDT 来修正 DSDT,当然不使用 SSDT 直接在提起的 DSDT 基础上修改也可以的,就是得进行 DSDT 排错以及代码调整,工程量还是比较大的,不如使用 SSDT 修正起来简约方便。
Why?为什么要知道这些¶
macOS 可能对 DSDT 中存在的设备非常挑剔,因此我们需要纠正它。macOS 正常工作需要修正的主要设备:
-
EC
-
嵌入式控制器
- 非苹果的机型都在其 DSDT 中公开了一个 EC,但是通常与 macOS 不兼容,可能会导致恐慌,因此需要对 macOS 隐藏。
-
对于笔记本电脑,实际的嵌入式控制器仍然需要启用电池和热键才能工作,并且重命名 EC 还会导致 Windows 出现问题,因此最好在不禁用真正的嵌入式控制器的情况下创建假 EC。
-
Plugin type
-
插件类型
-
允许使用 XCPM 在 Intel Haswell 以及更新架构的 CPU上提供本地 CPU 电源管理,这个不适合 AMD
-
AWAC system clock
-
AWAC 系统时钟
-
因为 macOS 无法与 AWAC 时钟通信,因此这要求我们要么强制使用传统 RTC 时钟,要么在不可用的情况下为 macOS 创建一个假的时钟来玩
-
NVRAM SSDT
-
真正的 300 系列主板(非 Z370)不会在 ACPI 中将 FW 芯片声明为 MMIO,因此内核会忽略 UEFI 内存映射声明的 MMIO 区域。这个 SSDT 带回了 NVRAM 支持
-
Backlight SSDT
-
用于修复笔记本电脑上的背光控制支持
-
GPIO SSDT
-
用于允许 VoodooI2C 连接,仅适用于笔记本电脑
-
XOSI SSDT
-
用于将 OSI 调用重新路由到此 SSDT,主要用于诱使我们的硬件认为其启动 Windows,以便我们获得更好的触控板支持
-
IRQ SSDT and ACPI patches
-
用于修复 DSDT 中的 IRQ 冲突,主要用于笔记本电脑。SSDT Time 独占
- 注意 Skylake 和较新的 CPU 很少有 IRQ 冲突,这主要在 Broadwell 和较旧的系统上使用
常见 ACPI 组合¶
ACPI 可以自己手动编译,也可以下载别人编译好的,虽然自己编译是最完美的,但是需要一定的学习门槛,所以小白用户还是建议下载编译好的 SSDT 文件即可。
下面可以根据自己的机型,参考下文,下载属于自己的 ACPI 文件即可。
下载不了的话是因为 Github 被国内墙掉的缘故,下面是几个解决方法思路
- 使用电信网络访问下载
- 挂代理去下载
- 使用 Github 镜像站点下载
- 使用别人已配置好的 EFI 文件夹里面的文件,直接拿来使用
- 办法总比困难多,不要遇到一点点小挫折就放弃
Intel 桌面¶
Penryn、Younah、Conroe
Lynnfield、Clarkdale
SandyBridge、Ivy Bridge
- CPU-PM.aml
- 电源管理使用
- 需要自己脚本生成,比较老了,可以参考 Sandy and Ivy Bridge Power Management
- 生成后需要配合 ACPI 补丁:Delete CpuPm、Delete Cpu0Ist
- SSDT-EC-DESKTOP.aml
- SSDT-IMEI.aml
- 修复 Ivy Bridge CPU 与 6 系列主板混合的问题
- 修复 Sandy Bridge CPU 与 7 系列主板混合的问题
Hasewell、Broadwell
Kaby Lake
Coffee Lake
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-DESKTOP.aml
- SSDT-AWAC.aml
- 修复较新硬件上的系统时钟
- 支持以下主板:
- B360、B365、H310、H370
- Z370(具有较新 BIOS 版本的 Gigabyte 和 AsRock 主板)
- Z390
- B460、Z490
- 400系列 (Comet Lake)
- 495系列 (Ice lake)
Comet Lake
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-DESKTOP.aml
- SSDT-AWAC.aml
- 修复较新硬件上的系统时钟
- 支持以下主板:
- B360、B365、H310、H370
- Z370(具有较新 BIOS 版本的 Gigabyte 和 AsRock 主板)
- Z390
- B460、Z490
- 400系列 (Comet Lake)
- 495系列 (Ice lake)
- SSDT-RHUB.aml
- 修复某些 OEM主板的问题,需要关闭 RHUB 设备并强制 macOS 手动重建端口
- 华硕 Z490 需要这个 SSDT
- 微星主板有待测试
- 技嘉和华擎主板工作很好,不需要这个 SSDT
Rocket Lake
可以模仿 Comet Lake 10代 CPU 的来
Alder Lake
- SSDT-PLUG-ALT.aml
- 12 代 CPU 大小核调度,独有的 SSDT
- 其他可以模仿 Comet Lake 10代 CPU 的来
Intel 笔记本¶
Clarksfield、Arrandale
- SSDT-EC-LAPTOP.aml
- SSDT-XOSI.aml
- 触控板连接修复,默认工作在轮询模式
- 需要配合 ACPI 补丁:Change _OSI to XOSI 来使用
- NUC 等没有触控板的设备不需要这个
- SSDT-PNLF.aml
- 修复笔记本亮度控制,NUC 不需要这个
Sany Bridge、Ivy Bridge
- CPU-PM.aml
- 电源管理使用
- 需要自己脚本生成,比较老了,可以参考 Sandy and Ivy Bridge Power Management
- 生成后需要配合 ACPI 补丁:Delete CpuPm、Delete Cpu0Ist
- SSDT-EC-LAPTOP.aml
- SSDT-XOSI.aml
- 触控板连接修复,默认工作在轮询模式
- 需要配合 ACPI 补丁:Change _OSI to XOSI 来使用
- NUC 等没有触控板的设备不需要这个
- SSDT-PNLF.aml
- 修复笔记本亮度控制,NUC 不需要这个 -[X] SSDT-IMEI.aml
- 修复 Ivy Bridge CPU 与 6 系列主板混合的问题
- 修复 Sandy Bridge CPU 与 7 系列主板混合的问题
Haswell、Broadwell
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-LAPTOP.aml
- SSDT-XOSI.aml
- 触控板连接修复,默认工作在轮询模式
- 需要配合 ACPI 补丁:Change _OSI to XOSI 来使用
- NUC 等没有触控板的设备不需要这个
- 如果这个不成功的话,可手动使用 MaciASL 编译 SSDT-GPI0.dsl.zip 来替代 XOSI
- 但是中断难度有点高,可以参考这个部分的内容:触控板中断示例
- SSDT-PNLF.aml
- 修复笔记本亮度控制,NUC 不需要这个
Skylake、Kaby Lake
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-LAPTOP.aml
- SSDT-XOSI.aml
- 触控板连接修复,默认工作在轮询模式
- 需要配合 ACPI 补丁:Change _OSI to XOSI 来使用
- NUC 等没有触控板的设备不需要这个
- 如果这个不成功的话,可手动使用 MaciASL 编译 SSDT-GPI0.dsl.zip 来替代 XOSI
- 但是中断难度有点高,可以参考这个部分的内容:触控板中断示例
- SSDT-PNLF.aml *修复笔记本亮度控制,NUC 不需要这个
Coffee Lake、Whiskey Lake
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-LAPTOP.aml
- SSDT-XOSI.aml
- 触控板连接修复,默认工作在轮询模式
- 需要配合 ACPI 补丁:Change _OSI to XOSI 来使用
- NUC 等没有触控板的设备不需要这个
- 如果这个不成功的话,可手动使用 MaciASL 编译 SSDT-GPI0.dsl.zip 来替代 XOSI
- 但是中断难度有点高,可以参考这个部分的内容:触控板中断示例
- SSDT-PNLF.aml
- 修复笔记本亮度控制,NUC 不需要这个
- SSDT-AWAC.aml
- 修复较新硬件上的系统时钟
- 支持以下主板:
- B360、B365、H310、H370
- Z370(具有较新 BIOS 版本的 Gigabyte 和 AsRock 主板)
- Z390
- B460、Z490
- 400系列 (Comet Lake)
- 495系列 (Ice lake)
Coffee Lake Plus、Comet Lake
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-LAPTOP.aml
- SSDT-XOSI.aml
- 触控板连接修复,默认工作在轮询模式
- 需要配合 ACPI 补丁:Change _OSI to XOSI 来使用
- NUC 等没有触控板的设备不需要这个
- 如果这个不成功的话,可手动使用 MaciASL 编译 SSDT-GPI0.dsl.zip 来替代 XOSI
- 但是中断难度有点高,可以参考这个部分的内容:触控板中断示例
- SSDT-PNLF.aml
- 修复笔记本亮度控制,NUC 不需要这个
- SSDT-AWAC.aml
- 修复较新硬件上的系统时钟
- 支持以下主板:
- B360、B365、H310、H370
- Z370(具有较新 BIOS 版本的 Gigabyte 和 AsRock 主板)
- Z390
- B460、Z490
- 400系列 (Comet Lake)
- 495系列 (Ice lake)
- SSDT-PMC.aml
- 用来支持适配 NVRAM
- 300 系列主板都需要此 SSDT(Z370除外)
- 支持以下主板:
- B360、B365
- H310、H370(HM370 应该不需要这个)
- Z390
Ice Lake
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-LAPTOP.aml
- SSDT-XOSI.aml
- 触控板连接修复,默认工作在轮询模式
- 需要配合 ACPI 补丁:Change _OSI to XOSI 来使用
- NUC 等没有触控板的设备不需要这个
- 如果这个不成功的话,可手动使用 MaciASL 编译 SSDT-GPI0.dsl.zip 来替代 XOSI
- 但是中断难度有点高,可以参考这个部分的内容:触控板中断示例
- SSDT-PNLF.aml *修复笔记本亮度控制,NUC 不需要这个
- SSDT-AWAC.aml
- 修复较新硬件上的系统时钟
- 支持以下主板:
- B360、B365、H310、H370
- Z370(具有较新 BIOS 版本的 Gigabyte 和 AsRock 主板)
- Z390
- B460、Z490
- 400系列 (Comet Lake)
- 495系列 (Ice lake)
- SSDT-RHUB.aml
- 修复许多 Icelake 笔记本电脑上的根设备错误
Intel 高端桌面¶
Nehalem、Westmere
Sandy Bridge-E、Ivy Bridge-E
- SSDT-EC-DESKTOP.aml
- SSDT-UNC.aml
- 禁用 ACPI 中未使用的设备,确保 IOPCIFamily 不会出现内核恐慌
- 所有的 X99 主板和大多数 X79 主板需要这个 SSDT
- 此外还有一些 C602、C612 主板也需要这个 SSDT
Haswell-E、Broadwell-E
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-DESKTOP.aml
- SSDT-RTC0-RANGE-HEDT.aml
- Big Sur 及其后面的系统需要确保 RTC 设备的兼容
- SSDT-UNC.aml
- 禁用 ACPI 中未使用的设备,确保 IOPCIFamily 不会出现内核恐慌
- 所有的 X99 主板和大多数 X79 主板需要这个 SSDT
- 此外还有一些 C602、C612 主板也需要这个 SSDT
Skylake-X/W、Cascade Lake-X/W
- SSDT-PLUG-DRTNIA.aml
- SSDT-EC-USBX-DESKTOP.aml
- SSDT-RTC0-RANGE-HEDT.aml
- Big Sur 及其后面的系统需要确保 RTC 设备的兼容
AMD 桌面¶
Bulldozer(15h)、Jaguar(16h)
Ryzen、Threadripper(17h and 19h)
- SSDT-EC-USBX-DESKTOP.aml
- SSDT-CPUR.aml
- 用于 B550 和 A520 主板修复 CPU 定义,其他主板可以不使用
- X570 和较旧的主板不需要此 SSDT
黑苹果 ACPI 大全?¶
由于 ACPI 太多了,国光我不可能都列的很全,而且有些 SSDT 作用网上没有权威解释,所以下面的解释说明也会有误差,仅做参考使用,如果内容方面有所遗漏或者发现严重错误的话,欢迎 Github 提交 PR 补充:
序号 | SSDT 文件名 | 解释说明 |
---|---|---|
1 | FixShutdown-USB-SSDT.aml | 修复 USB 控制器,解决睡眠或者关机自动重启 |
2 | Spoof-SSDT.aml | 禁用 GPU |
3 | SSDT-ALS0.aml | 添加虚拟的环境光传感器以在重启后保存之前亮度设置 |
4 | SSDT-ARTC.aml | 修复在较新的硬件上找到的系统时钟。OCC 自带的 |
5 | SSDT-AWAC.aml | 300 系列主板使用, |
6 | SSDT-BAT.aml | ThinkPad 等型号的电池补丁 |
7 | SSDT-BKey.aml | 早期的亮度调节使用 |
8 | SSDT-BRG0.aml | BIOS 没有 Serial(COM) Port 串口或者找不到禁用 Super IO 的话可能需要 |
9 | SSDT-CPUR.aml | 能源管理,针对 AMD B550 和 A520 主板,X570 等较旧的主板不要使用 |
10 | SSDT-EC-DESKTOP.aml | 老的桌面平台使用,用于修复嵌入式控制器 |
11 | SSDT-EC-LAPTOP.aml | 老的笔记本平台使用,用于修复嵌入式控制器 |
12 | SSDT-EC-USBX-DESKTOP.aml | 新的桌面平台使用,用于修复嵌入式控制器 |
13 | SSDT-EC-USBX-LAPTOP.aml | 新的笔记本平台使用,用于修复嵌入式控制器 |
14 | SSDT-EHCx_OFF.aml | USB 兼容性表,禁用EHC1和EHC2。OCC 自带的 |
15 | SSDT-NoHybGfx.aml | 屏蔽独显 |
16 | SSDT-GPI0.aml | 触控板连接修复。OCC 也自带的 |
17 | SSDT-GPRW.aml | 修复睡眠自动唤醒补丁 |
18 | SSDT-HPET.aml | 主要用于 X79、X99 和笔记本电脑用户的 IRQ 补丁 |
19 | SSDT-HV-CPU.aml | 对 macOS 的 Hyper-V 集成支持 |
20 | SSDT-HV-PLUG.aml | 对 macOS 的 Hyper-V 集成支持 |
21 | SSDT-HV-VMBUS.aml | 对 macOS 的 Hyper-V 集成支持 |
22 | SSDT-IMEI-S.aml | 当 DSDT 中没有 IMEI 设备需要通过设备属性设置定义设备 ID 的时候才需要 |
23 | SSDT-IMEI.aml | 当 DSDT 中没有 IMEI 设备需要通过设备属性设置定义设备 ID 的时候才需要 |
24 | SSDT-IRQ.aml | 修复 IRQ 冲突 |
25 | SSDT-LANC.aml | 修复睡眠自动唤醒补丁 |
26 | SSDT-LIDpatch.aml | 合盖睡眠 |
27 | SSDT-NDGP.aml | 屏蔽独显 |
28 | SSDT-OLARILA.aml | 作用不详 来自于 Olaria.com 的特殊 SSDT |
29 | SSDT-GPU-SPOOF.aml | AMD R9 系列仿冒使用,详细可参考 OC 教程 |
30 | SSDT-PLUG_FX.aml | 可能是 AMD FX 系列专用的 CPU 能源管理 |
31 | SSDT-PLUG_RYZEN.aml | 可能是 AMD Ryzen 系列专用的 CPU 能源管理 |
32 | SSDT-PLUG-DRTNIA.aml | 用于 Hasewell 和更新 CPU 的能源管理 |
33 | SSDT-PMC.aml | 300 系列主板原生的 NVRAM 补丁 |
34 | SSDT-PNLF-CFL.aml | Coffee Lake 和更新平台的笔记本背光修复补丁 |
35 | SSDT-PNLF.aml | 大多数主板的背光修复补丁 |
36 | SSDT-PTSWAK.aml | 修复关机、睡眠问题 |
37 | SSDT-RHUB.aml | 修复某些 400 系列主板的问题,需要关闭 RHUB 设备并强制 macOS 手动重建端口 |
38 | SSDT-RTC0-RANGE-HEDT.aml | 高端桌面平台专用,因为Big Sur 需要确保 RTC 设备的兼容 |
39 | SSDT-SBUS-MCHC.aml | 修复 SMBus 支持,解决 温度、风扇、电压等读数问题 |
40 | SSDT-GPU-R9-370.aml | AMD R9 370 的仿冒,实际替换成自己的实际路径使用 |
41 | SSDT-ThinkPad_ClickPad | ThinkPad 的 ClickPad 专用 |
42 | SSDT-UNC.aml | 禁用 ACPI 中未使用的设备,确保 IOPCIFamily 不会出现内核恐慌 |
43 | SSDT-UPRW.aml | 修复睡眠自动唤醒补丁 |
44 | SSDT-USB3-1-XHC2.aml | ASMedia ASM1142 USB 3.1 Type-A 和 Type-C 一体的 USB 专用 |
45 | SSDT-SSCN.aml | 某些 I2C 触控板轮询失败的情况下可以考虑使用看看 |
46 | SSDT-XHC2.aml | 自动注入 XHC 属性? |
47 | SSDT-XOSI.aml | 触控板连接修复,模拟 Windows 版本的 Darwin,需要配合补丁 |
48 | SSDT-RP.PXSX-disbale.aml | 屏蔽 NVME 硬盘补丁示例,记得替换自己电脑的实际硬盘路径 |
49 | SSDT-PLUG-ALT.aml | 12 代 CPU 大小核调度 |