Skip to content

Instantly share code, notes, and snippets.

@bmcbm
Last active September 6, 2024 10:43
Show Gist options
  • Save bmcbm/375f14eaa17f88756b4bdbbebbcfd029 to your computer and use it in GitHub Desktop.
Save bmcbm/375f14eaa17f88756b4bdbbebbcfd029 to your computer and use it in GitHub Desktop.
NVIDIA Suspend fix
# Use systemd for managing NVIDIA driver suspend in drivers ====>>> PRIOR to version 470 <<<=====
# https://download.nvidia.com/XFree86/Linux-x86_64/450.66/README/powermanagement.html
# https://forums.developer.nvidia.com/t/unable-to-set-nvidia-kernel-module-parameters/161306
# Please note: In Fedora Linux you may need to just install the xorg-x11-drv-nvidia-power pakage
# as sugested by @goombah88 in the comments below.
TMP_PATH=/var/tmp
TMPL_PATH=/usr/share/doc/nvidia-driver-460/
echo "options nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=${TMP_PATH}" | sudo tee /etc/modprobe.d/nvidia-power-management.conf
sudo install --mode 644 "${TMPL_PATH}/nvidia-suspend.service" /etc/systemd/system
sudo install --mode 644 "${TMPL_PATH}/nvidia-hibernate.service" /etc/systemd/system
sudo install --mode 644 "${TMPL_PATH}/nvidia-resume.service" /etc/systemd/system
sudo install "${TMPL_PATH}/nvidia" /lib/systemd/system-sleep
sudo install "${TMPL_PATH}/nvidia-sleep.sh" /usr/bin
sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-hibernate.service
sudo systemctl enable nvidia-resume.service
@bilallamal07
Copy link

Can’t resume after suspend with 535 driver on OS: Linux Mint 21.3 x86_64
Kernel: 5.15.0-118-generic

l am experiencing an issue where your Linux Mint 21.3 system can’t resume after being suspended when using the nvidia-driver-535. with NVIDIA drivers on Linux systems. Let’s clarify the situation:

My system boots up normally with the NVIDIA driver installed.
When l put the computer to sleep (suspend mode), it appears to enter sleep mode successfully.

meaning When you try to wake the computer from sleep, it fails to resume properly. it stopped to resume with black screen with all system information displayed on the screen, then l need do nothing until I hard-restarted o options
this is very frustrating,

I’m happy to provide further information about the system

Thanks in advance for any assistance you can provide.

@inspiron:~$ nvidia-smi
Fri Aug 9 11:12:52 2024
±--------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 |
|-----------------------------------------±---------------------±---------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce GTX 960M Off | 00000000:02:00.0 Off | N/A |
| N/A 41C P8 N/A / 200W | 6MiB / 4096MiB | 0% Default |
| | | N/A |
±----------------------------------------±---------------------±---------------------+

±--------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1209 G /usr/lib/xorg/Xorg 2MiB |
±--------------------------------------------------------------------------------------+

inxi -Sx
System:
Host: Inspiron Kernel: 5.15.0-118-generic x86_64 bits: 64 compiler: gcc
v: 11.4.0 Desktop: Cinnamon 6.0.4 Distro: Linux Mint 21.3 Virginia
base: Ubuntu 22.04 jammy

inxi -Gx
Graphics:
Device-1: Intel HD Graphics 530 vendor: Dell driver: i915 v: kernel
bus-ID: 00:02.0
Device-2: NVIDIA GM107M [GeForce GTX 960M] vendor: Dell driver: nvidia
v: 535.183.01 bus-ID: 02:00.0
Device-3: Sunplus Innovation Integrated_Webcam_HD type: USB
driver: uvcvideo bus-ID: 1-4:3
Display: x11 server: X.Org v: 1.21.1.4 driver: X:
loaded: modesetting,nvidia unloaded: fbdev,nouveau,vesa gpu: i915
resolution: 1: 1600x90060Hz 2: 1600x90060Hz
OpenGL: renderer: Mesa Intel HD Graphics 530 (SKL GT2)
v: 4.6 Mesa 23.2.1-1ubuntu3.1~22.04.2 direct render: Yes

systemctl | grep nvidia
sys-bus-pci-drivers-nvidia.device loaded active plugged /sys/bus/pci/drivers/nvidia
nvidia-persistenced.service loaded active running NVIDIA Persistence Daemon

@chanh2018
Copy link

After so many trials I found a solution for myself. I'm not sure it'll work for yours but at least it's working for my system now.
Here' what I did:

  • Switch back to nouveau open source driver (if you're using proprietary driver)
  • Manually install Nvidia 550 driver ( sudo apt install nvidia-driver-550)
  • Reboot system and check if Nvidia 550 is installed
  • Create nvidia.conf file and add these lines into it (not sure about yours, but my system doesn't have this file)
  • nvidia.conf file will be in /etc/modprobe.d
    sudo nano /etc/modprobe.d/nvidia.conf
  • Add these lines into it:
    options nvidia-drm fbdev=1
    options nvidia NVreg_PreserveVideoMemoryAllocations=1
    options nvidia NVreg_TemporaryFilePath=/var/tmp
  • Reboot your system.
  • That's work for me

My system info:
Dell Optiplex 9020 Intel i7-4790 4GHz
Memory 16GBytes
Video card: Nvidia GeForce GTX 745
Kernel 6.8.0-41-generic
Linux Mint 22, Cinammon 6.2.9

(By the way, I tried this method on Nvidia driver 535 but it didn't work. Also, I got some ACPI errors before restart/shutdown, but not on start up, other than that, the system is running fine)
I hope this info help someone who is looking for a solution of not wake-up from suspend as mind.
Cheers !!!

@bilallamal07
Copy link

bilallamal07 commented Aug 22, 2024 via email

@bilallamal07
Copy link

After so many trials I found a solution for myself. I'm not sure it'll work for yours but at least it's working for my system now. Here' what I did:

  • Switch back to nouveau open source driver (if you're using proprietary driver)
  • Manually install Nvidia 550 driver ( sudo apt install nvidia-driver-550)
  • Reboot system and check if Nvidia 550 is installed
  • Create nvidia.conf file and add these lines into it (not sure about yours, but my system doesn't have this file)
  • nvidia.conf file will be in /etc/modprobe.d
    sudo nano /etc/modprobe.d/nvidia.conf
  • Add these lines into it:
    options nvidia-drm fbdev=1
    options nvidia NVreg_PreserveVideoMemoryAllocations=1
    options nvidia NVreg_TemporaryFilePath=/var/tmp
  • Reboot your system.
  • That's work for me

My system info: Dell Optiplex 9020 Intel i7-4790 4GHz Memory 16GBytes Video card: Nvidia GeForce GTX 745 Kernel 6.8.0-41-generic Linux Mint 22, Cinammon 6.2.9

(By the way, I tried this method on Nvidia driver 535 but it didn't work. Also, I got some ACPI errors before restart/shutdown, but not on start up, other than that, the system is running fine) I hope this info help someone who is looking for a solution of not wake-up from suspend as mind. Cheers !!!

l have tried this hack NVIDIA sleep script: /usr/bin/nvidia-sleep.sh

Adding exit 0 at the top of this script solved the problem.

This solution effectively bypasses the NVIDIA-specific sleep handling,
which was causing the suspend/resume issues. Here's how to implement this
fix properly many thanks :

Open the NVIDIA sleep script with sudo privileges:
sudo nano /usr/bin/nvidia-sleep.sh

Add exit 0 as the second line of the file,

#!/bin/bash
exit 0 <<---- This is the ;-) Hack

it worked for while, than the issue back again Can’t resume after suspend with 550 driver on OS: Linux Mint 21.3 x86_64
Kernel: 5.15.0-118-generic

Wed Sep 4 15:11:48 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.107.02 Driver Version: 550.107.02 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce GTX 960M Off | 00000000:02:00.0 Off | N/A |
| N/A 39C P8 N/A / 200W | 7MiB / 4096MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 1115 G /usr/lib/xorg/Xorg 2MiB |
+-----------------------------------------------------------------------------------------+

l have also tried

nvidia.conf file will be in /etc/modprobe.d # tried this not working for me
sudo nano /etc/modprobe.d/nvidia.conf
Add these lines into it:
options nvidia-drm fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp

No Joy ;-( still have the same issue any help or pointer that would be greatly appreciated

@chanh2018
Copy link

This is my current setting and it's working for me (Linux Mint 22, Nvidia GeForce GTX 745 using Nvidia 550.107.02 driver)

sudo nano /etc/modprobe.d/nvidia-graphics-drivers-kms.conf

and add these lines into it:

options nvidia-drm fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp

@wuqi001s
Copy link

wuqi001s commented Sep 6, 2024

The method works. In case you need fresh files install the services, you can get your driver version from NVIDIA. Use nvidia-smi to get the exact version and then run the .run file with --extract-only flag: sudo bash NVIDIA-Linux-x86_64-515.65.01.run --extract-only.该方法有效。如果您需要新文件,请安装服务,您可以从 NVIDIA 获取您的驱动程序版本。使用 nvidia-smi 获取确切版本,然后使用 .run 文件和 --extract-only 标志运行: sudo bash NVIDIA-Linux-x86_64-515.65.01.run --extract-only
Then you run the given commands setting the TMPL_PATH to the path where you've extracted the files. Keep in mind that the files for this driver (515.65.01) have a slightly different locations as stated in the original post. So the updated commands should be like this:然后,您运行给定的命令,将 TMPL_PATH 设置为您提取文件的路径。请记住,此驱动程序 (515.65.01) 的文件位置与原始帖子中所述略有不同。因此,更新后的命令应如下所示:

TMPL_PATH=/home/user/Downloads/NVIDIA-Linux-x86_64-515.65.01/systemd

sudo install --mode 644 "${TMPL_PATH}/system/nvidia-suspend.service" /etc/systemd/system
sudo install --mode 644 "${TMPL_PATH}/system/nvidia-hibernate.service" /etc/systemd/system
sudo install --mode 644 "${TMPL_PATH}/system/nvidia-resume.service" /etc/systemd/system
sudo install "${TMPL_PATH}/system-sleep/nvidia" /lib/systemd/system-sleep
sudo install "${TMPL_PATH}/nvidia-sleep.sh" /usr/bin

sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-hibernate.service
sudo systemctl enable nvidia-resume.service

535.183.01 works! thanks !535.183.01 有用!谢谢!

Sadly,it doesn't work for me.same is 535.183.01. Until now ,I have tried almost all methods ,no one work for me.It's so terrible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment