Build DKMS packages for NVIDIA GPUs on ARM platforms like the RK3588 that lack DMA cache coherency.
This project applies patches from scottjg/open-gpu-kernel-modules to the official NVIDIA open kernel modules. These patches are written almost entirely by @mariobalanica (I just rebased to the latest drivers and packaged for slightly easier usage). These packages are meant to replace the Fedora and Ubuntu system packages (not the mainline drivers from NVIDIA).
My goal with these packages was to provide a relatively simple way to setup an AI inference server with a low-cost ARM single board computer, and a spare graphics card I had lying around. These drivers have been reported to work for actual gaming with a 3d accelerated desktop on RK3855 platforms, though I have not tested them for this purpose. In my case, I have tested these drivers with an Orange Pi 5 Plus and an NVIDIA RTX 4090. I was inspired by @geerlingguy's blog post on the subject.
Please be advised that I am just packaging these existing patches. It's unlikely that I will provide meaningful support or fixes for them, other than keeping them up to date and providing package repos for installation.
- Ubuntu 24.04, 25.10, 26.04 (
.debwith DKMS) - Fedora 43, 44, rawhide (
.rpmwith akmod)
The patches were mostly tested on the RK3588 platform (like the Orange Pi 5 Plus), using a kernel with a 4k page size. The default devicetree memory maps on these platforms are not compatible out of the box with these drivers. It is recommended you boot with a UEFI EDK2 firmware that was ported to these platforms, which has been configured with an updated device tree, and is capable of booting mainline ARM linux distributions.
# Import signing key
sudo apt update
sudo apt install -y curl
curl -fsSL https://pkg.scottjg.com/nvidia-armsbc/signing-key.asc | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-armsbc.gpg
# Add repository
echo "deb [signed-by=/usr/share/keyrings/nvidia-armsbc.gpg] https://pkg.scottjg.com/nvidia-armsbc/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/nvidia-armsbc.list
sudo apt update
# First, find the latest available driver major version:
NVIDIA_VERSION=$(apt-cache search nvidia-dkms | grep -oP 'nvidia-dkms-\K[0-9]+(?=-open)' | sort -n | tail -1)
echo "Latest NVIDIA driver version: $NVIDIA_VERSION"
# if you're on a raspberry pi kernel, install the raspi kernel headers
uname -r |egrep -q 'raspi$' && sudo apt install linux-headers-raspi
# Install this kernel driver
sudo apt install -y nvidia-dkms-${NVIDIA_VERSION}-open-armsbc
# Install NVIDIA userspace (from Ubuntu repos)
sudo apt install -y nvidia-headless-${NVIDIA_VERSION}-open nvidia-utils-${NVIDIA_VERSION}
# If you want the desktop to work, install the desktop video drivers
sudo apt install -y nvidia-driver-${NVIDIA_VERSION}-open-armsbc# Setup RPMFusion (we replace the drivers, but not the other dependencies)
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
# Import signing key
sudo rpm --import https://pkg.scottjg.com/nvidia-armsbc/signing-key.asc
# Add repository
sudo tee /etc/yum.repos.d/nvidia-armsbc.repo << 'EOF'
[nvidia-armsbc]
name=NVIDIA ARM SBC Drivers
baseurl=https://pkg.scottjg.com/nvidia-armsbc/fedora/$releasever/aarch64/os/
enabled=1
gpgcheck=1
gpgkey=https://pkg.scottjg.com/nvidia-armsbc/signing-key.asc
EOF
# Install the kernel drivers
sudo dnf install akmod-nvidia-armsbc
# Install NVIDIA userspace (from RPM Fusion)
sudo dnf install xorg-x11-drv-nvidia-cuda# Build for your preferred distro
./build.sh ubuntu
./build.sh fedora
# Build all
./build.sh all
# Specify NVIDIA driver version
./build.sh --nvidia-version 580.95.05 ubuntuPackages are output to ./output/.
The build scripts in this repository are MIT licensed. The NVIDIA kernel modules are subject to NVIDIA's license terms.