1. Overview
In this tutorial, we’ll be going through several methods for finding the graphics card version. We’ll cover the mainstream video cards: AMD, Nvidia, and Intel.
2. Nvidia
The Nvidia drivers are available in the official repositories of most distributions. For instance, on Ubuntu, we can search for the pattern nvidia-* using apt to get all the available drivers for Nvidia:
$ apt search nvidia-*
nvidia-407/focal 407.22-0ubuntu3 amd64
Transition package for nvidia-driver-407
nvidia-407-dev/focal 407.22-0ubuntu3 amd64
Transition package for nvidia-driver-407
nvidia-407-dev/focal 407.22-0ubuntu3 amd64 [installed]
Nvidia driver metapackage
As we can observe, apt fetches several packages. The third package is the actual driver that’s currently installed on our machine. So, that’s one way to get the driver’s information. However, it doesn’t necessarily mean that we are actually using the driver.
A meta-package is a type of package that contains information about other packages to be installed. For that reason, installing the meta-package will result in installing the packages it defines. The Nvidia meta-package not only contains the driver but also the helper tools such as nvidia-smi.
2.1. The nvidia-smi Utility
We can use the nvidia-smi (Nvidia System Management Interface) command-line utility to get the information about our video card, its stats, and graphics version.
When we install the meta-package for Nvidia, we’ll automatically get the smi-utility as well:
$ nvidia-smi
Sun May 13 20:02:49 2012
+------------------------------------------------------+
| NVIDIA-SMI 3.795.40 Driver Version: 417.22 |
|-------------------------------+----------------------+----------------------+
| Nb. Name | Bus Id Disp. | Volatile ECC SB / DB |
| Fan Temp Power Usage /Cap | Memory Usage | GPU Util. Compute M. |
|===============================+======================+======================|
| 0. GeForce 660 Ti GTX | 0000:01:00.0 N/A | N/A N/A |
| 0% 51 C N/A N/A / N/A | 90% 459MB / 2039MB | N/A Default |
|-------------------------------+----------------------+----------------------|
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
| 1 5113 C python 440MiB |
+-----------------------------------------------------------------------------+
PID USED_GPU_MEMORY[MIB] USER PGRP %CPU %MEM TIME COMMAND
9178 440MiB hey 9175 129 2.6 04:32:19 python script.py
| +-----------------------------------------------------------------------------+
In the heading of the textual output, we can see that we’re currently using driver version 417.22, which is the official driver.
2.2. Alternative: the nvidia Virtual File
As an alternative, we can also read the version virtual file located in /proc/driver/nvidia. It’s a virtual file that the operating system creates when it’s read.
Since the file merely contains plain text, we can simply cat the contents of the file to standard output:
$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 417.22 Sat Aug 30 00:05:22 PKT 2021
GCC version: gcc version 7.0.3 (Ubuntu/Focal 4.6.3-0ubuntu3)
However, we should note that the contents of the file will vary depending on the distribution in use.
2.3. Alternative: modinfo
The modinfo tool is used to retrieve information about kernel modules. We can install it from the official repository for our distribution using the package name modinfo through yum or apt.
Once installed, let’s verify its availability:
$ modinfo --version
kmod version 29
+ZSTD +XZ +ZLIB +LIBCRYPTO -EXPERIMENTAL
The tool requires that we pass the module name as an argument. However, if we’re unsure about the module name, we can use the lspci utility to retrieve it:
$ lspci -k | grep -A 2 -i "VGA"
02:00.0 VGA compatible controller: nVidia Corporation NV41 [GeForce 660 Ti GTX] (rev a2)
Kernel driver in use: nvidia
Kernel modules: nvidia, nouveau
As we can see, the module in use is nvidia. Let’s pass this as an argument to the modinfo utility:
$ modinfo nvidia
filename: /usr/lib/modules/5.6.0-229.20.1.el7.x86_64/kernel/drivers/video/nvidia.ko
alias: char-major-195-*
version: 417.22
supported: external
license: NVIDIA
alias: pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends: drm,i2c-core
...
Here, we can see the version currently in use being 417.22. On the other hand, if the card is using the open-source Nvidia driver nouveau, we can pass that as an argument instead.
3. AMD
Finding out the driver version for the AMD cards is pretty straightforward in Linux — we simply check the driver package version. Most of the time, the driver for AMD GPU is installed by installing the amdgpu or amdgpu-pro packages from the official repository.
3.1. The amdgpu and amdgpu-pro Packages
On Ubuntu, we can check the version of the package using the dpkg helper. However, before we do that, let’s check which driver package for the AMD GPU we have currently installed.
Using the apt tool, we can search for the pattern *amdgpu*:
$ apt search *amdgpu*
xserver-xorg-video-amdgpu/focal 19.1.0-0ubuntu3 amd64 [installed]
X.Org X Server -- AMDGPU Driver
By checking the package version, we can get an idea of the current driver in use:
$ dpkg -l xserver-xorg-video-amdgpu
amdgpu-gpu 19.1-414273 amd64
Let’s use lsmod to confirm that the system is using the installed driver:
$ lsmod | grep amd
amdgpu 4575232 11
amd_iommu_v2 20480 1 amdgpu
gpu_sched 32768 1 amdgpu
ttm 106496 1 amdgpu
drm_kms_helper 184320 1 amdgpu
drm 487424 7 gpu_sched,drm_kms_helper,amdgpu,ttm
i2c_algo_bit 16384 1 amdgpu
The same process goes for the amdgpu-pro package, which is the newer version of the driver for high-end AMD GPUs.
3.2. Alternative: the glxinfo Tool
The glxinfo tool displays information about the mesa driver, which is an open-source implementation of the OpenGL specification. It contains not only information about graphics API specifications, but also about the graphics card in use.
The glxinfo is a helper utility that doesn’t ship with the mesa driver. However, we can install it through the mesa-utils package from the official repository.
Once installed, we can verify its availability by typing in the glxinfo command. By default, it will print loads of information about the driver. Therefore, we’ll only grep the portions that we need:
$ glxinfo | grep -iE 'vendor:|device:|version:'
Vendor: AMD Radeon Software
Device: Mesa DRI Radeon RX 570 (0x166)
Version: 21.1.5
4. Intel
The drivers for Intel on Linux are a bit confusing due to the conflict between Wayland and X.Org. X.Org is a traditional (and the oldest) window system for Linux and became available in 1984. On the other hand, Wayland is the intended security-focused replacement for X.Org and doesn’t support the drivers developed for X.Org.
On account of that, there are different packages for Intel drivers that are run under X.Org, such as Xorg VESA, XF86-Video-Intel, Xorg Intel, and so on. However, most of these packages are ancient and are not recommended for Intel GPUs anymore.
On the contrary, to overcome the issues with those drivers, Tungsten Graphics introduced Mesa, which is an open-source implementation of OpenGL, Vulkan, and other Graphics API specifications. Fortunately, Mesa works well with both Wayland and X.Org and is actively maintained.
4.1. xf86-video-intel
On older Linux systems that use the X11 implementation of X.Org, we can check the version for the xf86**-video-intel or xserver-xorg-video-intel drivers. It’s still available on most official repositories for different distributions.
And, as always, we can use the apt tool on Ubuntu to check for the installed driver version:
$ apt search nvidia-*
xserver-xorg-video-intel/focal 2:2.990ubuntu3 amd64 [installed]
X.Org X server -- Intel i8xx, i9xx display driver
4.2. lshw
lshw is a handy utility that displays system specifications for various components. We can install it from the official repository of our distribution using a package manager like yum or apt.
Once we’ve installed it, we can easily verify it from the command line:
$ lshw -version
the latest version is B.02.18
Now, let’s display the specifications of the video card using the -c (class) option and video as the class argument:
$ lshw -c video
*-display
description: VGA compatible controller
product: 3rd Gen Core processor Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 09
width: 64 bits
clock: 33MHz
capabilities: vga_controller bus_master cap_list
configuration: driver=i915 latency=0
resources: irq:36 memory:f6400000-f67fffff memory:e0000000-efffffff ioport:f000(size=64) memory:c0000-dffff
As we can see in the output’s configuration field, the driver we are using is the i915 kernel module. It ships with the xserver-xorg-video-intel and xf86-video-intel packages.
5. Conclusion
In this tutorial, we learned how we could find out the GPU driver version of Nvidia, AMD, and Intel brands. We went through alternatives for each brand and used several utilities for that purpose.