Fixing broken suspend on Pop_OS


My Linux laptop used to suspend perfectly. I'd close the lid and it would go to sleep. Open it up, it would spring to life - presenting me with a password screen. But, some time in the last few months, it has stopped doing that.

If I close the lid, it keeps running. This is unhelpful.

If I manually run the suspend command - systemctl suspend - the laptop blanks the screen then immediately turns it back on at the lock screen. It doesn't suspend.

I know that suspend physically works - becasue running any of these other command does properly suspend the machine. But powering it back up goes straight to the desktop - no lock screen!

  • sudo /lib/systemd/systemd-sleep suspend
  • sudo echo "mem" > /sys/power/state
  • sudo acpitool -s

The Fix

I found what was causing suspend to fail by running:

  • sudo systemd-analyze verify systemd-suspend.service

That spat out any errors in the suspend service. Highlighted in red was:

systemd-suspend.service: Failed to create systemd-suspend.service/start: Unit nvidia-resume.service is masked.

That was odd, because I don't have an Nvidia graphics card.

Looking in the relevant directory:

cd /etc/systemd/system/systemd-suspend.service.requires

I found:

nvidia-resume.service -> /lib/systemd/system/nvidia-resume.service
nvidia-suspend.service -> /lib/systemd/system/nvidia-suspend.service

I deleted the nvidia-resume.service and nvidia-suspend.service files.

For good measure, I also checked what Nvidia stuff I had installed:

  • apt list --installed | grep -i nvidia

I used sudo apt purge to remove the remnants of any Nvidia stuff. Probably installed by mistake.

After that, suspend worked fine.

What "Fixes" Didn't Work

I went down a bit of a rabbit hole, following lots of suggestions from various people on the Internet. None of these helped me - but they may be useful pointers to you.

I tried disabling everything in /proc/acpi/wakeup. I couldn't get PXSX to be disabled. But even with everything else off, the suspend didn't work.

Killing Bluetooth with rfkill block bluetooth didn't work. Nor did disabling WiFi.

I have an updated Kernel 6.8.0. I'm not sure of the ramifications of swapping to an older one.

Running sudo kernelstub -a mem_sleep_default=deep and then rebooting didn't make a difference.

Switching from Wayland to X11 didn't fix it. Nor did unplugging the laptop from power. No external peripherals or screens were connected.

The whole system - including Flatpaks and Snaps - was updated.

This shell script works. But there's no way to tie it in to having the power button pressed or the lid closed.


Share this post on…

  • Mastodon
  • Facebook
  • LinkedIn
  • BlueSky
  • Threads
  • Reddit
  • HackerNews
  • Lobsters
  • WhatsApp
  • Telegram

5 thoughts on “Fixing broken suspend on Pop_OS”

  1. @blog yeah nvidia on linux needs a lot of work. I have an nvidia machine running fedora and I had somewhat the opposite problem as you: when I shut the lid the laptop would suspend but when I opened it it would only wake for 30 seconds and then suspend again. Nothing I could do would permanently wake the machine and I would have to reboot every time.

    The fix ended up being a kernel param to "wake on lid" or something like that. Oh nvidia... I won't be buying that brand again.

    | Reply to original comment on billys.mom
  2. ePoxi says:

    Same problem arise when Pop_OS! updated the to Kernel 6.8.x. My laptop (T14s Gen1) do not woke up after suspend. And if it does, there's no video... Have to go back to good-old kernel 5.19.0-50-generic to get suspend working again.

    /etc/systemd/system/systemd-suspend.service.requires is not present in my system either.

    I relay on suspend for my day to day work... so it's kind of a problem for me not having it working.

    Reply
    1. @edent says:

      You need to ask on the official Pop OS forum. This is just a random blog which cannot help you diagnose the issue.

      Reply

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">