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
.
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.
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.
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 to1
on the first CPU core, enablingX86PlatformPlugin
, which allows for CPU and GPU power management (support varies). It also redefines the processors withProcessor
objects instead ofDevice
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 nativeNVRAM
support. -
RTCAWAC
Disables the new
AWAC
(Alarm Wake ACPI Clock) and enables theRTC
(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.
Copying the AML files from the Results folder
The Results
folder will look similar to the below after you’re done.
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
.
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.
Afterwards, press 2
to start the merging 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.