How to make Fedora 44 suspend to S0 instead of S3?

quick specs for clarity: Asus F16 FX607VU; Intel Core 5 210H, RTX4050M.

hey, finally bothered to switch from Windows a couple hours ago.

was going smoothly until i tried to put it in sleep mode. from what i can see, it goes into S3 instead of S0 (or Modern Standby).
this is an issue, because suspending in S3 causes my computer to be unable to wake up, ignoring power button and keyboard input, as the CPU physically doesn’t support it.

any (preferably easy) way of making it default to S0?

Check what is supported: cat /sys/power/mem_sleep

You want to see something like

┌─🎩 lurcher .config on  master [✘!?] +510−5814
├─
└─➜ cat /sys/power/mem_sleep                                                                                                                                                                                                                                                             ⏱️ 17s 11:59 Sat 30-May
File: /sys/power/mem_sleep
s2idle [deep]

Value in [] is the current setting, s2idle is what you’re after.

Test by adding mem_sleep_default=s2idle to the kernel parameters

Assuming that works as expected, then you can use grubby to make it permanent.

no need to reboot for a test.
echo s2idle | sudo tee /sys/power/mem_sleep works as well to switch

I would start by trying to figure out why normal suspend is not working - I don’t believe it is correct to say that the CPU doesn’t support it. More likely is that there is a bug somewhere.

First thing I suggest confirming is that the firmware is up to date, as buggy firmware can cause issues with power management features.

Also, I see that your system has a NVIDIA GPU - did you install the NVIDIA driver? If so, how did you do it? Did you use the instructions at RPM Fusion?

Lastly, having more details could help with troubleshooting. Details from a tool like inxi or fpaste would help: What is fpaste and how can I use it?

p.s. interesting choice of bold formatting.

cat /sys/power/mem_sleep
[s2idle] deep

although my CPU seems to only support S0, so i feel like deep being listed it not correct. and even then, fails to sleep correctly.

from what i can find on the internet, modern mobile Intel CPU’s (including the 210H) physically don’t support S3 for some reason. pretty sure im on the latest BIOS as of writing this
the driver itself was installed using dnf install akmod-nvidia

Actually you’re right. Though it’s not so much about the CPU itself, but a laptop manufacturer firmware and Microsoft thing with them encouraging modern standby adoption.

In any case, based on the command output, you have the opposite problem: Your laptop uses s2idle by default, instead of S3 (deep). And for some reason, that modern standby method is buggy on your system.

If you’ve confirmed that you have the latest BIOS, then I suggest checking the logs to see if there’s any hints on what’s failing. Put your system in standby, try to wake it, it should fail. Then boot it back up and check the previous boot’s logs with journalctl -b -1. Towards the end, you should see some power management related entries, hopefully it will capture something useful.

You can also try Mark’s suggestion but in reverse: set it to deep instead, and see if that happens to be supported after all.
I’d also look through your BIOS settings to see if there’s anything power management related that you can adjust and experiment with.
Lastly, NVIDIA has some power management configuration that you can try: Chapter 21. Configuring Power Management Support
(And if your BIOS allows you to disable the NVIDIA dGPU, I would do that as a test, to check if this is issue is GPU related.)

tried journalctl after undoing my friend’s fix of disabling sleep completely


not sure if this means anything. will try to make it enter deep instead of s2idle.

edit:
tried making it enter deep, same result.

These screenshots are the start of the log. We need the end part, where the suspend (and restore) attempts happen. Scroll down to the very end, or use this command to show the full thing in one shot: journalctl -b -1 --no-pager

Then look for this line: kernel: PM: suspend entry (s2idle)
Because this won’t be the only relevant power management entry in the log where the process starts, you’ll want to scroll up a bit to the first entry that starts at the exact same time as the line above, and copy the whole thing from there to the end of the log and paste it here into a codeblock (wrap the text with ``` at the start and end for better formatting.)

And by the way, I see that you have secure boot enabled. When you installed the NVIDIA driver, did you do the secure boot key enrolment steps? Because if not, you are probably not actually running the NVIDIA driver right now, which could be a cause for issues like this. Check if your NVIDIA driver is running with nvidia-smi.

Post this at text please.

Too small to read easily, unsearchable and impossible to cut/paste to comment upno or draw attention to specific parts.

I agree but want to add that it should be posted as preformatted text. Paste the text then highlight it and click the </> button on the toolbar of the text entry window. This retains the formatting as seen on-screen and if not used lines wrap and formatting is all scrunched up.