WHAT FUN I HAD trying to get Nvidia to undervlot.
Once again finding several guides that had to be pieced together.
The first half worked pretty quick, the power limit & frequency part.
Getting offset to work, AND RETAIN, is what took finding a random permission fix.
sudo nvidia-xconfig -a --cool-bits=31 --allow-empty-initial-configuration
sudo visudo
daddio ALL = (ALL) NOPASSWD: /usr/bin/nvidia-persistenced
daddio ALL = (ALL) NOPASSWD: /usr/bin/nvidia-smi
sudo nano /etc/X11/Xwrapper.config
allowed_users = anybody
needs_root_rights = yes
sudo chmod 2644 /etc/X11/Xwrapper.config
sudo nano /usr/local/bin/gpusettings.sh
#!/bin/bash
nvidia-smi -pm 1
nvidia-smi -i 0 -pl 270
nvidia-smi -i 0 -lgc 0,1800
DISPLAY=:0 XAUTHORITY=/run/user/1000/gdm/Xauthority nvidia-settings \
-a [gpu:0]/GPUGraphicsClockOffsetAllPerformanceLevels=200 \
-a [gpu:0]/GPUMemoryTransferRateOffsetAllPerformanceLevels=1000
sudo nano /etc/systemd/system/gpusettings.service
[Unit]
Description=GPU power limiter
After=network.target
After=display-manager.service
[Service]
User=root
ExecStart=/usr/local/bin/gpusettings.sh
Restart=on-failure
RestartSec=1
[Install]
WantedBy=multi-user.target
sudo chmod 744 /usr/local/bin/gpusettings.sh &&
sudo chmod 644 /etc/systemd/system/gpusettings.service
sudo systemctl daemon-reload && sudo systemctl enable gpusettings.service
sudo systemctl status gpusettings.service
Nvidia really doesn’t make it easy to change settings for basic overclocks
A day was spent daisy-chaining searching until it came to an answer.
Prints system info if you need to troubleshoot
nvidia-smi -i 0 -q
Prints system info for power & freqs of interest; make intro script for more fun!
#1/bin/bash
nvidia-smi -i 0 -q | grep -A1 'Voltage' && \
nvidia-smi -i 0 -q | grep -m1 'Graphics' && \
nvidia-smi -i 0 -q | grep -m1 'Power Draw'
xrandr -q
sudo nano /etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
Identifier "None-1-1"
Option "Ignore" "true"
EndSection
sudo nvidia-settings
sudo chmod u+x /usr/share/screen-resolution-extra/nvidia-polkit
nano ~/.config/monitors.xml
<mode>
<width>1920</width>
<height>1080</height>
<rate>60</rate>
</mode>