[HOW TO] Install the latest Nvidia driver on Zorin OS 16.x/17.x & Pop! OS 21.04/24.04

Install the latest Nvidia driver on Zorin OS 16/17 & Pop! OS 21.04/24.04: People with legacy cards (+/- 10 years old) needs legacy drivers (390.xxx.x) and also needs to downgrade the kernel to 5.15.xx. For legacy drivers i would advice to use the drivers released by your distro.

  1. Download the official Nvidia Driver and place it in the home folder

Optional: you can rename the NVIDIA-Linux-x86_64-565.57.01.run driver to 1.run. I personally use 1.run because i don't want to write the whole nvidia name into the terminal. In the tutorial below i use the original name from nvidia, it's up to you what you want to use.

  1. The file needs permission to be executed, you can do this by 2 ways. The first one is by terminal, the second one by right clicking on the file (NVIDIA-Linux-x86_64-565.57.01.run) and change the permission of the file.

For option one: Open the terminal and write:

chmod +x ./NVIDIA-Linux-x86_64-565.57.01.run

For option two: See the picture below (enable execute below)
IMG_7823

  1. Install the build essential package, those are needed for the nvidia driver.
    Write in the terminal:

sudo apt install build-essential libglvnd-dev pkg-config

  1. Blacklist the Nouveau Nvidia driver otherwise the nvidia driver does not work proper. Write in the terminal:

sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

Write in the terminal:

sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

  1. Check if the nouveau driver is blacklisted.
    Write in the terminal:

cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf

  1. If everything is done
    Write in the terminal:

sudo update-initramfs -u

Step 7 is for Zorin OS users, Pop! OS already comes with dkms installed

  1. Install dkms, this is needed so you don't need to reinstall the nvidia driver anymore after a kernel upgrade. Write in the terminal:

sudo apt-get install dkms

  1. Now we are going to install the nvidia driver. We switch to text mode. Write in the terminal:

systemctl set-default multi-user.target

  1. Now we have to reboot the system. Write in the terminal:

reboot

  1. Now we have booted into text mode. Login with your username and password.
  2. When your logged in we are going to remove/delete older nvidia drivers. Write:

sudo apt remove --purge ^nvidia-.*

  1. When the purge is done write:

sudo apt-get autoremove

Optional: This will uninstall traces of the older nvidia driver. Just to make sure the purge was done correctly.

sudo ./NVIDIA-Linux-x86_64-565.57.01 --uninstall

  1. Install the nvidia driver. Write:

sudo ./NVIDIA-Linux-x86_64-565.57.01.run

  1. Follow the instructions (hit everything on yes).

*** If you encounter a error while installing about “failed building kernel modules” don’t panic. You have to install a newer GCC version. You can follow this tutorial after you rebooted back to your system. I followed the steps till step 5 from medium 2.

  1. When the installation is done we need to have root access, write:

sudo -i

  1. Now you have to write this to get your desktop enviroment back:

systemctl set-default graphical.target

  1. Now we are going to reboot the system, write

reboot

  1. To confirm the driver is working open nvidia x server settings (save the configuration file too), if the driver is not in use it will open a blank screen. In terminal write:

sudo lshw -c display

  1. When the configuration says "configuration: latency=0" you have to disable secure boot in the bios (Zorin OS users).

Voilla, you have installed your nvidia driver manually.

Update the nvidia driver manually on Zorin OS and Pop! OS: This only works when you installed the driver manually before (Post 1).

  1. Download the official Nvidia Driver and place it in the home folder

Optional: you can rename the NVIDIA-Linux-x86_64-565.57.01.run driver to 1.run. I personally use 1.run because i don't want to write the whole nvidia name into the terminal. In the tutorial below i use the original name from nvidia, it's up to you what you want to use.

  1. The file needs permission to be executed, you can do this by 2 ways. The first one is by terminal, the second one by right clicking on the file (NVIDIA-Linux-x86_64-565.57.01.run) and change the permission of the file.

For option one: Open the terminal and write:

chmod +x ./NVIDIA-Linux-x86_64-565.57.01.run

For option two: See the picture below (enable execute below)
IMG_7823

  1. Open up the terminal and write

systemctl set-default multi-user.target

  1. Now we are going to reboot the system, write

reboot

  1. Now we have booted into text mode. Login with your username and password.

  2. Install the new nvidia driver. The old files will be deleted automatically. Write:

sudo ./NVIDIA-Linux-x86_64-565.57.01.run

  1. Follow the instructions (hit everything on yes)

  2. When the installation is done we need to have root access, write:

sudo -i

  1. Now you have to write this to get your desktop enviroment back:

systemctl set-default graphical.target

  1. Now we are going to reboot the system, write

reboot

A little Suggestion:

Maybe it would be good to mark the Option on this Picture because it isn't English (Is this dutch?). So, the People would directly know where to Look.

1 Like

Good suggestion, i did some tweaks in post 1 and 2.

Old thread got deleted on my request because people had issues with it. Did some tests on my old acer notebook, the old tutorial was still accurate BUT the newer nvidia drivers had to use a newer GCC version. If the newer GCC version whas not installed the nvidia driver could not install their kernel modules.

Tutorial should work now for everyone.

1 Like

A new nvidia driver has been released (550.135). It can be downloaded here

Release highlights:

  • In Linux kernel 6.11, drm_fbdev_generic was renamed to drm_fbdev_ttm.Use drm_fbdev_ttm when present to keep supporting direct framebufferaccess needed for Wayland compositors to present content on newerkernels.
  • In linux-next commit 446d0f4849b1, output_poll_changed is removedfrom struct drm_mode_config_funcs. Do not implement the functionpointer member when not present to ensure the driver can compile withnewer kernels. The driver now supports enumerating modes on hotplugevents through the DRM fbdev API.
  • Updated the kernel module build process to use CONFIG_CC_VERSION_TEXTfrom the Linux kernel's Kconfig to detect the compiler used to buildthe kernel. This may help select the correct compiler on systems wherethe kernel was built with a compiler other than the default one.
  • Fixed a bug that prevented kernel modules linked using precompiledkernel interface files from loading on recent Debian systems.
1 Like

A new nvidia driver has been released (565.77). It can be downloaded here

Highlights since R565 Beta Release, 565.57.01

  • Fixed a bug in i2c handling that caused the OpenRGB Application to set incorrect LED colors on some NVIDIA GPUs. NVIDIA I2C driver issues · Issue #41 · NVIDIA/open-gpu-kernel-modules · GitHub
  • Changed the fallback preference from 10 BPC YUV422 to 8 BPC RGB + dithering when enabling HDR scanout with limited display bandwidth.
  • Fixed a bug that could cause the nvidia-settings control panel to crash when using X11 forwarding on some systems.
  • Added a new application profile key, "GLVidHeapReuseRatio", to control the amount of memory OpenGL may hold for later reuse, as well as some application profiles for several Wayland compositors using the new key to work around issues with excessive video memory usage.
  • Fixed a bug that could lead to crashes when a Vulkan application waits on a VkFence created by importing a DRM syncobj. This solves some crashes observed with Unreal Engine and other applications on Wayland.
  • Fixed a bug that could cause KDE Plasma 6 to crash when running as a Wayland compositor.
  • Fixed a bug that would cause the driver stack to fail to load the correct state of a Quadro Sync board when GSP is enabled. This would lead to inaccuracies in reporting framelock state when using house sync or stereo signals.
  • Updated the kernel module build process to use CONFIG_CC_VERSION_TEXT from the Linux kernel's Kconfig to detect the compiler used to build the kernel. This may help select the correct compiler on systems where the kernel was built with a compiler other than the default one.
  • Fixed a bug that prevented kernel modules linked using precompiled kernel interface files from loading on recent Debian systems.
  • Improved the ability of nvidia-modprobe to detect whether kernel modules are already loaded. This corrects an issue that prevented nvidia-persistenced from setting persistence mode on some systems.

Highlights from R565 Beta Release, 565.57.01

  • Fixed a bug that could cause suspend/resume to fail when using the NVreg_PreserveVideoMemoryAllocations option: Suspend doesn't work when PreserveVideoMemoryAllocations is enabled · Issue #472 · NVIDIA/open-gpu-kernel-modules · GitHub
  • Fixed a bug that caused the cursor image to be truncated on Gamescope: gamescope cursor in not render correctly · Issue #1099 · ValveSoftware/gamescope · GitHub
  • Re-enabled GLX_EXT_buffer_age on Xwayland. This extension had been previously disabled on Xwayland due to a bug which is now fixed.
  • Added support for mmap of exported DMA-BUF objects.
  • Reduced some cases of stutter with OpenGL syncing to vblank while using GSP firmware.
  • Fixed a regression that could cause some applications to exit due to resource exhaustion on some GPUs while using GSP firmware.
  • Added several new per-plane and per-CRTC vendor-specific properties to nvidia-drm. These properties may be used by Wayland compositors to program the GPU's color pipeline for HDR hardware acceleration.
  • Introduced a driver optimization to mitigate the performance loss from the 'd3d9.floatEmulation' option in DXVK.
  • Fixed a bug that caused FarCry 5 running through DXVK to display a black screen.
  • Updated the framelock settings page of the nvidia-settings control panel to use the GTK3 theme text color rather than defaulting to white for the text color, improving legibility with some themes.
  • Fixed some performance regressions that were observed with vkd3d-proton 2.9.
  • Fixed a bug that could cause flickering in some applications when using Unified Back Buffer (UBB).
  • Fixed a bug which could cause incorrect and/or washed out colors to be displayed with HDR scanout: 482780 – Incorrect color gamut with HDR enabled
  • Implemented support for VK_EXT_depth_clamp_control.
  • Fixed a bug which could cause applications using GBM to crash when running with nvidia-drm.modeset=0.
  • Fixed a bug that could cause kernel crashes upon attempting KMS operations through DRM when nvidia_drm was loaded with modeset=0.

Just discovered the nvidia drivers can be installed with terminal too instead of rebooting into "systemctl set-default multi-user.target"

A new nvidia driver has been released (550.142). It can be downloaded here

Release highlights:

  • Minor bug fixes and improvements

A new nvidia driver has been released (550.144.03). It can be downloaded here

Release highlights:

  • Minor bug fixes and improvements

More info: NVIDIA release new GPU driver updates for Linux and Windows after announcing security issues | GamingOnLinux

570.86.10 changelog:

* Fixed a bug that caused the nvidia-settings control panel to crash
      when querying VRR attributes on some monitors.

    * Updated the nvidia-settings control panel to use NVML rather than
      NV-CONTROL to control GPU clocks and fan speed. This allows related
      functionality to work when using Wayland, where the NV-CONTROL X
      extension is not available. Note that as a result, some operations
      which were previously available to unprivileged users, due to the
      privileges of the X server, may now require elevated privileges.

    * Added support for VRR on systems with multiple displays.

    * Added an application profile to improve performance on Indiana Jones
      and the Great Circle.

    * Added an application profile to resolve a corruption issue on
      Assassin's Creed Valhalla and Assassin's Creed Mirage.

    * Implemented support for the VK_KHR_incremental_present extension.

    * Fixed a bug that could cause some Vulkan applications to crash when
      responding to window resize events.

    * Updated GPU overclocking control to be available by default in
      nvidia-settings, for GPU boards that support
      programmable clock control.  Previously, this was only available
      when bit 3 was set in the "Coolbits" X config option.

    * Disabled a power saving feature on Ada and above generation GPUs
      for surfaces allocated with the DRM Dumb-Buffers API, for example,
      when using a DRM fbdev. The power saving feature could cause black
      screens for DRM Dumb-Buffers which use front buffer rendering instead
      of KMS flips.

    * Fixed a bug that could cause some multi-threaded OpenGL applications,
      for example Civilization 6, to crash when running on Xwayland.

    * Added support for querying Dynamic Boost status via the 'power' file
      in /proc/driver/nvidia/gpus/*.

    * Enabled 32 bit compatibility support for the NVIDIA GBM backend.

    * Added a new kernel module parameter, 'conceal_vrr_caps', to the
      nvidia-modeset kernel module. This parameter may be used to enable
      usage of features on some displays such as ULMB (Ultra Low Motion
      Blur) which are incompatible with VRR. See the "Direct Rendering
      Manager Kernel Modesetting" (DRM KMS) chapter of the README for
      further information.

    * Fixed a bug that could cause games to crash when the
      "PROTON_ENABLE_NGX_UPDATER" environment variable was set to a value of "1".

    * Added /usr/share/nvidia/files.d/sandboxutils-filelist.json
      which lists all the driver files used by container runtime 
      environments such as nvidia-container-toolkit and enroot.

    * Added support for the systemd suspend-then-hibernate method of system
      sleep. This feature requires systemd version 248 or newer.

    * Enabled the nvidia-drm fbdev=1 option by default. When supported by the
      kernel and the nvidia-drm modeset=1 option is enabled, nvidia-drm will
      replace the system's framebuffer console with one driven by DRM.

      This feature can be disabled by setting fbdev=0.

    * Implemented a feature that allows low latency display interrupts to
      be serviced even when the system is under heavy contention. This
      is especially useful for reducing stutter when using virtual reality.

      This feature is experimental and disabled by default.

      This feature can be enabled by loading nvidia.ko with the
      `NVreg_RegistryDwords=RMIntrLockingMode=1` kernel module parameter.

Update:
Download Link here

Will install it on my Acer Predator G9-793-71SJ in a hour or 2 and post a screenshot. This driver seems a good one for wayland.

Edit 2: Installation went fine.
Installing using the terminal.


Older driver get uninstalled.

Finished setup, reboot and voilla.

The driver has a updated CUDA version compared to the 565.77 driver + all the issues i had on the acer notebook are gone (when you boot and don’t login the screen becomes black, if you login after (let’s say 10-15 min) the computer kept showing a black screen. Suspend seems to work too as far of the tests i did. This newer driver fixed it and i really hope Pop! OS will add this one very fast in their repo. If not i will do a manual install on the MSI notebook too.

Nvidia released the 470.86.15 officially on their site. However it is listed as "Data Center Driver". In this video i show you that this is totally BS

1 Like

I love how your computer sounds like a futuristic motorcycle. When you did the installation process, it sounded like you activated warp speed. We've now entered cruise, the city lights have blended into a blur were going so fast. JK HEHE

Plus, I love your pretty wallpaper too! It literally speaks to me. :purple_heart:

Good instructional, a bit too much work for me though, I'll continue to wait till its released in additional drivers. But for those who need that driver right away, they can follow your guide. :blush:


1 Like

Nvidia driver 570.86.16 got released today

Release highlights:

  • Fixed a bug that caused the nvidia-settings control panel to crash when querying VRR attributes on some monitors.
  • Updated the nvidia-settings control panel to use NVML rather than NV-CONTROL to control GPU clocks and fan speed. This allows related functionality to work when using Wayland, where the NV-CONTROL X extension is not available. Note that as a result, some operations which were previously available to unprivileged users, due to the privileges of the X server, may now require elevated privileges.
  • Added support for VRR on systems with multiple displays.
  • Added an application profile to improve performance on Indiana Jones and the Great Circle.
  • Added an application profile to resolve a corruption issue on Assassin's Creed Valhalla and Assassin's Creed Mirage.
  • Implemented support for the VK_KHR_incremental_present extension.
  • Fixed a bug that could cause some Vulkan applications to crash when responding to window resize events.
  • Updated GPU overclocking control to be available by default in nvidia-settings, for GPU boards that support programmable clock control. Previously, this was only available when bit 3 was set in the "Coolbits" X config option.
  • Disabled a power saving feature on Ada and above generation GPUs for surfaces allocated with the DRM Dumb-Buffers API, for example, when using a DRM fbdev. The power saving feature could cause black screens for DRM Dumb-Buffers which use front buffer rendering instead of KMS flips.
  • Fixed a bug that could cause some multi-threaded OpenGL applications, for example Civilization 6, to crash when running on Xwayland.
  • Added support for querying Dynamic Boost status via the 'power' file in /proc/driver/nvidia/gpus/*.
  • Enabled 32 bit compatibility support for the NVIDIA GBM backend.
  • Added a new kernel module parameter, 'conceal_vrr_caps', to the nvidia-modeset kernel module. This parameter may be used to enable usage of features on some displays such as ULMB (Ultra Low Motion Blur) which are incompatible with VRR. See the "Direct Rendering Manager Kernel Modesetting" (DRM KMS) chapter of the README for further information.
  • Fixed a bug that could cause games to crash when the "PROTON_ENABLE_NGX_UPDATER" environment variable was set to a value of "1".
  • Added /usr/share/nvidia/files.d/sandboxutils-filelist.json which lists all the driver files used by container runtime environments such as nvidia-container-toolkit and enroot.
  • Added support for the systemd suspend-then-hibernate method of system sleep. This feature requires systemd version 248 or newer.
  • Enabled the nvidia-drm fbdev=1 option by default. When supported by the kernel and the nvidia-drm modeset=1 option is enabled, nvidia-drm will replace the system's framebuffer console with one driven by DRM.
    This feature can be disabled by setting fbdev=0.
  • Implemented a feature that allows low latency display interrupts to be serviced even when the system is under heavy contention. This is especially useful for reducing stutter when using virtual reality.
    This feature is experimental and disabled by default.
    This feature can be enabled by loading nvidia.ko with the NVreg_RegistryDwords=RMIntrLockingMode=1 kernel module parameter.
  • Fixed a bug, introduced in 555.58, where some DVI outputs would not work with HDMI monitors.
  • In Linux kernel 6.11, drm_fbdev_generic was renamed to drm_fbdev_ttm. Use drm_fbdev_ttm when present to keep supporting direct framebuffer access needed for Wayland compositors to present content on newer kernels.
  • In linux-next commit 446d0f4849b1, output_poll_changed is removed from struct drm_mode_config_funcs. Do not implement the function pointer member when not present to ensure the driver can compile with newer kernels. The driver now supports enumerating modes on hotplug events through the DRM fbdev API.
  • In linux-next commit 446d0f4849b1, intended to be included in Linux kernel 6.12, output_poll_changed is removed from struct drm_mode_config_funcs. Do not implement the function pointer member when not present to ensure the driver can compile with newer kernels. Populating modes for DRM connectors during hotplug events will not be supported with r535 and kernels containing the relevant commit.
  • Fixed a bug that could cause external displays to become frozen until the next modeset when using PRIME Display Offloading with the NVIDIA dGPU acting as the display offload sink.

And of course i installed it on the Acer machine.

1 Like

I'll have to give it a try. 560 and 565 have a bug with openGL that causes graphical artifacts in Genymotion, which is a problem for me. Thanks for the heads up.