NVIDIA

NVIDIA X Server

On Ubuntu (or other Linux distros), we don’t have default tools like NVIDIA control panel for managing certain GPU settings. Instead, the NVIDIA X server settings GUI and CLI tools allow customization of certain card properties and controlling different factors (like clock, fan speeds, etc). Primary tools include:

  • nvidia-smi: monitoring/management of cards, q
  • nvidia-settings: easy configuration of the graphics driver, communicating with the X driver. One of its primary jobs is to set certain settings and load/send settings from a config file to the X server.
  • nvidia-xconfig: easily manipulate X config files for NVIDIA drivers

Saving settings across X sessions

I’ve struggled for a bit now trying to figure out how to permanently set certain NVIDIA settings I’d like preserve each time I boot up my machine. I’ve been trying to manually change my ~/.nvidia-settings-rc file, and following the User guide for setting the fan speeds and downclocking settings I wanted. However, this would just be ignored by the NVIDIA settings and get overwritten each time I boot. Turns out this isn’t really the right way to go about things, and I could instead throw the settings I want to apply each time I boot directly into the ~/.xinitrc which is also calling the nvidia-settings --load-config-only command. Before this line, we could place fan settings like

nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=n"

or clock limits like

nvidia-settings -a "GPUGraphicsClockOffset[3]=-200"

Another option is to use a nicer GUI application like GreenWithEnvy. On Ubuntu, the app is not built directly for the distro, so you can make use of something easy like flatpak for installing. Run through the basic flatpak setup (adding the proper package remotes), reboot, and install. If there are some issues with an NVML error, try running flatpack update. Despite freshly installing flatpack, things didn’t work before I ran this command.