【Hackintosh】SSDTs

Posted by 西维蜀黍 on 2021-11-16, Last Modified on 2022-02-19

Secondary System Description Table (SSDT)

So what are DSDTs and SSDTs? Well, these are tables present in your firmware that outline hardware devices like USB controllers, CPU threads, embedded controllers, system clocks and such. A DSDT(Differentiated System Description Table) can be seen as the body holding most of the info with smaller bits of info being passed by the SSDT(Secondary System Description Table).

You can think of the DSDT as the building blueprints with SSDTs being sticky notes outlining extra details to the project

Differentiated System Description Table (DSDT)

DSDT 是 The Differentiated System Description Table 的简写。字面上就可以知道它是一个描述系统不同信息的表。它包含了所有除基本系统以外所有不同设备的信息,也就是每台计算机设备的基本系统是相同的,而不相同的设备用 DSDT 来描述

DSDT 表代码为 ACPI Machine Language (AML)。

用户通过修改DSDT可以得到更好的硬件支持,最简单的理解就是DSDT是描述硬件的。

修改 DSDT 的主要目的就是让 mac系统识别存在这个硬件并告诉 mac 系统你的硬件位置,以便让 mac 系统内置的驱动来驱动硬件工作。

修改 DSDT 的基本过程:

  • 提取 bios 的 AML 文件,反编译为 dsl text 文件,修改完毕后,编译到 Aml,然后替换 BIOS 中的 DSDT。

How to patch DSDT

For OpenCore: If you’re using OpenCore, copy your ACPI files to EFI/OC/ACPI. You’ll also need to add the ACPI files entries in ACPI>Add section of your config.plist

How to Create SSDTs

  • Prebuilt SSDTs
    • They’re universal but don’t teach much
    • For most users, we recommend this as it does not require any compiling
  • Automated tools
    • Mainly seen with SSDTTime, work much better than prebuilts as there’s less bloat however doesn’t teach you much
  • Manually creating them
    • Will always work, be much cleaner and get to learn about the process
    • However requires you to deal with code

Prebuilt SSDTs

  • SSDT-EC-USBX-DESKTOP
    • Used for disabling your real Embedded controller and creating a fake one for macOS to play with
    • USBX portion is used for injection USB power properties missing on Skylake and newer

Automated tools - SSDTTime

Refer to https://dortania.github.io/Getting-Started-With-ACPI/ssdt-methods/ssdt-easy.html#adding-to-opencore

Manually creating them

Refer to https://dortania.github.io/Getting-Started-With-ACPI/ssdt-methods/ssdt-long.html

Getting a copy of your DSDT

  • On your Windows, Download acpidump.exe(opens new window)

  • In command prompt run path/to/acpidump.exe -b -n DSDT -z, this will dump your DSDT as a .dat file. Rename this to DSDT.aml

Compiling and decompiling ACPI Tables

Decompile ACPI Tables

  • On macOS, download MaciASL and open the DSDT.aml that you get just now, which automatically decompiles it to a .dsl

Compile a .dsl to a .aml

Reference