This section contains fixes for resolving common issues related to Sleep and Wake, occurring especially on but not limited to Laptops. The following areas are covered:
PTSWAKTTS
: Comprehensive Sleep and Wake fix
This SSDT is the center piece for fixing most sleep and wake issues and is used in conjunction with other patches in this section. It consists of binary renames and an ACPI Hotfix (SSDT).
- The methods
_PTS
(Prepare To Sleep),_Wak
(Wake) and_TTS
(Transition to State) are renamed to something else via binary renames. - SSDT-PTSWAKTTS re-defines the original methods and if any of them are triggered (either automatically by the sleep timer, by pressing the sleep/power button or via the Menu), it fetches these events and takes care of sleep/wake (in conjunction with additional SSDTs).
Note
SSDT-PTSWAKTTS.aml has to be loaded prior to some of the other Hotpatches in this section. Details about each patch are provided in the README
of the corresponding fix.
Fixing PNP0C0E Sleep
This patch is required if pressing the Power or Sleep button causes an instant reset or shutdown. In order for this to work, it must be used in conjunction with SSDT-PTSWAKTTS.
Fixing instant wake issues: 0D/6D Patch
This patch is for fixing instant wake issues, where the system instantly wakes up which after entering sleep. This is usually caused by components/devices prohibiting the system to enter sleep/hibernation state.
Fixing AOAC Sleep
These patches are used for fixing sleep and standby issues on more recent Laptops utilizing Always on always connected (AOAC
) technology.
Configuring ASPM
ASPM (Active State Power Management), is a power link management scheme supported at system level. Under ASPM management, PCI devices attempt to enter power saving mode when they are idle. You can modify the Active Power State of peripherals like Bluetooth/WiFi or other devices if they interrupt sleep.
Changing Hibernation Modes
pmset
commands for changing settings related to system power management, such as sleep/hibernation.
- Before applying any of these hotfixes, make sure that you are not using generic ACPI tables from Dortania or the OpenCore Package as provided, since they often contain additional devices, device names and paths to cover various scenarios at once (e.g.
SSDT-PLUG
). Instead, tailor them to your system's specific requirements or generate your own using SSDTTime. This alone can prevent sleep and wake issues. - Check Dortania's Post-Install guide for additional info about Fixing Sleep Issues
- Acidanthera provides a kext which addresses issues with hibernation, called HibernationFixup.
- In-depth look into Darkwake, what it does (and what it doesn't do).
- While researching how these fixes work, I found out that the SSDTs and binary renames used in this section are basically "reverse engineered"
DSDT
patches created by RehabMan included in maciASL's DSDT patching engine. They are also available on his "Laptop DSDT Patch" Repo:- Sleep and Wake fixes: https://github.com/RehabMan/Laptop-DSDT-Patch/tree/master/system
- 0D/6D fixes: https://github.com/RehabMan/Laptop-DSDT-Patch/tree/master/usb
- Lid fixes: https://github.com/RehabMan/Laptop-DSDT-Patch/tree/master/misc