Nvidia-settings access on headless Ubuntu 20.04


I have been struggling to figure out the correct configuration for a headless setup involving a 2080ti in eGPU over Thunderbolt. I can configure the device to run CUDA code, and get/set information in nvidia-smi, but I would like to configure clocks and such over nvidia-settings. I’ve been able to cleanly install the latest drivers, even attempting with --no-opengl-files, but there has been no change.

I’m running this machine headless but using an HDMI dummy plug. The machine is an Intel/AMD iGPU setup - NUC8i7HVK. When I plug the dummy plug into the 2080ti, I see a display in the gdm display settings, but am unable to extend or otherwise use the display. Only plugging the plug into the 2080ti results in a black screen on VNC. There seems to be a lot of threads on this, including how to run via setting DISPLAY=:0... (/tmp/.X11unix only contains X0).
Attached are the .conf’s from /usr/share/X11/xorg.conf.d/, the bug report script output, and console output from nvidia-settings and


There has to be something I’m missing here to get this config to work, I just can’t see it. Separately, I question why settings such as mem clocks must be dependent on X, when SMI is not… But that’s another can of worms. This works on Windows… Attached are my configs, logs, etc. Thanks in advance for any help!

10-nvidia.conf (223 Bytes)(upload://hHtquTKRrMDTns8iSgLlLxSNIRk.conf) (149 Bytes) nvidia-bug-report.log.gz (291.0 KB) nvsettings.log (2.3 KB)

Adding extra files to get around upload limit …10-amdgpu.conf (93 Bytes) 11-nvidia-offload.conf (149 Bytes) nvidia-drm-outputclass.conf.log (489 Bytes)

The nvidia gpu is in render offload mode where clock/fan settings are disabled. You have to configure Xorg to run a screen on the nvidia gpu, like

Section "ServerLayout"
    Identifier     "layout"
    Screen      0  "amd" 0 0
    Screen      1  "nv"

Section "Monitor"
    Identifier     "Monitor0"

Section "Device"
    Identifier     "nvidia"
    Driver         "nvidia"
    BusID          "PCI:12:0:0"
    Option         "AllowEmptyInitialConfiguration"
    Option         "Coolbits" "28"

Section "Screen"
    Identifier "nv"
    Device "nvidia"

Section "Device"
    Identifier "amd"
    Driver "amdgpu"
    BusID "PCI:1:0:0"

Section "Screen"
    Identifier     "amd"
    Device         "amd"
    Monitor        "Monitor0"

When logged in, running
DISPLAY=:1.1 nvidia-settings
should display more options.

The missing piece here is that you can’t use xorg “OutputClass” to define your devices, and you must manually define the “ServerLayout”, "Screen"s and “Monitor”. These can be placed in the corresponding 10-*.conf files instead of an xorg.conf (just for posterity sake). The only other issue I seem to have now is that the settings don’t actually get applied… There is some grumbling about DRI3 and DRI2 permissions in EGL followed by a “success” - that doesn’t persist. I remember a thread somewhere on this, I’ll need to find it. It could also be due to not installing the glx libraries since I ran this “headless” (which shows an error in the xorg logs, “glxserver_nvidia”). If you have some insights, I’d appreciate it, or I’ll keep sleuthing. Thank you!

Update: Yes, you must install the full drivers, even though you may be tempted to install without the opengl files. nvidia-settings will not work at all without the opengl installed as well, even in command line mode. nvidia sure has odd dependencies, just to allow managing temperature and clocks…