Open jlempen opened 1 month ago
So I fixed the dead trackpad on wake from hibernate on the Surface Laptop 3
and on the Surface Book 3
as well.
The issue was actually an issue in VoodooI2CHID which was fixed by https://github.com/VoodooI2C/VoodooI2CHID/commit/89fa5b64c1fc38b4b370d45c7ad0d8d632e3b86c
Now the interesting thing is that the latest BigSurface v6.5
forked and built with the above commit fixes the dreaded Trackpad lagging/skipping bug as well after the first hibernate/wake cycle following the laptop's boot into macOS.
What this means is that in theory, Surface Laptop 3
and Surface Book 3
users should now be able to update their firmware through Windows Update and still have a smooth trackpad experience on macOS, provided they go through a hibernate/wake cycle after booting macOS. This still requires thorough testing, though, and I'm quite confident I should be able to fix this issue in the coming weeks.
I also built the older BigSurface v6.2
with the above commit and with this version, the Surface Laptop 3
has a buttery smooth trackpad right from startup and also after wake from hibernate, provided the user follows this procedure to downgrade the firmware of their Surface Laptop 3 or Surface Book 3.
I would be glad if a few Surface Laptop 3
and Surface Book 3
users could try those test builds and report back.
Edit: both kexts updated with the VoodooInput.kext v1.1.5 for macOS Sequoia Beta 5 compatibility:
@jlempen Amazing work! Will let you know after testing it out on SL3.
Doing god's work for our devices, thanks a lot man.
@jlempen btw ReservedMemory is in UEFI, not NVRAM as per your guide.
I tried your kext v6.5, I had to update the VooodoInput.kext with the new patch for Sequoia, and the trackpad and keyboard does not work after a hibernate cycle.
@ROCKERLIQUID
ReservedMemory is in UEFI, not NVRAM as per your guide.
Corrected, thanks!
I tried your kext v6.5, I had to update the VooodoInput.kext with the new patch for Sequoia, and the trackpad and keyboard does not work after a hibernate cycle.
Thanks for the information. I'll have a look at it later on, once Sequoia goes out of Beta and once I've fixed the trackpad issues on SL3 and SB3 running Ventura and Sonoma.
But it's already good to know that hibernation seems to work on your device running Sequoia Beta!
BTW, is your Surface a Laptop 3 or a Book 3?
@jlempen
BTW, is your Surface a Laptop 3 or a Book 3?
Surface Laptop 13" i5-1035G7.
@jlempen Just tried your method on my SL3 i7 machine with firmware 6.2 and Ventura. It works perfectly! One thing I'm not so sure about is the instant wake-up. For me, I still have to wait a few seconds before it wakes up. And when waking from sleep, I see the Microsoft logo. I'm not sure if that's normal, although I have included GPRW. I'm curious about your experience with SL3. Here is my EFI.
Another minor issue I'm experiencing is that the machine sometimes overheats, which never happened on my i5 SL3. I'm wondering if @jlempen @ROCKERLIQUID can control the fan speed or change the power plan.
Overall, kudos to @jlempen for the great work!
@jc-bao
One thing I'm not so sure about is the instant wake-up. For me, I still have to wait a few seconds before it wakes up. And when waking from sleep, I see the Microsoft logo. I'm not sure if that's normal
Hibernate is not like sleep: when your device goes into hibernate mode, it saves the content of the RAM to a file on the SSD and turns off completely. That's why you have to press the power button to wake it up. Then it goes through the normal startup sequence (MS logo with red padlock), then OpenCore silently launches macOS which reloads the content of the RAM from the hibernation file on the SSD. This all takes around 10 seconds.
I'm afraid we will probably never going to fix normal sleep with instant wakeup for Surface devices, as Micro$oft does not support ACPI S3 sleep anymore.
So you can either enable hibernatemode 25
with 0% battery drain during hibernation but 10 seconds to wake up, or enable hibernatemode 0
with a battery drain of around 10% per hour but instant wake working, as it basically only turns off the display...
Another minor issue I'm experiencing is that the machine sometimes overheats, which never happened on my i5 SL3. I'm wondering if @jlempen @ROCKERLIQUID can control the fan speed or change the power plan.
I have both an i5 13" SL3 and an i7 15" SL3 and have no overheating issues on neither device, but it would be worth investigating if changing the SMBIOS from MacBookPro16,2
to MacBookAir9,1
prevents your i7 from overheating. I also run my devices with the Low Power Mode
preference in macOS set to Always
.
You could also make your own CPUFriendDataProvider.kext
and optimize power saving settings with the help of CorpNewt's CPUFriendFriend app.
BTW, when the Surface devices are charging, they heat up quite a lot and thus the fan is almost always spinning.
I don't know if there's a way to control the fan, I'll have to investigate this as well 😀
@jc-bao
I just checked my EFI for the i7 SL3, I also use the SMBIOS MacBookPro16,2
like you, so your overheating issue is apparently not related to the SMBIOS...
@jlempen, thank you so much for the information! I think hibernate is enough to make the machine usable for daily task. I think Low Power Mode
is definitely a solution. I don't know why my machine sometimes goes up to 40W when plugged in, but overall, the Hackintosh is almost perfect thanks to your efforts. I really appreciate the great job you've done!
Another minor issue I'm experiencing is that the machine sometimes overheats, which never happened on my i5 SL3. I'm wondering if @jlempen @ROCKERLIQUID can control the fan speed or change the power plan.
I live in South Asia where the climate is almost always hot, and my Surface always throttles in Windows and in MacOS, the dreaded 0.4ghz lock when BD-PROCHOT gets triggered even under light load.
Solution was to download a BD-PROCHOT disabling EFI driver and it works beautifully ever after. Ofcourse, battery life gets a huge hit which was never good on MacOS anyways.
And don't worry the laptop still shuts down if it gets too hot, but I have never experienced it as MacOS knows how to handle these CPUs well.
Solution was to download a BD-PROCHOT disabling EFI driver and it works beautifully ever after. Ofcourse, battery life gets a huge hit which was never good on MacOS anyways.
I see. 😂 Seems it is a common issue for surface. Thanks a lot for the solution!
I have tried this with my SL3 i7, and have tried to follow all steps, but when returning from hibernation the screen "glitches", pixelated and in inverted colors, and then turn off.
I have tried a lot of configurations to be able to output image through the USB-C port (to a dock connected with DisplayPort) so I am looking in that direction as I have a lot of various WhateverGreen entries.
As @jc-bao have shared EFI, I am currently matching my own configuration with this. But one question before I do a deep dive into my own EFI - does display output work on your machines?
I have downgraded the SL3 firmware and am currently running the BigSurface62 kext. What is currently working (which I have struggled with) is Display output through USB-C What is not working is waking from hibernation (and also not able to boot with USB-C display output connected)
@ROCKERLIQUID
I tried your kext v6.5, I had to update the VooodoInput.kext with the new patch for Sequoia, and the trackpad and keyboard does not work after a hibernate cycle.
I updated OC and all kexts a few moments ago and run into the same issue now, no keyboard and trackpad on wake from hibernate.
So it's not related to Sequoia or the new VoodooInput.kext (as I haven't updated mine yet), but rather to some other kext updated recently, perhaps Lilu or WhateverGreen, I'll have to investigate, as Acidanthera updated a whole bunch of kexts two days ago.
I've encountered this issue on an i5 SL3 13" running Ventura and my test version of BigSurface 6.5
@tashda
I have tried this with my SL3 i7, and have tried to follow all steps, but when returning from hibernation the screen "glitches", pixelated and in inverted colors, and then turn off.
Is this happening on the internal display of your SL3? The pixelated and inverted colors can happen sometimes on wake from hibernate, but usually it's simply black until the lock screen appears. Is the device really turning off, or is the screen just black? You can easily test this by enabling "Play feedback when volume is changed" and hitting the volume keys when the display turned off. Does the Fn
key on the keyboard light up when you press it once your display turns off?
Perhaps there's something wrong with your ReservedMemory patch under UEFI -> ReservedMemory
:
Comment: Fix hibernate mode 25 black screen on wake
Address: 569344
Size: 4096
Type: RuntimeCode
Enabled: true
If that's not it, I would suggest clearing and cleaning your NVRAM and restoring the sleepimage file:
Open the Terminal
and enter the following commands, then reboot for the changes to take effect:
sudo pmset restoredefaults
sudo pmset -a hibernatemode 25
If for whatever reason Hibernate is still not working on your system, you should reset the Power Management
settings and rebuild the sleepimage
file. To do so, open the Terminal
and enter the following commands, then reboot for the changes to take effect:
sudo rm /Library/Preferences/com.apple.PowerManagement*
sudo rm /var/vm/sleepimage
sudo pmset hibernatefile /var/vm/sleepimage
Once you are back in macOS, disable Sleep and enable Hibernate again, then reboot:
sudo pmset restoredefaults
sudo pmset -a hibernatemode 25
I have downgraded the SL3 firmware and am currently running the BigSurface62 kext. What is currently working (which I have struggled with) is Display output through USB-C What is not working is waking from hibernation (and also not able to boot with USB-C display output connected)
Once you get hibernation working, please update to my test version of BigSurface v6.2 which fixes the dead trackpad on wake from hibernate: https://github.com/Xiashangning/BigSurface/issues/127#issuecomment-2261648714
As @jc-bao have shared EFI, I am currently matching my own configuration with this. But one question before I do a deep dive into my own EFI - does display output work on your machines?
@tashda My built-in display works well after wake up. But there are two remaining issues: 1. when i connect to external display with type-c, i have to close the lid and reopen it to make built-in screen work, otherwise i can only see the external display. 2. i also have a surface dock but the mini-dp doesn't work. I am curious if you have done any specific configuration for that? I think people have reported that mini-dp on surface dock does not work, wondering what's your work around.
btw, i have updated my efi to support sonoma. could you try the latest one and see if you can make it work?
I have tried a lot of configurations to be able to output image through the USB-C port (to a dock connected with DisplayPort) so I am looking in that direction as I have a lot of various WhateverGreen entries.
I can confirm this just happened to me. I find close the lid and reopen it could work. But it does not happen every time. So weird. Never have this issue with old whatevergreen and ventura.
I am running Sonoma 14.6. I am looking at your EFI for inspiration - copying EFI from others is the worst gift you can get yourself :)
I am currently running @jlempen 6.2 BigSurface kext, with downgraded firmware, and have the correct ReservedMemory patch.
The biggest problems I am experiencing right now 1) Kernel panic upon boot 1st time it boots, second time is OK 2) When I close the lid and open back up and press power, the screen is black - the picture then quickly shows, and is black again. When I am not doing anything on the computer and it hibernates, it works fine again when I press the power button (with the inverted pixelated screen at first).
As I am no expert in these types of things, I am currently trying to at least make the pc work again after lid has been closed and opened again - I suspect WhateverGreen to be the cause of this, but when I tried to remove dpcd-max-link-rate from my config.plist (data 14000000), it panicked when booting, so I am still looking.
@tashda
To me, the best choice would be running Ventura which is way more stable.
For the Kernel panic thing in the first boot, I can confirm that. Wondering if @ROCKERLIQUID has encountered the same issue. Actually what I did is press the power button, wait for a while until it boots with blank screen, then close the lid for about 2s, then open it, it shall work. That is so weird.
1 doesn't for me on Sequoia but weirdly I remember those on Sonoma. 2 yeah, I had to do the lid close technique, IIRC it could be fixed with the right darkwake boot-args.
Actually what I did is press the power button, wait for a while until it boots with blank screen, then close the lid for about 2s, then open it, it shall work. That is so weird.
Gotcha! When I do this, it works. Can connect display through USB-C immediately after hibernation, but when I do the "double dip" of the lid it works on internal display as well.
Working here as well now :) Good to know there's at least 4 of us still using SL3 with OC
@tashda @jc-bao @ROCKERLIQUID I think it's time we start with a common base, so I'm setting up a triple boot Ventura-Sonoma-Sequoia Beta 5 on my i5 Surface Laptop 3 13" with the stock 256GB SK Hynix SSD running on the latest firmware from Microsoft and my test version of BigSurface v6.5 with the VoodooInput.kext submodule updated to v1.1.5 so it works on Sequoia as well.
Then, probably tomorrow, I'll send you guys my EFI which doesn't give me any trouble with kernel panics on start (yet).
Right now, Ventura is working nicely but with a choppy trackpad, working hibernation and broken keyboard/trackpad on wake from hibernate. I'm almost sure that the broken things are due to the fact that I didn't downgrade the UEFI firmware on this machine yet. I'm really starting to think that the only reliable way to have the SL3 and SB3 working perfectly is by downgrading the UEFI to the last known good version as explained in my thread here.
I remember that I had a few kernel panics on reboot every time I would change something to my EFI folder, but usually the panic would go away after a second reboot. I use a single EFI for both my i5 13" and i7 15" Surface Laptop 3's and I don't know if this EFI supports an external display through the USB-C port, as I don't have the hardware to test.
@ROCKERLIQUID
I tried your kext v6.5, I had to update the VooodoInput.kext with the new patch for Sequoia, and the trackpad and keyboard does not work after a hibernate cycle.
Please try one of my updated BigSurface
v6.2 or v6.5 test builds from this comment:
https://github.com/Xiashangning/BigSurface/issues/127#issuecomment-2261648714
The updated versions include the VoodooInput.kext
v1.1.5 for macOS Sequoia Beta 5 compatibility
If your trackpad and keyboard don't work after a hibernate cycle, it's either because you tried one of my older test build which included the older VoodooInput.kext
v1.1.3 or your SL3's firmware hasn't been dowgraded to UEFI firmware version 13.101.140.0
(or Windows auto-updated the firmware again).
@ROCKERLIQUID @jc-bao @tashda
So this week-end I set up a Surface Laptop 3
and a Surface Book 3
each with a Ventura-Sonoma-Sequoia triple-boot to test my updated test versions of BigSurface
v6.2 and v6.5:
BigSurface v6.2 for SL3 and SB3.zip
BigSurface v6.5 for SL3 and SB3.zip
Here's my conclusions:
Surface Laptop 3
and the Surface Book 3
need to have their UEFI firmware downgraded to version 13.101.140.0
in order to have a working trackpad and keyboard upon wake from hibernationhibernatemode 25
by following my howtoBigSurface
v6.2BigSurface
v6.5In a nutshell, downgrade the UEFI firmware to 13.101.140.0
, setup hibernatemode 25
as described here and use my fork of BigSurface v6.2 for SL3 and SB3 on macOS Ventura, Sonoma or even Sequoia to get a flawless experience on the Surface Laptop 3
and Surface Book 3
.
The latest Beta 5 of macOS Sequoia works quite well, but you'll have to use itlwm.kext v2.3 and the HeliPort v1.5 app to get Wifi working.
I'm still trying to fix the choppy trackpad on boot with BigSurface
v6.5.
For some odd reason, the only way to install macOS on the Surface Book 3
running with the latest UEFI firmware is to disable graphics acceleration by adding the -igfxvesa
boot argument to the config.plist
or the display craps out when booting the installer. Once installed, you may enable graphics acceleration again by removing the -igfxvesa
boot-arg.
@jlempen Great job! I am wondering do you also have the same kernel panic when boot for the first time to the Sonoma as @tashda and I have experienced?
Hi guys, first I would like to thank all of you for your continuous passion in hackintosh for Surface! @jc-bao @ROCKERLIQUID @tashda, and especially @jlempen. It's true that I am unfortunately not in procession of Surface Pro 7 for almost a year :( However, as now I managed to once again get my hands on my old surface device back home, I will first take a look at all issues and your conversations above to get myself updated. Then I will see what I can do.
Also, would you mind if I invite you as the collaborator of this repo? @jlempen So that you can directly contribute to this project for Surface Laptop devices!
Hey @Xiashangning, very glad you're back! I hope you are well!
Hi guys, first I would like to thank all of you for your continuous passion in hackintosh for Surface!
Thank YOU for your tremendous work on the BigSurface
kext!
Also, would you mind if I invite you as the collaborator of this repo? @jlempen So that you can directly contribute to this project for Surface Laptop devices!
Please do, I'd be very happy to contribute to your repo. I'm by no means a programmer like you, and BigSurface
is a very complex piece of code. But by playing around and bisecting the code I found a few ways to improve the macOS experience on some Surface devices.
By the way, I own every IceLake Surface device (I bought most of them for under 200 Euros on the second hand market here in Switzerland), SP7, SLGO, SL3 and SB3, so I'm able to test everything on anything :-)
In a nutshell, here's what's been improved since the release of BigSurface
v6.5:
Surface Laptop 3
and Surface Book 3
(https://github.com/Xiashangning/BigSurface/issues/79#issuecomment-2208484390)As macOS Sequoia could very well be the last version of macOS running on Intel machines, my aim is to provide a version of BigSurface
which works on all or at least all the latest (i.e. IceLake) Surface devices running macOS Sequoia.
Right now, Surface Pro 7
and Surface Laptop Go
devices work perfectly on Ventura, Sonoma and Sequoia with BigSurface
v6.5, as long as the VoodooInput.kext
submodule is replaced with the latest v1.1.5 from Acidanthera.
Surface Laptop 3
and Surface Book 3
devices work perfectly on Ventura, Sonoma and Sequoia, provided that their UEFI firmware is downgraded to the last known working version 13.101.140.0
following this procedure and the BigSurface
kext is downgraded to v6.2.
Moreover, I just discovered that the skipping/lagging trackpad issue on the Surface Laptop 3
and Surface Book 3
is due to the upgraded SurfaceSerialHub
and SurfaceSerialHubDevices
code in commit https://github.com/Xiashangning/BigSurface/commit/538bf71cdb1984c28c7975b0549f2a23e7f63349.
Building BigSurface
v6.5 with this PR merged and the SurfaceSerialHub
and SurfaceSerialHubDevices
code downgraded to the code from commit https://github.com/Xiashangning/BigSurface/commit/8fe7f68ca885c337ea5c495ebca180f1bb2c1d03 works perfectly on my SL3 and SB3 and allows users to enjoy your touchscreen improvements by installing your IPTSDaemon v1.4.
My ultimate goal would be to find which piece of code in SurfaceSerialHub
and SurfaceSerialHubDevices
is responsible for the skipping/lagging trackpad issue on SL3 and SB3 and why those Surface devices have a dead trackpad and keyboard after wake from hibernation if their UEFI firmware is more recent than 13.101.140.0
. Finding answers to these questions would make it easier for non hackintosh-savvy users to enjoy macOS on their SL3 or SB3, as they wouldn't need to downgrade their UEFI firmware and use a special build of BigSurface
.
Anyway, welcome back @Xiashangning and thanks for all your help and great work!
@jlempen Great job! I am wondering do you also have the same kernel panic when boot for the first time to the Sonoma as @tashda and I have experienced?
@jc-bao
I have not experienced any kernel panic on boot on my SL3 and SB3. I did experience a few random kernel panics when browsing for a while in Firefox. Those KP's were fixed by using the igfxfw=2
Whatevergreen boot-arg to force loading the Apple GuC firmware.
Did you have a look at the panic log which could give you some hints on what's causing the panic? When you reboot after the kernel panic, macOS will ask you if you want to create and send a panic log to Apple. By clicking on Report...
you may view the panic log and then you can dismiss sending the report to Apple.
But I would suspect either an unsupported SSD (perhaps you have a Samsung SSD) or something wrong with your iGFX settings.
Please have a look at my config.plist for the 15-Inch i7 Surface Laptop 3: EFI_SL3_i7_15inch.zip
I have a Surface laptop go, sleep works well with AOAC patch, also by adding the boot-arg igfxfw=2; but another issue is the display output, when plugging the cable, the pc just reboot
This thread has nothing to do with the
BigSurface
kext per se, but I post it here nevertheless as it might be of interest to anyone using an IceLake Surface device.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 on the Surface Book 3 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
UEFI -> 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 is 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. Fixed, see comment below.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 trackpadThe 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 latestBigSurface.kext
v6.5, though, but the trackpad lags and skips every few seconds.Furthermore, tests show that the.BigSurface.kext
v6.5 doesn't fix the dead trackpad after wake from hibernationPlaying around trying to unload theBigSurface.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.