ArchLinux nvidia-settings ERROR: Unable to load info from any available system

It is not possible to launch the settings application because of this error.

~ $ nvidia-settings

ERROR: Unable to load info from any available system

Also, the device appears to be Off when executing this command

~ $ nvidia-smi
Wed Jan 29 23:15:36 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.44       Driver Version: 440.44       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 960M    Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   56C    P0    N/A /  N/A |      0MiB /  4043MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

I have fully upgraded all packages as you can see here:

pacman -Qs libgl
local/lib32-libglvnd 1.3.0-2
    The GL Vendor-Neutral Dispatch library
local/lib32-mesa 19.3.2-1
    An open-source implementation of the OpenGL specification (32-bit)
local/lib32-nvidia-utils 440.44-1
    NVIDIA drivers utilities (32-bit)
local/libglade 2.6.4-6
    Allows you to load glade interface files in a program at runtime
local/libglvnd 1.3.0-2
    The GL Vendor-Neutral Dispatch library
local/mesa 19.3.2-2
    An open-source implementation of the OpenGL specification
local/nvidia-utils 440.44-3
    NVIDIA drivers utilities
~ $ pacman -Qs nvidia
local/lib32-nvidia-utils 440.44-1
    NVIDIA drivers utilities (32-bit)
local/libvdpau 1.3-1
    Nvidia VDPAU library
local/libxnvctrl 440.44-1
    NVIDIA NV-CONTROL X extension
local/nvidia 440.44-15
    NVIDIA drivers for linux
local/nvidia-settings 440.44-1
    Tool for configuring the NVIDIA graphics driver
local/nvidia-utils 440.44-3
    NVIDIA drivers utilities

Please advise. Here is some more info on my system:

~ $ uname -a
Linux NICO 5.4.15-arch1-1 #1 SMP PREEMPT Sun, 26 Jan 2020 09:48:50 +0000 x86_64 GNU/Linux
~ $ lspci -k | grep -A 2 -E "(VGA|3D)"
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
        DeviceName: Intel Skylake HD Graphics ULT GT2
        Subsystem: Hewlett-Packard Company HD Graphics 530
--
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)
        DeviceName: NVIDIA N16P-GX
        Subsystem: Hewlett-Packard Company GM107M [GeForce GTX 960M]

I will also include the tar file with logs
Thanks in advance.
nvidia-bug-report.log.gz (295 KB)

Your GPU isn’t actually connected to any display devices. It’s just there as a graphics coprocessor. If you want to use it for graphics then you need to configure one of the so-called “PRIME” modes:

  1. Configure a "PRIME display offload" setup where everything is rendered on NVIDIA and sent over to Intel for display. Documentation here: https://download.nvidia.com/XFree86/Linux-x86_64/440.44/README/randr14.html
  2. Configure a "PRIME render offload" setup where most things on your desktop are rendered on the Intel GPU and you can choose to render specific applications on the NVIDIA GPU. Documentation: https://download.nvidia.com/XFree86/Linux-x86_64/440.44/README/primerenderoffload.html
  3. If your laptop's firmware menu has an option for it, you might be able to switch the display over to the NVIDIA GPU.

Your X server is already new enough so using the render offload configuration should just be a matter of enabling the AllowNVIDIAGPUScreens option and then setting the environment variables for apps you want to run on the NVIDIA GPU.

The interface for nvidia-smi is a little confusing… the “Off” there is referring to persistence mode, which is fine. “P0” means that it’s in its highest performance mode.

Thanks a LOT. I went with option 1 since my card supports Optimus and followed the steps in that link. That did it. It works now.