Skip to content

Latest commit

 

History

History
334 lines (269 loc) · 23.9 KB

3-3.md

File metadata and controls

334 lines (269 loc) · 23.9 KB

3. 准备 ACPI

基本概念

APCI

高级配置与电源接口(Advanced Configuration and Power Interface),是 1997 年由英特尔、微软、东芝共同提出、制定的操作系统电源管理、硬件配置接口,ACPI 定义了系统固件 BIOS 或 UEFI 和操作系统之间的硬件抽象接口。

它帮助操作系统合理控制和分配计算机硬件设备的电量,有 了 ACPI ,操作系统可以根据设备实际情况,根据需要把不同的硬件设备关闭。

它主要涵盖的功能包括:

  1. System power management(系统电源管理)
  2. Device power management(设备电源管理)
  3. Processor power management(处理器电源管理)
  4. Device and processor performance management(设备及处理器性能管理)
  5. Configuration / Plug and Play(配置/即插即用)
  6. System Events(系统事件)
  7. Battery management(电池管理)
  8. Thermal management(温度管理)
  9. Embedded Controller(嵌入式控制器)
  10. SMBus Controller(SMBus控制器)

在计算机应用平台,ACPI 越来越重要。ACPI 由很多表组成,包括:RSDP,SDTH,RSDT,FADT,FACS,DSDTSSDT,MADT,SBST,XSDT,ECDT,SLIT,SRAT。其中 DSDT 就是它的一个重要的描述表。

DSDT 、SSDT

正如上面所说,DSDT 和 SSDT 是 ACPI 规范的一部分,概述了硬件设备,如 USB 控制器、CPU 线程、嵌入式控制器、系统时钟等。

DSDT(差分系统描述表)可以被视为包含大部分信息的主体

SSDT(辅助系统描述表)传递的信息较少

可以将 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 文件即可。

Intel 桌面

Intel 笔记本

Intel 高端桌面

AMD 桌面

黑苹果 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-EHCx-DISABLE.aml 不清楚具体作用 在其他人的 EFI 里面看到过
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-OPT.aml 不清楚具体作用 在其他人的 EFI 里面看到过
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-SHC0.aml 不清楚具体作用 在其他人的 EFI 里面看到过
41 SSDT-ThinkPad_ClickPad ThinkPad 的 ClickPad 专用
42 SSDT-UNC.aml 禁用 ACPI 中未使用的设备,确保 IOPCIFamily 不会出现内核恐慌
43 SSDT-UPRW.aml 修复睡眠自动唤醒补丁
44 SSDT-USB-Reset.aml 可能和 SSDT-RHUB 作用相同
45 SSDT-USBX.aml 不清楚具体作用 在其他人的 EFI 里面看到过
46 SSDT-XHC2.aml 自动注入 XHC 属性?
47 SSDT-XOSI.aml 触控板连接修复,模拟 Windows 版本的 Darwin,需要配合补丁