Set Coolbits on Nvidia GPU without nvidia-xconfig or xorg.conf (Dual GPU AMD/Nvidia system)
My system has 2 GPU's, my main display card, which is AMD, and a compute card, which is Nvidia. I want to overclock or change the fan curve of my Nvidia card without breaking my AMD card - using nvidia-xconfig results in it writing the following:
Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce RTX 3090"
EndSection
Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "Coolbits" "28" SubSection "Display" Depth 24 EndSubSection
EndSectionThen, I cannot boot up with my AMD GPU, all I see is a grey screen. Is there a way to set coolbits without modifying the xorg.conf so that I cannot boot? I have tried adding coolbits to /usr/share/X11/xorg.conf.d/10-nvidia.conf to no avail. Is it possible to either modify xorg.conf so that coolbits is enabled but that the AMD GPU also functions, or alternatively, do this without using xorg.conf?
Thanks.
51 Answer
Here is my xorg.conf with radeon as dual display and nvidia as gpu card:
Section "ServerLayout" Identifier "layout" Screen 0 "radeon" Screen 1 "nvidia"
EndSection
Section "Device" Identifier "radeon" Driver "radeon" Option "TearFree" "on" BusID "PCI:8:0:0"
EndSection
Section "Screen" Identifier "radeon" Device "radeon"
EndSection
Section "Device" Identifier "nvidia" Driver "nvidia" BusID "PCI:6:0:0"
EndSection
Section "Screen" Identifier "nvidia" Device "nvidia" Option "AllowEmptyInitialConfiguration" "True" Option "UseDisplayDevice" "none" Option "Coolbits" "12"
EndSectionReplace anything taggued "radeon" with your display settings.
Replace the BusIDs with your cards BusIDs with one of the following commands:
$ nvidia-xconfig --query-gpu-info
$ lspci | grep VGAWith that configuration, I was unable to set the fan speed for the GPU card through the nvidia-settings command.
For that, we have to trick Xorg into thinking a display is connected to the GPU card.
Extract an EDID file (Extended Display Identification Data) from your current monitor and place it in your xorg.conf folder:
$ sudo apt install read-edid
$ sudo get-edid -m 0 > edid.binMy final xorg.conf "Screen" config with all the Coolbits you can have and a fake monitor looks like:
Section "Screen" Identifier "nvidia" Device "nvidia" Option "AllowEmptyInitialConfiguration" "True" Option "UseDisplayDevice" "none" Option "Coolbits" "28" Option "ConstrainCursor" "off" Option "ConnectedMonitor" "DFP-0" Option "CustomEDID" "DFP-0:/usr/share/X11/xorg.conf.d/edid.bin"
EndSectionFor more GPUs, add new Screens to the "ServerLayout" section and define pairs of "Device" and "Screen" sections for your additional cards.
2