Post

Nvidia 470xx Drivers Install Guide

Nvidia 470xx Drivers Install Guide

The NVIDIA 470xx driver series is a legacy branch designed for older NVIDIA graphics cards that are no longer supported by the latest driver releases. These drivers are essential for users with legacy GPUs who want to maintain proper graphics acceleration and compatibility with modern Linux distributions. This driver branch supports GPUs from the GeForce 600 series through some 900 series cards, as well as corresponding Quadro and Tesla models. While these are legacy drivers, they still receive critical security updates and bug fixes from NVIDIA.

This article is recommended for people who still use Kepler (NVE0) series, GeForce 400/500/600 series cards or Tesla (NV50/G80-90-GT2XX) cards.

If you are using a GPU that supports Maxwell or higher architecture, it will be much easier for you to install.

Prerequisites for installing and building packages

First, update your system and install the required packages and kernel headers. After that, you need to enable 32-bit support by uncommenting the multilib repository. You are also going to need an AUR helper.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

sudo pacman -Syu --noconfirm

sudo pacman -S base-devel git vim --needed --noconfirm

KERNEL=$(uname -r | cut -d'-' -f2-)
if [[ $KERNEL == *"zen"* ]]; then
    sudo pacman -S linux-zen-headers --noconfirm
elif [[ $KERNEL == *"lts"* ]]; then
    sudo pacman -S linux-lts-headers --noconfirm
elif [[ $KERNEL == *"hardened"* ]]; then
    sudo pacman -S linux-hardened-headers --noconfirm
else
    sudo pacman -S linux-headers --noconfirm
fi

sudo sed -i '/\[multilib\]/,/Include = \/etc\/pacman.d\/mirrorlist/ s/^#//' /etc/pacman.conf

sudo pacman -Sy --noconfirm

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si --noconfirm
cd ..
rm -rf yay

Installing the base driver and OpenGL packages

If you are unsure about your NVIDIA card’s supported driver family, you can find it here

Driver nameKernelBase driverOpenGLOpenGL (multilib)
Turing (NV160/TUXXX) and newerlinuxnvidia-opennvidia-utilslib32-nvidia-utils
Turing (NV160/TUXXX) and newerany other kernelnvidia-open-dkmsnvidia-utilslib32-nvidia-utils
Maxwell (NV110) series up to Ada Lovelace (NV190/ADXXX)linuxnvidianvidia-utilslib32-nvidia-utils
Maxwell (NV110) series up to Ada Lovelace (NV190/ADXXX)linux-ltsnvidianvidia-utilslib32-nvidia-utils
Maxwell (NV110) series up to Ada Lovelace (NV190/ADXXX)any other kernelnvidia-dkmsnvidia-utilslib32-nvidia-utils
Kepler (NVE0) seriesanynvidia-470xx-dkmsnvidia-470xx-utilslib32-nvidia-470xx-utils
GeForce 400/500/600 series cards [NVCx and NVDx]anynvidia-390xx-dkmsnvidia-390xx-utilslib32-nvidia-390xx-utils
Tesla (NV50/G80-90-GT2XX)anynvidia-340xx-dkmsnvidia-340xx-utilslib32-nvidia-340xx-utils
1
2
3
4
5
6
# Then install the correct drivers acording to the chart.  

# Example :
             yay -S nvidia-470xx-dkms nvidia-470xx-utils lib32-nvidia-470xx-utils

Setting the Kernel Parameter and Add Early Loading of NVIDIA Modules

If you use GRUB as the bootloader run,

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo vim /etc/default/grub

Find the line that contains "GRUB_CMDLINE_LINUX_DEFAULT" and add these two parameters: nvidia-drm.modeset=1 nvidia-drm.fbdev=1

# Example 
    
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1 nvidia-drm.fbdev=1"

# Update grub config 

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

if you don’t use GRUB as the bootloader, please check the documentation of your bootloader to find out how to add kernel parameters. LILO systemd-boot Limine

Enable Early Loading of NVIDIA Modules

1
2
3
4
5
6
7
8
9
10
sudo vim /etc/mkinitcpio.conf

# Find the line that says  " HOOKS=() " and locate the word " kms "  in the parentheses and remove it. 
# after that Find the line that says MODULES=() 
# Modify the line to:
                     MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
                     
# Rebuild the initramfs with
                     sudo mkinitcpio -P

pacman.hook

Use a pacman hook to auto-update initramfs after NVIDIA upgrades:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package

# ** IMPORTANT  ** Change nvidia to your specific driver package, e.g., nvidia-470xx-dkms

# e.g:  Modify Target=nvidia to Target=nvidia-470xx-dkms

#Target=nvidia 
Target=nvidia-470xx-dkms

Target=nvidia-open
Target=nvidia-lts
# If running a different kernel, modify below to match
Target=linux

[Action]
Description=Updating NVIDIA module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P'

After that you need to Move the file to /etc/pacman.d/hooks/ If the hooks folder doesn’t already exist, you may need to create a new one.

That’s it

Now you can reboot and enjoy!

In case you face any issues related to NVIDIA graphics, you can check the ArchWiki nvidia troubleshooting guide .

This post is licensed under CC BY 4.0 by the author.

Trending Tags