How can I get EndevourOS to see the Nvidia GPU on my Dell XPS 7590?

I have been running EndevourOS on my main laptop for around two months now and it has been amazing. I have noticed tough that the only GPU that it sees is the “Mesa Intel(R) UHD Graphics 630 (CFL GT2)” but the machine also has an Nvidia Geforce GTX 1650 and I’d quite like to be able to use it if its possible.

Is there a way that I can get it to work? I understand that Nvidia/Linux can be troublesome but I thought I would ask.

Ideally, would it be possible to be able to switch between the two at will (I can on Windows)? When I’m programming my games, it would be great to be able to switch to it and then back to the intergrated GPU to save battery life etc.

Greetings,

This will be a bit of a long list, and not everything I mention you have to do, but it is highly encouraged to help ensure your system functions properly. Just please read everything here first (links included) before you make any changes; if you don’t follow the directions you may run into issues. Most of this information below was sourced directly from the EndeavourOS wiki, so don’t worry you’re in good hands. These directions assume you are running Xorg, if your running Wayland, then at the moment I would disregard this information as I have not yet tested Wayland with the following process, so please do keep that in mind. Now to begin!

To get NVIDIA proprietary drivers working so dedicated GPU is always ON:
(https://discovery.endeavouros.com/nvidia/nvidia-installer/2021/03/)
^IF drivers aren’t installed, follow this, otherwise skip to next step**

sudo pacman -S nvidia-installer-dkms

START HERE FOR NVIDIA DRIVERS: **Note this is relevant for Optimus users like myself
(https://discovery.endeavouros.com/nvidia/nvidia-optional-enhancements-and-troubleshooting/2021/03/)

You’ll want to force nvidia-drm.modeset=1, by adding it to the grub.cfg so to do that:

sudo nano /etc/default/grub

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="EndeavourOS"
GRUB_CMDLINE_LINUX_DEFAULT="nvidia-drm.modeset=1 quiet loglevel=3 nowatchdog"
GRUB_CMDLINE_LINUX=""

Make it look like that, save the file, ctrl+x, hit Y to save. Then rebuild the grub.cfg

sudo grub-mkconfig -o /boot/grub/grub.cfg

Next part to this, is force nvidia drivers to load on early boot (helps to prevent black screens before login screen)

sudo nano /etc/mkinitcpio.conf

# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(piix ide_disk reiserfs)
MODULES="nvidia nvidia_modeset nvidia_uvm nvidia_drm"

save the file, ctrl+x, hit Y to save and rebuild the mkinitcpio.conf

sudo mkinitcpio -P

Reboot and should be good to go!

For a bonus (you don’t have to do this if you don’t need to), in case you want to avoid screen tearing:

sudo nano /etc/X11/xorg.conf.d/20-nvidia.conf

Section "Device"
    Identifier "Nvidia Card"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    Option "NoLogo" "true"
EndSection

Section "Screen"
        Identifier      "nvidia"
        Option         "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
        Option          "TripleBuffer"                  "on"
        Option          "AllowIndirectGLXProtocol"      "off"
EndSection

save the file, ctrl+x, hit Y to save

Use a hook to make sure you do get kernel images to rebuild on updates:

sudo pacman -S nvidia-hook

**Final note, this was source mainly from the amazing EndeavourOS wiki, I just had it written all down in LibreOffice in case I ever needed to do a fresh install, I could be up and running quickly, instead of having to search all over the place again for solutions to problems I already fixed once, Good luck! :stuck_out_tongue:

Edit: I’ll also add this just in case it may also help. With optimus you can either have the intel graphics (no thanks!) or use the dedicated Nvidia graphics (yes please!). To get that to work, we have to do a bit more work, but it’s straightforward and simple enough!

Sourced from the following:
(https://discovery.endeavouros.com/nvidia/optimus-manager-for-nvidia/2021/03/)

yay -S optimus-manager

yay -S optimus-manager-qt

Reboot your system

Check optimus manager service (should be running)

systemctl status optimus-manager

If it’s not running, start and enable it:

sudo systemctl enable --now optimus-manager

Now open and use optimus-manager app to select from tray icon>settings>optimus tab> startup mode: NVIDIA and now whenever you start your system, it should default to always Nvidia ON. You can select other options from that list if you would prefer something also.

I’d also recommend using the LTS kernel, but this also works on the mainline 5.15 and Zen kernels as well.

3 Likes

As an alternative to optimus-manager you can use the native render offload feature of the NVIDIA driver:

https://wiki.archlinux.org/title/PRIME#PRIME_render_offload

2 Likes