Can’t resume after suspend with 515 driver on Ubuntu 20.04

I’ve seen several variations on this question, but might as well ask my own up-to-date version.


  • Ubuntu 20.04
  • GPU: GeForce RTX 3090
  • Driver: 515.43.04

System boots with no issues - running graphics off of motherboard integrated graphics, only using GPU for compute (DL research).

Problem: I’m unable to resume from suspend. Only way I’m able to get the system back up is by doing a hard power off, power on. Don’t get the POST beep when I attempt to resume from suspend.

Looking at previous answers, this is not an upgrade from 470. Already purged all sytemctl processes related to suspend / hibernate / etc.

(base) matt@matt-MS-7D25:~$ systemctl | grep nvidia
  sys-bus-pci-drivers-nvidia.device                                                                       loaded active     plugged   /sys/bus/pci/drivers/nvidia                                                             
[nvidia-bug-report.log|attachment](upload://N2CnrXHAjznx3wZun6nCS8rEjw.log) (1.8 MB)
                                                                             loaded active     running   NVIDIA Persistence Daemon                                                               
● nvidia-powerd.service                                                                                   loaded failed     failed    nvidia-powerd service

I’ll take any advice I can! Novice to linux and Nvidia.

My system config is different from yours, but thought I’d suggest this just in case it helps you, since you said:

Already purged all sytemctl processes related to suspend / hibernate / etc.

My system:

  • Ubuntu 22.04
  • GPU: GeForce 980 Ti
  • Driver: 515.65.01

Probably the most important difference between our situations is that I’m using my nvidia card for video output, so I’m guessing you’ll want to cherry-pick from my steps below.

I tried tons of permutations of the suggested fixes I found online, and I think the suggestion to delete all nvidia suspend/hibernate services threw me off. Resuming from hibernate/suspend is finally working for me, and I have the following services:

~$ find /etc/systemd -iname nv*

If you only removed the symlinks from within the /etc/systemd directory, you can add them back like this:

sudo ln -s /lib/systemd/system/nvidia-hibernate.service /etc/systemd/system/systemd-hibernate.service.wants/nvidia-hibernate.service
sudo ln -s /lib/systemd/system/nvidia-resume.service /etc/systemd/system/systemd-hibernate.service.wants/nvidia-resume.service
sudo ln -s /lib/systemd/system/nvidia-suspend.service /etc/systemd/system/systemd-suspend.service.wants/nvidia-suspend.service
sudo ln -s /lib/systemd/system/nvidia-resume.service /etc/systemd/system/systemd-suspend.service.wants/nvidia-resume.service

The full process that finally got the 515 driver working properly for me

Below is the process that worked for me. Your mileage may vary. I’m using my swap partition for hibernate/resume. If you don’t need hibernate (just suspend), you can skip step 1.

  1. Add resume=UUID=<my_swap_uuid> to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub.

  2. Add nouveau.blacklist=1 to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub. So for me, that line looks like this:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<my_swap_uuid> nouveau.blacklist=1"

  3. Run sudo update-grub so that the changes take effect on the next boot.

  4. Remove everything nvidia-related (this is probably excessive, but I was frustrated):

sudo apt remove -y --purge '^nvidia-.*'
sudo apt autoremove -y $(dpkg -l xserver-xorg-video-nvidia* | grep ii | awk '{print $2}')
sudo apt remove -y libnvidia-compute-* linux-objects-nvidia-* linux-signatures-nvidia-*
sudo apt autoremove -y
sudo rm /etc/modprobe.d/nvidia-power-management.conf
  1. Remove and blacklist the Nouveau driver (again, some of this is probably excessive/redundant):
sudo apt remove --purge xserver-xorg-video-nouveau
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" && sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
  1. Install nvidia driver version 515:
    sudo ubuntu-drivers install nvidia:515

  2. Add /etc/modprobe.d/nvidia-power-management.conf:
    sudo bash -c "echo options nvidia NVreg_PreserveVideoMemoryAllocations=1 > /etc/modprobe.d/nvidia-power-management.conf"

  3. Back up and update initramfs:

sudo cp /boot/initrd.img-$(uname -r) ~/initrd.img-$(uname -r)_backup
sudo update-initramfs -uv
  1. Reboot with fingers crossed.
1 Like

Really appreciate the response Chris, I was giving up hope here. I’ll have to try this over a weekend and provide any updates I can to help other users.

Hello, Chris!

I have tried the tutorial you have laid above, step by step on a fresh Ubuntu 22.04.1 install with the same version of Nvidia drivers as yours.

I have a GTX 1050M

I have found your solution after trying all the solutions mentioned in the GitHub link, but sadly the tutorial found here only lead me to a new and different issue.

I am using the Nvidia card only for graphics.

I have been trying to solve the hibernation issue for a couple days now and it has legitimately driven me crazy.

Hibernation by writing in terminal “systemctl hibernate” works flawlessly, but when battery is drained, it cycles 3 times trying to hibernate without succes and displays the same error 3 times (“failed to suspend async error -5… Some devices failed to suspend or early wake up event detected”) Afterwards it either draws the lock screen and is unresponsive or just black screen and unresponsive ,but plugging power cable in and out provides sound, probably video driver causing the issue >:(. I will upload a video of that happening.

I could not find anyone with similar situation and a similar error and I am still a fresh user of Ubuntu, only experienced with windows trouble shooting :(.

Please update us if you find a different solution for this in the future.

It worked, thank you so much!

Chris, you are a legend!

I struggled so hard after upgrading to Ubuntu 22.04, and tried a lot of stuff, but your solution was the only that worked.