Nvidia-settings incomplete on optimus laptop

I have downloaded Nvidia drivers on my ThinkPad P1 Gen 2 laptop with Fedora 33 using this tutorial. Now my nvidia-settings behaves very weird. I really want to use the nvidia PRIME feature since I have a laptop with integrated and discrete graphics. I am using X11.

This is how the GUI looks:
image

This is the error that it shows when running it from the terminal (it also shows above GUI):

➜ ~ nvidia-settings

(nvidia-settings:21181): GLib-GObject-CRITICAL **: 21:02:25.552: g_object_unref: assertion ‘G_IS_OBJECT (object)’ failed

** (nvidia-settings:21181): CRITICAL **: 21:02:25.554: ctk_powermode_new: assertion ‘(ctrl_target != NULL) && (ctrl_target->h != NULL)’ failed

Some info that you might need:

➜ ~ modinfo nvidia
filename: /lib/modules/5.10.13-200.fc33.x86_64/extra/nvidia/nvidia.ko
alias: char-major-195-*
version: 460.39
supported: external
license: NVIDIA
srcversion: 88778FD9C7BD9CA16708044
alias: pci:v000010DEdsvsdbc03sc02i00
alias: pci:v000010DEdsvsdbc03sc00i00
depends:
retpoline: Y
name: nvidia
vermagic: 5.10.13-200.fc33.x86_64 SMP mod_unload
parm: NvSwitchRegDwords:NvSwitch regkey (charp)
parm: NvSwitchBlacklist:NvSwitchBlacklist=uuid[,uuid…] (charp)
parm: nv_cap_enable_devfs:Enable (1) or disable (0) nv-caps devfs support. Default: 1 (int)
parm: NVreg_ResmanDebugLevel:int
parm: NVreg_RmLogonRC:int
parm: NVreg_ModifyDeviceFiles:int
parm: NVreg_DeviceFileUID:int
parm: NVreg_DeviceFileGID:int
parm: NVreg_DeviceFileMode:int
parm: NVreg_InitializeSystemMemoryAllocations:int
parm: NVreg_UsePageAttributeTable:int
parm: NVreg_RegisterForACPIEvents:int
parm: NVreg_EnablePCIeGen3:int
parm: NVreg_EnableMSI:int
parm: NVreg_TCEBypassMode:int
parm: NVreg_EnableStreamMemOPs:int
parm: NVreg_EnableBacklightHandler:int
parm: NVreg_RestrictProfilingToAdminUsers:int
parm: NVreg_PreserveVideoMemoryAllocations:int
parm: NVreg_EnableS0ixPowerManagement:int
parm: NVreg_S0ixPowerManagementVideoMemoryThreshold:int
parm: NVreg_DynamicPowerManagement:int
parm: NVreg_DynamicPowerManagementVideoMemoryThreshold:int
parm: NVreg_EnableUserNUMAManagement:int
parm: NVreg_MemoryPoolSize:int
parm: NVreg_KMallocHeapMaxSize:int
parm: NVreg_VMallocHeapMaxSize:int
parm: NVreg_IgnoreMMIOCheck:int
parm: NVreg_NvLinkDisable:int
parm: NVreg_EnablePCIERelaxedOrderingMode:int
parm: NVreg_RegisterPCIDriver:int
parm: NVreg_RegistryDwords:charp
parm: NVreg_RegistryDwordsPerDevice:charp
parm: NVreg_RmMsg:charp
parm: NVreg_GpuBlacklist:charp
parm: NVreg_TemporaryFilePath:charp

➜ ~ lspci -vnnn | grep VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation CoffeeLake-H GT2 [UHD Graphics 630] [8086:3e9b] (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117GLM [Quadro T1000 Mobile] [10de:1fb9] (rev a1) (prog-if 00 [VGA controller])

➜ ~ dnf list installed | grep nvidia
akmod-nvidia.x86_64 3:460.39-1.fc33 @rpmfusion-nonfree-nvidia-driver
kmod-nvidia-5.10.10-200.fc33.x86_64.x86_64 3:460.39-1.fc33 @@commandline
kmod-nvidia-5.10.11-200.fc33.x86_64.x86_64 3:460.39-1.fc33 @@commandline
kmod-nvidia-5.10.13-200.fc33.x86_64.x86_64 3:460.39-1.fc33 @@commandline
nvidia-settings.x86_64 3:460.39-1.fc33 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia.x86_64 3:460.39-1.fc33 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-kmodsrc.x86_64 3:460.39-1.fc33 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-libs.i686 3:460.39-1.fc33 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-libs.x86_64 3:460.39-1.fc33 @rpmfusion-nonfree-nvidia-driver

Please run nvidia-bug-report.sh as root and attach the resulting nvidia-bug-report.log.gz file to your post.

I cannot edit my post anymore, but here it is: nvidia-bug-report.log.gz (125.4 KB)

This happens when NV driver doesn’t load properly which usually happens when secure boot is enabled on said system due to signature issues.

Unfortunately, secure boot is already turned off…

The driver is actually loaded, also into the Xserver, in render offload mode. So it’s a bit odd why nvidia-settings doesn’t display the gpu.
Please post the output of
xrandr --listproviders
and

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor
➜  ~ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x43 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 1 associated providers: 1 name:modesetting
Provider 1: id: 0x29e cap: 0x2, Sink Output crtcs: 4 outputs: 3 associated providers: 1 name:NVIDIA-G0

➜  ~ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation

Ok, looks like render offload is correctly working, so you could run any application on the nvidia gpu by prepending

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia

If you want the nvidia gpu to be always active, please do the config changes explained in the chapter
NVIDIA PrimaryGPU Support of
https://rpmfusion.org/Howto/Optimus

Still don’t know why nvidia-settings is misbehaving, i guess that can be ignored for now.

Yes it works! Thank you a lot! Weird that nvidia-settings doesn’t work correctly, cause I want certain apps to always use nvidia. This works perfectly for now!

This is a known problem since … ever. If you use only Nvidia card without prime, settings will work, if you use prime they will not work since technically nvidia card is not running X so there is no display attached (I mean display as Xorg understand display).

Not anymore, this was changed with the introduction of render offloading. nvidia-settings is displaying less options but infos about gpu and powermizer settings.