跳过正文
  1. Blogs/

2.3 准备ACPI

·4590 字·10 分钟· loading · loading · ·
折腾 黑苹果
柴西
作者
柴西
记住也好,记不住也好,反正名头不重要。
目录

基本概念
#

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 是概述项目额外细节的便签。

黑苹果下一般是先提取 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 文件即可。

Intel 桌面
#

Penryn、Younah、Conroe

Lynnfield、Clarkdale

SandyBridgeIvy Bridge

Hasewell、Broadwell

Skylake

Kaby Lake

Coffee 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
  • 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

Skylake、Kaby Lake

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

Skylake-X/W、Cascade Lake-X/W

AMD 桌面
#

Bulldozer(15h)、Jaguar(16h)

Ryzen、Threadripper(17h and 19h)

黑苹果 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 大小核调度

相关文章

2.2 OC文件结构
·2368 字·5 分钟· loading · loading
折腾 黑苹果
2.1 BIOS设置
·4408 字·9 分钟· loading · loading
折腾 黑苹果
1.2 写入镜像
·78 字·1 分钟· loading · loading
折腾 黑苹果