Skip to content

Latest commit

 

History

History
83 lines (58 loc) · 5.83 KB

README.md

File metadata and controls

83 lines (58 loc) · 5.83 KB

Mammamia Marcello what are ACPIs?

As Dortania's Getting Started with ACPI PR #54 by @1alessandro guide states:


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

You can read more about ACPI and it's spec here: ACPI 6.4 Manual

So why do we care about these tables?

macOS can be very picky about the devices present in the DSDT and so our job is to correct it. The main devices that need to be corrected for macOS to work properly:

  • Embedded controllers(EC)

    All semi-modern Intel machines have an EC (usually called H_EC, ECDV, EC0, etc...) exposed in their DSDT, with many AMD systems also having it exposed. These controllers are generally not compatible with macOS and can cause panics, so then need to be hidden from macOS. macOS Catalina requires a device named EC to be present though, so a dummy EC is created.

    With laptops, the actual embedded controller still needs to be enabled for battery and hotkeys to work, and renaming the EC can additionally cause issues with windows, so creating a fake EC without disabling the real embedded controller is preferable.

    Plugin type This allows the use of XCPM providing native CPU power management on Intel Haswell and newer CPUs, the SSDT will connect to the first thread of the CPU. Not meant for AMD AWAC system clock. This applies to all 300 series motherboards including many Z370 boards, the specific issue is that newer boards ship with AWAC clock enabled. This is a problem because macOS cannot communicate with AWAC clocks, so this requires us to either force on the legacy RTC clock or if unavailable create a fake one for macOS to play with NVRAM SSDT True 300 series motherboards(non-Z370) don't declare the FW chip as MMIO in ACPI and so the kernel ignores the MMIO region declared by the UEFI memory map. This SSDT brings back NVRAM support Backlight SSDT Used for fixing backlight control support on laptops GPIO SSDT Used for creating a stub to allow VoodooI2C to connect onto, for laptops only XOSI SSDT Used for rerouting OSI calls to this SSDT, mainly used for tricking our hardware into thinking its booting Windows so we get better trackpad support. This is a very hacky solution known for breaking Windows boot, use the GPIO SSDT instead. Usage of XOSI will not be covered in this guide IRQ SSDT and ACPI patches Needed for fixing IRQ conflicts within the DSDT, for laptops mainly. SSDTTime exclusive Note Skylake and newer systems rarely have IRQ conflicts, this is mainly prevalent on Broadwell and older

SSDT

SSDT Function
SSDT-3-xh_OEMBD OEM USB SSDT customized for enabling just the necessary USB ports
SSDT-EC-USBX 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
SSDT-GPI0 Used for enabling GPI0 controller for trackpad. Paired with SSDT-TPD0
SSDT-GPRW Used for fixing sleep problems - Requires GPRW to XPRW patch in ACPI > Patch
SSDT-HPET-DISABLE Used for disabling HPET device on macOS
SSDT-MCHC-SBUS Used for fixing SMBus support on macOS
SSDT-PLUG Used for enabling Apple's XCPM in macOS, allowing for far better CPU power management
SSDT-PNLF Used for controlling the backlight on internal display
SSDT-PS2K Used for binding some keys like Stamp to F13 and disabling Swap command and option
SSDT-TPD0 Way better alternative to SSDT-XOSI to force the trackpad behave like on Windows 8 - infos

Drivers

Driver Function
HfsPlus or OpenHfsPlus Apple HFS+ file system driver
OpenCanopy OcBootManagementLib graphical plugin implementation for OpenCore
OpenRuntime OC_FIRMWARE_RUNTIME plugin implementation for OpenCore
ResetNvramEntry OC_BOOT_ENTRY_PROTOCOL implementation for Reset NVRAM entry

Benchmarks

The following benchmarks were made using Geekbench V5:

SSD

SSD Western Digital SN750 Black NVMe 512GB BlackMagic Disk Speed Test SSD Sabrent Rocket NVMe 3.0 512GB AmorphousDiskMark

In case you're using a Samsung SSD drive (bad idea, seriously), make sure that SetApfsTrimTimeout under Kernel/Quirks context is set to 0 rather than -1. This will make sure that TRIM is disabled, and therefore boot times won't be as long as before

RAM

16GB DDR4 @ 2400MHz AmorphousMemoryMark

VideoProc Hardware Infos

Hardware Info detected by VideoProc