Skip to content

ACPI

Downloading SSDTTime

Since SSDTTime does not have any releases and it’s a Python project, download the source code instead by clicking on Code then Download ZIP.

SSDTTime download page

Running SSDTTime

After extracting the archive, Windows users should run SSDTTime.bat.

Linux users will have to open their terminal inside the extracted SSDTTime/SSDTTime-master directory then run python3 SSDTTime.py. Make sure you have Python 3 installed.

macOS users should run SSDTTime.command.

Upon launching the tool, it will automatically download iASL, which (de)compiles ACPI tables. You should then be greeted with the following screen.

SSDTTime console

Specifying the target system’s ACPI

Select option P on the target system to dump the ACPI tables needed for SSDTTime’s operations.

If you’re not running SSDTTime on the target system, select D instead to pick the folder with the ACPI tables dumped from that target machine.

The software should now show the loaded ACPI tables at the top like in the screenshot below.

SSDTTime

Generating the SSDTs

Info about the options

At the time of writing, there are 12 options available

  • FixHPET

    Fixes IRQ (Interrupt Request) conflicts in the ACPI tables. These conflicts can cause some hardware like sound to not work properly.

  • FakeEC

    Creates a fake Embedded Controller device for macOS to work properly and disables the original EC.

  • FakeEC Laptop

    Creates a fake Embedded Controller device for macOS to work properly, but does not disable the original EC, because laptops need it for battery status, FN keys, etc.

  • USBX

    Creates an USBX device which contains USB power properties necessary for proper functionality. This also requires a valid EC device.

  • PluginType

    Sets the plugin-type property to 1 on the first CPU core, enabling X86PlatformPlugin, which allows for CPU and GPU power management (support varies). It also redefines the processors with Processor objects instead of Device objects if required, since macOS doesn’t support the newer standard.

  • PMC

    Defines the PMCR device on systems that don’t have it to allow native NVRAM support.

  • RTCAWAC

    Disables the new AWAC (Alarm Wake ACPI Clock) and enables the RTC (Real-Time Clock) instead.

  • USB Reset

    Disables the RHUB devices in ACPI for all USB controllers to allow macOS to enumerate USB ports properly on borked ACPI systems.

  • PCI Bridge

    Defines the PCI bridges for a device path specified as some devices might not have their PCI bridges defined which will make OpenCore unable to inject properties using the DeviceProperties key in the configuration.

  • PNLF

    Creates a fake PNLF device with an user-selectable _UID (basically the profile it uses) to allow for native brightness control on laptops.

  • XOSI

    Spoofs the operating system to Windows, allowing any peripherals locked behind non-macOS to be active on macOS.

  • Fix DMAR

    Removes Reserved Memory Regions from the DMAR table. It is required to get some devices like Intel I225-based ethernet controllers on Intel systems.

All systems must choose the below

  • USBX,

    Choose the default option (B key).

  • RTCAWAC,

    If it says you don’t need it, skip this SSDT.

  • PluginType,

  • and USB Reset.

AMD desktops must also choose the following

  • FakeEC.

AMD laptops must also choose the following

  • FakeEC Laptop,

  • XOSI,

    Choose default (A key)

  • and any backlight-related SSDTs required in the NootedRed page.

Example procedure Based on an ASRock B550m Phantom.

SSDTTime FakeEC Result SSDTTime USBX Prompt SSDTTime USBX Result SSDTTime PluginType Result SSDTTime RTCAWAC Result SSDTTime USB Reset Result SSDTTime XOSI Prompt SSDTTime XOSI Result

Copying the AML files from the Results folder

The Results folder will look similar to the below after you’re done.

SSDTTime Results

Now, copy all the files that start with SSDT and end in .aml inside of the root of the Results folder to Drive/EFI/OC/ACPI.

Merging the OC patches using PatchMerge

Finally, merge patches_OC.plist by using the PatchMerge script included with SSDTTime. Run it the same way as SSDTTime.

PatchMerge

Press 1 to select the Config.plist created in an earlier step, then drag and drop your Config.plist onto the window, and press enter.

PatchMerge after selecting the Config.plist

Afterwards, press 2 to start the merging process.

PatchMerge after running the merge process

The modified Config.plist with the patches merged in will appear in the Results folder.

Check that it’s okay, then replace your original Config.plist with the newly generated one.