-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix for Hibernation (hibernatemode 25) on IceLake Surface devices #3
Comments
Man, you are amazing! Thank you so much for your work and detailed instruction! |
@jc-bao, thanks for the heads-up! Please check that this fix works on your setup as well. |
@jlempen Thank you so much for your amazing work! My current configuration can actually wake the laptop from sleep, but it still draws power from the battery. I will give it a shot tonight. |
@jc-bao It doesn't actually sleep, it only turns off the display and stays idle. That burns about 10% of power per hour... In real S3 sleep, you would loose only 2% over the whole night. |
And in Hibernation (hibernatemode 25), it doesn't draw any power, the device is basically turned off. |
Source: Surface-IceLake-macOS-Hibernation-Fix
Surface-IceLake-macOS-Hibernation-Fix
After many hours of tinkering, I finally found a way to fix ACPI S4 Hibernation (
hibernatemode 25
) on the i5 Surface Pro 7 on macOS 13.6.7 Ventura, 15-Inch i7 Surface Laptop 3 on macOS 14.5 Sonoma, i5 Surface Laptop Go 1 on macOS 13.6.7 Ventura and very likely on the Surface Book 3 (untested) as well. ACPI S3 Sleep (hibernatemode 0
) is still broken, though, but perhaps the Hibernation fix will lead the way to a full S3 Sleep fix at some point in the future.The key to the fix is to enable ACPI S3 Sleep in the DSDT. This is actually very easy and I'm stunned nobody tried this before. Searching for
_S3
in theDSDT.aml
file leads us to this:So to enable
_S3
,SS3
needs to returnOne
. Now searching forSS3
leads us to this:Enable ACPI S3 Sleep
Change
Name (SS3, Zero)
toName (SS3, One)
to enable ACPI S3 Sleep with the following ACPI patch inACPI -> Patch
:Before the rename, the system log shows:
After the rename, the system log shows:
and commands such as
pmset -g log
orpmset -g log | grep -e "Sleep.*due to" -e "Wake.*due to"
now clearly show that the device is entering sleep and (eventually) waking up from sleep.Add Reserved Memory region
This fix was found in Tyler Nguyen's x1c6-hackintosh repo. Thank you @benbender @1Revenger1 @savvamitrofanov and @vit9696!
Get rid of the black screen on Wake with the following Reserved Memory region in
NVRAM -> ReservedMemory
:Enable DiscardHibernateMap
This doesn't seem to be required on every Surface device, but at least on the Surface Laptop 3, it fixes a kernel panic on Wake.
Enable the following Booter Quirk in
Booter -> Quirks
:Set HibernateMode to NVRAM
In
Misc -> Boot
, setHibernateMode
toNVRAM
:I would also recommend enabling
HibernateSkipsPicker
inMisc -> Boot
:Add the GPRW instant wake patch
At least on the Surface Pro 7 and the Surface Laptop Go 1, the GPRW instant wake patch is required as well.
Add SSDT-GPRW.aml to the ACPI folder of your EFI. Then add
SSDT-GPRW.aml
toACPI -> Add
and the following ACPI patch toACPI -> Patch
in theconfig.plist
file:Enable hibernatemode 25 in macOS
Open the
Terminal
and enter the following commands, then reboot for the changes to take effect:If for whatever reason Hibernate is still not working on your system, you should reset the
Power Management
settings and rebuild thesleepimage
file. To do so, open theTerminal
and enter the following commands, then reboot for the changes to take effect:Once you are back in macOS, disable Sleep and enable Hibernate again, then reboot:
Fix broken Bluetooth on Wake from Hibernation
After the device wakes up from Hibernation, Bluetooth may be broken / unable to connect.
A very simple fix for this issue is to download and install Bluesnooze. Launch the app, enable
Launch at login
and you're done!A few comments / Help needed!
Hibernation seems to be working perfectly on my i5 / 8GB / 256GB Surface Pro 7 and i5 / 8GB / 256GB Surface Laptop Go 1 both running on macOS Ventura 13.6.7 with the SMBIOS
MacBookAir9,1
and using Xiashangning's BigSurface.kext v6.5. Everything comes back online after waking up from hibernation.However, my i7 / 16GB / 2TB WD SN770M 15-Inch Surface Laptop 3 running macOS Sonoma 14.5 with the SMBIOS
MacBookPro16,2
and with Xiashangning's BigSurface.kext v6.2 wakes up with a dead trackpad. I have yet to find a way to fix the dead trackpad.The main difference between the Surface Pro 7 or Surface Laptop Go 1 and the Surface Laptop 3 or Surface Book 3 is that on the former, the keyboard and trackpad are attached through USB, whereas on the latter, they are attached through a proprietary interface.
Both the Surface Laptop 3 and the Surface Book 3 are plagued by a nasty issue with the trackpad on macOS. Fixing the issue is possible, but requires downgrading the firmware to 13.101.140.0 and BigSurface.kext to 6.2, that's why it still runs with
BigSurface.kext
v6.2.The trackpad works with the latest
BigSurface.kext
v6.5, though, but the trackpad lags and skips every few seconds. Furthermore, tests show that theBigSurface.kext
v6.5 doesn't fix the dead trackpad after wake from hibernation.Playing around trying to unload the
BigSurface.kext
orVoodooSerial.kext
plug-in before hibernate and reloading it on wake from hibernate has been a dead end until now, as I'm unable to do so due to various errors with thekextstat
,kextunload
andkextload
commands in macOS.So, the first steps to troubleshoot the trackpad issue would be to downgrade macOS to 13.6.7 Ventura and change the SMBIOS back to
MacBookAir9,1
, but I must admit I'm not all too confident that would fix the dead trackpad after wake from hibernation. We would probably need to find someone who is able to fix theBigSurface.kext
and I'm not sure Xiashangning is still maintaining hisBigSurface
repo, as there hasn't been any activity for over a year now, since July 14th 2023.The text was updated successfully, but these errors were encountered: