Proprietary NVIDIA cards need the packaged driver stack before Debian can expose hardware acceleration, CUDA monitoring with nvidia-smi, or reliable desktop sessions. To install NVIDIA drivers on Debian, use Debian’s non-free packages for the conservative branch or NVIDIA’s CUDA repository when Debian 13 or 12 needs a newer branch such as 595 or 590, or the 580 branch on Debian 12.
Debian 13 and 12 can use either path. Debian 11 remains covered for Debian repository packages and the legacy 390xx branch, but NVIDIA’s current Debian driver repository instructions list Debian 13 and 12 for the network repository, so Bullseye users should stay with Debian’s packages unless NVIDIA restores current repository support.
Install NVIDIA Drivers on Debian
Debian supports two practical installation paths for NVIDIA drivers. The distro packages prioritize stability, while the CUDA repository delivers newer driver branches, branch pinning, and open kernel module packages for supported releases.
Prepare Debian for NVIDIA Drivers
Refresh your package index so APT sees the latest metadata:
sudo apt update
If you are switching between the Debian repository and the CUDA repository, remove the existing NVIDIA packages first so APT does not mix driver branches from both sources.
Install Matching Kernel Headers
NVIDIA drivers use DKMS to build kernel modules, so install headers that match your running kernel. Install the tracking header metapackage too on Debian stock kernels so future kernel upgrades bring matching headers with them:
sudo apt install "linux-headers-$(uname -r)" linux-headers-amd64 build-essential dkms
The $(uname -r) substitution pulls the running kernel version. If the exact package is missing because you just upgraded kernels, install the generic header metapackage, reboot into the Debian kernel it selects, then rerun the exact header command:
sudo apt install linux-headers-amd64
If Secure Boot is enabled, Debian can build the NVIDIA DKMS module but still refuse to load it until the DKMS signing key is enrolled through MOK. Install the driver first, then complete the Secure Boot troubleshooting section if the module will not load after reboot.
Choose Your NVIDIA Driver Installation Method for Debian
The Debian repository method keeps you aligned with Debian’s release cadence, while the CUDA repository delivers newer driver branches and open kernel modules. Use the comparison to pick the source before installing packages.
| Method | Source | Driver Branch | Update Behavior | Best Fit |
|---|---|---|---|---|
| Debian repository | Debian non-free packages | Debian 13: 550, Debian 12: 535, Debian 11: 470 | Normal Debian APT upgrades | Most desktops, laptops, and workstations that value stable packaging |
| NVIDIA CUDA repository | NVIDIA Debian driver repository | Current vendor branches, including 595 and 590; Debian 12 may also offer 580 | APT upgrades from NVIDIA’s repository, optionally branch-pinned | New GPUs, CUDA-focused systems, and users who need open kernel module packages |
For most Debian systems, start with the Debian repository packages because they track Debian’s QA and security cadence. Choose the CUDA repository when a newer branch, open kernel modules, or newer GPU support is more important than staying on Debian’s packaged branch.
Debian 13 (trixie), Debian 12 (bookworm), and Debian 11 (bullseye LTS) are covered for Debian repository packages. The CUDA repository method here is limited to Debian 13 and 12 on amd64/x86_64 because that is the current NVIDIA network repository scope.
Install NVIDIA Drivers from Debian Repositories
This method uses Debian’s non-free packages and is the most conservative choice for long-term stability.
Confirm Contrib and Non-Free Components
NVIDIA drivers live in Debian’s non-free component, and nvidia-settings depends on packages from contrib. Debian 12 and 13 also use non-free-firmware, while Debian 11 does not have that component. Check the package candidate before installing:
apt-cache policy nvidia-driver nvidia-settings
Relevant Debian 13 output shows candidates from trixie/non-free and trixie/contrib:
nvidia-driver:
Installed: (none)
Candidate: 550.163.01-2
Version table:
550.163.01-2 500
500 http://deb.debian.org/debian trixie/non-free amd64 Packages
nvidia-settings:
Installed: (none)
Candidate: 550.163.01-1
Version table:
550.163.01-1 500
500 http://deb.debian.org/debian trixie/contrib amd64 Packages
If either package shows Candidate: (none), enable contrib and non-free, then run sudo apt update again. The Debian contrib and non-free repository guide covers both DEB822 and legacy sources.list systems without mixing duplicate source formats.
Default NVIDIA Driver Versions by Debian Release
| Debian Release | Default NVIDIA Driver Branch | Package Candidate | Notes |
|---|---|---|---|
| Debian 13 (trixie) | 550 | 550.163.01-2 | Current Debian stable package from non-free |
| Debian 12 (bookworm) | 535 | 535.261.03-1 | Oldstable package from non-free |
| Debian 11 (bullseye) | 470 | 470.256.02-2 | LTS package from non-free; legacy 390xx packages remain available for older GPUs |
Debian 13 and 12 also provide the older Tesla 535 branch as nvidia-tesla-535-driver for users who need that driver line. If you are unsure which branch your GPU needs, use Debian’s nvidia-detect package before adding the CUDA repository.
Use nvidia-detect to Pick the Right Package (Optional)
If you are unsure which branch your GPU needs, nvidia-detect can recommend the correct Debian package. Run it while the Debian repository is still the candidate source, because the CUDA repository currently publishes a documentation-only nvidia-detect package that does not install the detector script:
sudo apt install nvidia-detect
nvidia-detect
If you run this inside a VM or container without NVIDIA hardware, you will see:
No NVIDIA GPU detected.
On systems with NVIDIA hardware, the output lists the GPU and recommends a package such as nvidia-driver or nvidia-legacy-390xx-driver.
Install the Driver and Tools
For most systems, install the main driver with the utilities you will use for verification and configuration:
If you only need display acceleration without CUDA compute,
nvidia-driveralone is sufficient. Thenvidia-smiandnvidia-settingspackages add monitoring and configuration tools but are not required for basic GPU functionality.
sudo apt install nvidia-driver nvidia-smi nvidia-settings
Debian does not install nvidia-smi automatically with nvidia-driver, so include it explicitly.
APT pulls the matching NVIDIA GSP firmware dependency for current Debian 12 and 13 driver packages. If another Debian reference includes firmware-misc-nonfree, treat it as a broader firmware bundle rather than a replacement for the driver, DKMS, or nvidia-smi packages used here.
Install Legacy 390xx Drivers on Debian 11 (Older GPUs)
If you have a legacy GPU that requires the 390xx branch, install the Debian 11 packages:
sudo apt install nvidia-legacy-390xx-driver nvidia-settings-legacy-390xx
The 390xx branch is only available on Debian 11. If you need it, remain on Debian 11 or use the open-source Nouveau driver on newer releases.
Install NVIDIA Drivers from NVIDIA CUDA Repository
The CUDA repository ships NVIDIA’s newest driver branches, including open kernel modules, branch-pinning packages, and compute-only driver packages. NVIDIA’s current Debian repository instructions cover Debian 13 and 12; Debian 11 users should use Debian’s repository packages for this article’s supported path.
Identify Your GPU (Optional)
If you want to confirm your GPU model before choosing the driver branch, install pciutils and check the PCI device list:
sudo apt install pciutils
lspci | grep -E "VGA|3D"
Install Repository Prerequisites
Install the tools used to download the CUDA keyring package. The wget command examples can help if you want more download options.
sudo apt install ca-certificates wget
Install the NVIDIA CUDA Keyring Package
Use NVIDIA’s current cuda-keyring_1.1-1_all.deb package instead of older manual key commands. The release guard avoids writing an unsupported CUDA repository file on Debian 11:
. /etc/os-release
case "$VERSION_ID" in
13) CUDA_DISTRO="debian13" ;;
12) CUDA_DISTRO="debian12" ;;
*) CUDA_DISTRO="" ;;
esac
if [ -z "$CUDA_DISTRO" ]; then
printf '%s\n' "Use Debian repository packages on this Debian release."
else
rm -f cuda-keyring_1.1-1_all.deb
wget "https://developer.download.nvidia.com/compute/cuda/repos/${CUDA_DISTRO}/x86_64/cuda-keyring_1.1-1_all.deb"
sudo apt install ./cuda-keyring_1.1-1_all.deb
fi
Refresh APT so package policies include the CUDA repository metadata:
sudo apt update
Confirm that the NVIDIA repository is now the candidate source:
apt-cache policy nvidia-driver
nvidia-driver:
Installed: (none)
Candidate: 595.71.05-1
Version table:
595.71.05-1 500
500 https://developer.download.nvidia.com/compute/cuda/repos/debian13/x86_64 Packages
595.58.03-1 500
500 https://developer.download.nvidia.com/compute/cuda/repos/debian13/x86_64 Packages
550.163.01-2 500
500 http://deb.debian.org/debian trixie/non-free amd64 Packages
APT selects the highest version from enabled repositories, so the candidate changes as NVIDIA publishes new branches. If an older
cuda-keyring_1.0-1_all.debcommand appears in another note, usecuda-keyring_1.1-1_all.debfor the current Debian 13 and 12 repositories.
Pin a CUDA Driver Branch (Optional)
Install a pinning package before the driver if you want to stay on a specific CUDA repository branch instead of tracking the newest candidate. Debian 13 and 12 expose 595 and 590 branch pins with matching driver packages:
apt-cache policy nvidia-driver-pinning-595 nvidia-driver-pinning-590
nvidia-driver-pinning-595:
Installed: (none)
Candidate: 595-1
Version table:
595-1 500
500 https://developer.download.nvidia.com/compute/cuda/repos/debian13/x86_64 Packages
nvidia-driver-pinning-590:
Installed: (none)
Candidate: 590-5
Version table:
590-5 500
500 https://developer.download.nvidia.com/compute/cuda/repos/debian13/x86_64 Packages
Choose one branch pin. For the 595 branch, install:
sudo apt install nvidia-driver-pinning-595
For the 590 branch, install:
sudo apt install nvidia-driver-pinning-590
Debian 12 may also expose 580 driver packages in the CUDA repository. Check for the 580 pin before using it because branch availability differs by repository suite:
apt-cache policy nvidia-driver-pinning-580
If the 580 package shows a real candidate, install it before the driver packages:
sudo apt install nvidia-driver-pinning-580
Choose Proprietary or Open Kernel Modules
Proprietary kernel modules
- Best compatibility for pre-Turing GPUs
- Closed-source kernel modules with full NVIDIA feature support
- Recommended when you want the broadest hardware coverage
Open kernel modules
- Supported on Turing and newer GPUs
- Open-source kernel modules with proprietary firmware and userspace
- Available only from the CUDA repository, not the Debian repos
If you are on older hardware or unsure which flavor to pick, start with the proprietary kernel modules. For Turing and newer GPUs, the open kernel modules are a supported option; see NVIDIA’s open kernel modules README for GPU support details.
Install the Proprietary Driver (CUDA Repo)
sudo apt install nvidia-driver nvidia-kernel-dkms nvidia-driver-cuda nvidia-settings
The CUDA repository’s nvidia-smi package is a transitional dummy package on current 590 and 595 branches. Install nvidia-driver-cuda instead when you want /usr/bin/nvidia-smi and the CUDA driver integration tools.
Install the Open Kernel Modules (CUDA Repo)
sudo apt install nvidia-driver nvidia-kernel-open-dkms nvidia-driver-cuda nvidia-settings
NVIDIA also publishes nvidia-open as a fuller open-driver meta-package. It pulls in nvidia-driver, nvidia-kernel-open-dkms, nvidia-driver-cuda, nvidia-settings, and nvidia-xconfig, so use it when you want NVIDIA’s complete open-kernel stack rather than the lighter display-focused package set:
sudo apt install nvidia-open
Compute-Only Installation (CUDA Repo Only)
For headless GPU compute nodes, install the compute-only package and a kernel module package. This package is available from the CUDA repository on Debian 13 and 12:
sudo apt install nvidia-driver-cuda nvidia-kernel-dkms
If your GPU is supported by the open kernel modules, replace nvidia-kernel-dkms with nvidia-kernel-open-dkms. The nvidia-driver-cuda package provides nvidia-smi and conflicts with the transitional nvidia-smi package, so do not install nvidia-smi separately in this case. For the full CUDA toolkit, follow our CUDA installation guide for Debian.
Reboot to Load the NVIDIA Driver
After installing your chosen packages, reboot to load the kernel modules:
sudo reboot
Confirm NVIDIA Driver Installation on Debian
After rebooting, verify the driver with nvidia-smi:
nvidia-smi
A working driver prints an NVIDIA-SMI table with a driver version, a CUDA runtime version, and at least one GPU row. Branch numbers differ by method and release, so treat the table itself as the success signal. If nvidia-smi is missing on a CUDA repository install, install nvidia-driver-cuda; if it prints an error, use the troubleshooting checks for module build, Secure Boot, and missing packages.
Verify with NVIDIA Settings (GUI)
If you installed the GUI tools, launch NVIDIA Settings with:
nvidia-settings
You can also open NVIDIA Settings from your applications menu. The interface confirms driver status, GPU details, and display configuration.

Configure Wayland Support for NVIDIA Drivers on Debian (Optional)
GNOME defaults to Wayland on Debian, and NVIDIA drivers support Wayland when DRM modesetting is enabled. KDE’s NVIDIA Wayland notes state that XWayland applications are usable with driver 555 and newer; Debian 13’s default repository driver is currently 550, while the CUDA repository tracks newer branches. If you prefer X11 or your desktop session already works as expected, you can skip this section.
Check Your Session Type
echo $XDG_SESSION_TYPE
A Wayland session prints:
wayland
Enable DRM Modesetting
Check whether modesetting is already enabled:
cat /sys/module/nvidia_drm/parameters/modeset
A value of Y means DRM modesetting is enabled. If the output is N, create a modprobe configuration file and enable modesetting:
printf '%s\n' 'options nvidia-drm modeset=1' | sudo tee /etc/modprobe.d/nvidia-drm.conf > /dev/null
Rebuild the initramfs so the setting applies at boot:
sudo update-initramfs -u
If your system uses
dracutinstead ofupdate-initramfs, runsudo dracut --forceafter changing modprobe settings.
Enable Suspend and Resume Services
On Debian 12 and 13 with the Debian repository drivers, install the suspend helper package:
sudo apt install nvidia-suspend-common
If you installed drivers from the CUDA repository, skip
nvidia-suspend-common. The CUDAnvidia-driverpackage replaces it.
Enable the NVIDIA suspend and resume services:
sudo systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service
Reboot once more so the Wayland settings take effect:
sudo reboot
Troubleshoot NVIDIA Driver Issues on Debian
nvidia-driver or nvidia-detect Has No Candidate
If APT cannot find nvidia-driver or nvidia-detect, Debian’s contrib and non-free components are usually missing from the active source file:
E: Unable to locate package nvidia-detect Package 'nvidia-driver' has no installation candidate
Check the current candidates first:
apt-cache policy nvidia-driver nvidia-detect
If both packages show Candidate: (none), enable Debian’s contrib and non-free components, then run sudo apt update. If nvidia-detect points at developer.download.nvidia.com, the CUDA repository is shadowing Debian’s detector package; run nvidia-detect before adding CUDA, or temporarily remove the CUDA repository, install Debian’s nvidia-detect, record the recommendation, and then re-add CUDA if you still need the vendor driver branch.
For nvidia-driver-libs:i386, confirm the foreign architecture and package candidate after adding i386:
dpkg --print-foreign-architectures
apt-cache policy nvidia-driver-libs:i386
If i386 is missing, rerun sudo dpkg --add-architecture i386 and sudo apt update. If the package still shows Candidate: (none), fix the enabled repository components before installing the 32-bit libraries.
NVIDIA-SMI Cannot Communicate with the Driver
If nvidia-smi reports the error below, the kernel module is not loaded or DKMS did not build it for your current kernel:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
Check the DKMS build status:
sudo dkms status
Look for an installed NVIDIA module entry for your current kernel. A status of added, build error, or a missing NVIDIA entry means DKMS has not produced a loadable module yet. Install matching headers and rebuild the module:
sudo apt install "linux-headers-$(uname -r)" linux-headers-amd64
sudo dkms autoinstall
sudo update-initramfs -u
sudo reboot
If your system uses
dracut, replaceupdate-initramfs -uwithdracut --force.
After rebooting, run nvidia-smi again to confirm the driver loads.
Kernel Headers Missing After a Debian Kernel Upgrade
If DKMS prints a header error for the active kernel, the NVIDIA module cannot be rebuilt for the kernel you are currently running. This often appears after sudo apt upgrade installs a newer Debian kernel image but the matching header package was not installed.
Error! Your kernel headers for kernel 6.12.88+deb13-amd64 cannot be found at /lib/modules/6.12.88+deb13-amd64/build or /lib/modules/6.12.88+deb13-amd64/source.
Install the exact headers for the running kernel and keep the Debian header metapackage installed for future kernel upgrades:
sudo apt install "linux-headers-$(uname -r)" linux-headers-amd64
Confirm the build link exists before forcing another DKMS rebuild:
test -e "/lib/modules/$(uname -r)/build" && printf '%s\n' "headers ready"
If APT cannot locate the exact header package, install linux-headers-amd64, reboot into the Debian kernel selected by the kernel metapackages, then rerun the exact header install and DKMS rebuild. Do not continue to Secure Boot troubleshooting until /lib/modules/$(uname -r)/build exists.
Secure Boot Blocks NVIDIA DKMS Modules
If the NVIDIA package installs and DKMS builds the module, but the module still does not load after reboot, Secure Boot may be rejecting a module signature that has not been enrolled through MOK. This commonly affects systems that dual-boot Windows and keep Secure Boot enabled.
Install mokutil and confirm Secure Boot state:
sudo apt install mokutil openssl
mokutil --sb-state
sudo dkms status
sudo dmesg | grep -Ei 'nvidia|module verification|required key|lockdown'
If mokutil reports Secure Boot as enabled, generate or locate DKMS’s module-signing certificate and queue it for enrollment. Newer DKMS packages support generate_mok, while older Debian packages may create the certificate during the NVIDIA DKMS build:
MOK_CERT=""
if sudo dkms generate_mok 2>/dev/null; then
MOK_CERT="/var/lib/dkms/mok.pub"
elif [ -f /var/lib/dkms/mok.pub ]; then
MOK_CERT="/var/lib/dkms/mok.pub"
elif [ -f /var/lib/shim-signed/mok/MOK.der ]; then
MOK_CERT="/var/lib/shim-signed/mok/MOK.der"
fi
if [ -z "$MOK_CERT" ]; then
printf '%s\n' "No DKMS MOK certificate found. Reinstall the NVIDIA DKMS package, then rerun this step."
else
sudo mokutil --import "$MOK_CERT"
sudo reboot
fi
The import command asks for a temporary password when it queues a certificate. On the next boot, the blue MOK Manager screen appears. Choose Enroll MOK, continue through the prompts, confirm enrollment, enter the temporary password, then reboot back into Debian.
MOK enrollment is stored in UEFI firmware through shim’s MOK database, not in Debian’s / or /boot partitions and not in the TPM. A partition restore does not remove an enrolled key. If the restored system still contains an NVIDIA module signed by the same DKMS key, the driver can start loading after enrollment even when the restored root and boot partitions predate the successful boot.
If the NVIDIA module was already built before the key was enrolled and still does not load, force DKMS to reinstall the NVIDIA module for the running kernel:
sudo apt install "linux-headers-$(uname -r)" linux-headers-amd64
if [ ! -e "/lib/modules/$(uname -r)/build" ]; then
printf '%s\n' "Install matching kernel headers before forcing DKMS."
else
NVIDIA_DKMS="$(sudo dkms status | awk -F, '/^nvidia/ {print $1; exit}')"
if [ -z "$NVIDIA_DKMS" ]; then
printf '%s\n' "No NVIDIA DKMS module found. Reinstall the NVIDIA kernel package first."
else
sudo dkms install "$NVIDIA_DKMS" -k "$(uname -r)" --force
sudo update-initramfs -u
sudo reboot
fi
fi
After Debian boots again, run nvidia-smi. If Secure Boot was the blocker, the NVIDIA module should load without the key rejection error.
Black Screen After Reboot
If you boot to a black screen after installing NVIDIA drivers, first separate a display-session failure from a driver failure. Drop to a TTY console by pressing Ctrl+Alt+F2, log in with your username and password, then check both the driver and DKMS status:
nvidia-smi
sudo dkms status
If nvidia-smi prints a GPU table and DKMS shows an installed module for the running kernel, the driver is probably loaded and the black screen may be the desktop session. On KDE or SDDM systems, return to the login manager and select an X11 session such as Plasma (X11); on GNOME, choose the Xorg session if it is available.
If nvidia-smi cannot communicate with the driver, or DKMS shows added, build error, or no NVIDIA module for the running kernel, rebuild the module using the matching header steps. If the module shows as installed but the driver still fails, check the kernel log for NVIDIA errors:
sudo dmesg | grep -i nvidia
Common causes include Secure Boot blocking unsigned modules and missing kernel headers for the running kernel.
Xorg Fails on First Boot with DRM Modesetting (Debian 13)
On Debian 13 systems that use SDDM, especially KDE Plasma installs using nvidia-open or nvidia-kernel-open-dkms, Xorg may fail on the first graphical boot while a manual SDDM restart from a TTY works. If sudo dkms status already shows the NVIDIA module installed for the running kernel, treat this as a display-manager timing problem instead of rebuilding the driver again.
From the TTY, a temporary restart confirms the symptom:
sudo systemctl restart sddm.service
If the desktop appears after the restart, first try loading the NVIDIA modules earlier on dracut-based installs:
if command -v dracut >/dev/null 2>&1; then
sudo install -d /etc/dracut.conf.d
printf '%s\n' 'add_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm "' | sudo tee /etc/dracut.conf.d/nvidia-modules.conf > /dev/null
sudo dracut --force
sudo reboot
else
printf '%s\n' "dracut is not installed; use the SDDM delay fallback instead."
fi
If the system does not use dracut, or if early module loading is not enough, add a small SDDM startup delay so the NVIDIA DRM devices are ready before the display manager starts:
sudo install -d /etc/systemd/system/sddm.service.d
printf '%s\n' '[Service]' 'ExecStartPre=/bin/sleep 2' | sudo tee /etc/systemd/system/sddm.service.d/nvidia-wait.conf > /dev/null
sudo systemctl daemon-reload
sudo reboot
If you later remove this workaround, delete the files you created, rebuild the dracut initramfs only when the dracut file existed, then reload systemd:
if [ -f /etc/dracut.conf.d/nvidia-modules.conf ]; then
sudo rm -f /etc/dracut.conf.d/nvidia-modules.conf
if command -v dracut >/dev/null 2>&1; then
sudo dracut --force
fi
fi
sudo rm -f /etc/systemd/system/sddm.service.d/nvidia-wait.conf
sudo systemctl daemon-reload
nvidia-smi: Command Not Found
If you see this error on the Debian repository method, the nvidia-smi package is usually missing:
bash: nvidia-smi: command not found
Install it from Debian’s repository:
sudo apt install nvidia-smi
On CUDA repository installs, nvidia-smi can show as installed while still providing no command because NVIDIA publishes it as a transitional dummy package. Install nvidia-driver-cuda instead; it provides the real /usr/bin/nvidia-smi binary and replaces the dummy package when needed:
sudo apt install nvidia-driver-cuda
If you only installed nvidia-driver and a CUDA repository kernel module package, this is the missing package that explains an nvidia-smi is already the newest version message followed by nvidia-smi: command not found.
Confirm the binary is now available:
command -v nvidia-smi
/usr/bin/nvidia-smi
Hybrid Intel and NVIDIA laptops often need additional PRIME render offload configuration. Debian’s NVIDIA Optimus guide covers the distro-specific steps.
nvidia-prime or prime-select Is Missing on Debian
nvidia-prime and prime-select are Ubuntu tools, not Debian packages. On Debian hybrid systems, use the normal NVIDIA driver stack and Debian’s NVIDIA Optimus guide for PRIME render offload behavior instead of adding Ubuntu package names or Ubuntu PPAs.
If APT reports E: Unable to locate package nvidia-prime, stop using that package name on Debian. Recheck the driver with nvidia-smi, then follow the matching module, Secure Boot, or desktop-session troubleshooting path for the symptom you see.
Install 32-bit NVIDIA Libraries on Debian (Optional)
Some 32-bit games and compatibility layers require 32-bit NVIDIA libraries, especially when using Steam or Wine. Enable the i386 architecture first:
sudo dpkg --add-architecture i386
sudo apt update
Confirm that Debian now lists i386 and that APT can see a matching library candidate:
dpkg --print-foreign-architectures
apt-cache policy nvidia-driver-libs:i386
The candidate branch should match the driver source you installed. Debian 11 systems using the legacy 390xx branch need the legacy library package named later in this section.
Install the 32-bit libraries that match your driver branch:
sudo apt install nvidia-driver-libs:i386
If you are on the legacy 390xx driver (Debian 11 only), install
nvidia-legacy-390xx-driver-libs:i386instead.
For gaming and compatibility setup details, see our guides to install Steam on Debian and install Wine on Debian.
Update NVIDIA Drivers on Debian
Debian repository drivers update with normal Debian package upgrades. The CUDA repository also updates through APT, but any branch-pinning package you installed controls whether APT stays on that branch or moves to a newer one.
sudo apt update
sudo apt upgrade
Review the transaction before accepting a driver branch change, especially on CUDA repository systems. If you pinned a branch such as 595, 590, or 580, remove or change the pinning package only when you intentionally want to move branches.
Remove NVIDIA Drivers from Debian
Remove the driver packages first when you need to uninstall NVIDIA drivers, switch installation methods, or revert to Nouveau.
Remove NVIDIA Driver Packages
Remove any standard, CUDA, 32-bit, or Debian 11 legacy driver packages that are currently installed:
packages=(
nvidia-driver
cuda-drivers
nvidia-open
nvidia-kernel-dkms
nvidia-kernel-open-dkms
nvidia-driver-cuda
nvidia-smi
nvidia-settings
nvidia-suspend-common
nvidia-driver-libs:i386
nvidia-legacy-390xx-driver
nvidia-settings-legacy-390xx
nvidia-legacy-390xx-driver-libs:i386
)
installed=()
for pkg in "${packages[@]}"; do
if dpkg -s "$pkg" >/dev/null 2>&1; then
installed+=("$pkg")
fi
done
if [ "${#installed[@]}" -gt 0 ]; then
sudo apt remove "${installed[@]}"
fi
If you installed a CUDA branch-pinning package, remove it before deleting the repository source:
for pkg in nvidia-driver-pinning-595 nvidia-driver-pinning-590 nvidia-driver-pinning-580; do
if dpkg -s "$pkg" >/dev/null 2>&1; then
sudo apt remove "$pkg"
fi
done
Review unused dependencies before confirming autoremove:
sudo apt autoremove --dry-run
If the dry run only lists NVIDIA-related packages, remove them:
sudo apt autoremove
Remove the CUDA Repository (If Used)
If you used the CUDA repository, purge the keyring package, remove the source file and keyring it created, then refresh APT:
if dpkg -s cuda-keyring >/dev/null 2>&1; then
sudo apt purge cuda-keyring
fi
sudo rm -f /etc/apt/sources.list.d/cuda-debian13-x86_64.list
sudo rm -f /etc/apt/sources.list.d/cuda-debian12-x86_64.list
sudo rm -f /etc/apt/sources.list.d/nvidia-drivers.sources
sudo rm -f /usr/share/keyrings/cuda-archive-keyring.gpg
sudo rm -f /usr/share/keyrings/nvidia-drivers.gpg
sudo apt update
Confirm that the candidate now comes from the Debian repository again:
apt-cache policy nvidia-driver
nvidia-driver:
Installed: (none)
Candidate: 550.163.01-2
Version table:
550.163.01-2 500
500 http://deb.debian.org/debian trixie/non-free amd64 Packages
Re-enable Nouveau (If You Disabled It)
If you created custom modprobe files, remove them and rebuild the initramfs:
sudo rm -f /etc/modprobe.d/nvidia-drm.conf
sudo update-initramfs -u
sudo reboot
If your system uses
dracut, replaceupdate-initramfs -uwithdracut --force.
Verify NVIDIA Driver Removal
After rebooting, confirm that NVIDIA packages are gone:
dpkg -l | grep '^ii.*nvidia' || true
No output means no installed NVIDIA packages matched the check. If package names still appear, remove the listed packages or run sudo apt autoremove again after reviewing the package list.
Conclusion
Debian’s packaged NVIDIA branch is the steadier choice, while NVIDIA’s CUDA repository is better when newer hardware, branch pinning, or open kernel modules matter more. After the driver passes nvidia-smi, keep CUDA workloads and gaming libraries aligned with the same driver source so updates, 32-bit libraries, and removal stay predictable.


NVIDIA has again said F-U to legacy cards. I will move to a ATI/AMD type when this card dies.
I am trying to install Debian 13.2 on a PC with an Nvidia RTX-5060 Ti 16GB video card. As I understand it the 5060 Ti is so new that the Debian installer does not recognize it. Thus the installation completes with *no* video driver (not even “nouveau”) installed. I have to use “ctrl-alt-F4” to login at a command-line console.
Using said console window I tried to follow the instructions on this page to configure my Debian installation to download and install the latest Nvidia driver from the “open” repo. I worked through the procedure without error down to the step “Install the Open Kernel Modules (CUDA Repo)” where I successfully executed the command:
sudo apt install nvidia-driver nvidia-kernel-open-dkms nvidia-smi nvidia-settings
and this executed and finished without error. However when I tried the next two steps I got:
Reboot to Load the NVIDIA Driver
sudo reboot
Confirm NVIDIA Driver Installation on Debian
nvidia-smi
but the last command yielded
-bash: nvidia-smi: command not found
As suggested in the “Troubleshooting” section I tried:
sudo apt install nvidia-smi
nvidia-smi is already the newest version (595.58.03-1)
Ironically, I was getting so frustrated trying to get Steam games to run on this machine back when it had an Intel ARC B580 video card, that I decided to buy a new *Nvidia* card – the RTX-5060 Ti – so that my hardware would be *more compatible* and *easier to install drivers for*.
Is there any way to get this to work? If it matters , I am pretty certain that the actual installation and build of the kernel modules completed without error…
UPDATE: I have discovered that what is happening is that although the driver was built successfully it failed to install because it was not “signed” with a “certificate”. I am reviewing content on this site as well as others to determine how to move forward. I want to leave Secure Boot enabled on the this PC because it also hosts a Windows 11 installation. So I am going to try and figure out how to digitally sign this driver so it will load.
Steve, your follow-up confirmed two separate issues. You were right about the guide needing improvement: NVIDIA’s CUDA repository
nvidia-smipackage for the 595 branch is a transitional dummy, so APT can say it is installed while the command is still missing. The article now usesnvidia-driver-cuda, which provides/usr/bin/nvidia-smi.For Secure Boot, keep it enabled and enroll DKMS’s MOK key. On Debian 13 with the CUDA repo, this is normally enough:
At the MOK screen, choose Enroll MOK, enter the temporary password, then reboot. If
dkms generate_mokis unavailable ormok.pubis missing, use the article’s Secure Boot section because it now includes the older Debian fallback paths too.Hi Joshua! Just a quick note (and a big “thank you”!) to let you know I was successful in getting the Nvidia driver installed for the RTX5060 Ti. I am running driver version 595.58.03-1 under kernel 6.12.73+deb13+1-amd64.
However I am still trying to figure out how the particular steps *I* went through (more on this later) managed to actually work! Here is what I did, including one thing I perhaps should not have done:
1) Since I had not had this machine up for a couple of weeks I instinctively did
sudo apt update
sudo apt upgrade
The latter step apparently upgraded me from kernel 6.12.74 to 6.12.88. This was probably a mistake as we shall see…
2) I then performed the steps in your reply to me above:
$ sudo apt install nvidia-driver-cuda mokutil openssl
$ sudo dkms generate_mok
$ sudo mokutil --import /var/lib/dkms/mok.pub
$ sudo reboot
After these steps the boot process still stopped at the “starting CUPS” step as it had all along. I used ctrl-alt-F2 to get a console and then logged in. I presumed the driver was still not loading for some reason, probably related to Secure Boot and the certificate problem. I consulted your Troubleshooting section topic “Secure Boot Blocks NVIDIA DKMS Modules” and did the steps under “Install mokutil and confirm Secure Boot state:” followed by the “generate_mok” steps.
Here I rebooted but still got stopped at the “starting CUPS” stage (i.e. “black screen”; ctrl-alt-F2). I saw the next steps about “If the NVIDIA module was already built before the key was enrolled…” and realized they applied to my situation, so I performed these steps next. In fact I wrote a bash script that executes these commands and tees the output (STDOUT & STDERR) to a log file in my home directory, since the first time I ran them manually, the output went by too quick to read and there appeared to be an error message. I ran the script and captured the output:
Error! Your kernel headers for kernel 6.12.88+deb13-amd64 cannot be found at /lib/modules/6.12.88+deb13-amd64/build or /lib/modules/6.12.88+deb13-amd64/source.
Please install the linux-headers-6.12.88+deb13-amd64 package or use the --kernelsourcedir option to tell DKMS where it’s located.
update-initramfs: Generating /boot/initrd.img-6.12.88+deb13-amd64
Seeing this I realized what I had done – my previous build and installation of the Nvidia driver which was successful was done under kernel 6.12.74+deb13+1-amd64 which meant I had headers for that kernel but not the one I was now running (6.12.88). So I thought the best plan would be to restore the machine to the backup I made immediately after the successful driver build, and then repeat the steps I had done so far today *without* doing any “sudo apt update” or “sudo apt upgrade” commands like I had done before. And here is where it gets weird…
This machine dual boots with Windows 11. It has two NVMe SSDs, a 1TB Gen.5 (very fast) and a 4TB Gen.4 (pretty fast). Windows is installed on the 1TB drive. To take advantage of the Gen.5 speed for Debian, I installed “/” (root) on the 1TB Gen.5 but to avoid problems with Windows corrupting the boot process when booting from the same disk as Debian, I put the “/boot” (2GB) partition on the 4TB Gen.4 drive. Finally, “/home” is also on the 4TB Gen.4 drive, to take advantage of all that fast storage space.
So, as mentioned above, I decided I needed to revert to kernel 6.12.74 and re-do the steps I had already done today to solve the certificate problem with the Nvidia driver. I use “Clonezilla” and I had made backups of both the “/” and “/boot” partitions immediately after successfully building and installing Nvidia driver 595.58.03-1. I then reinstalled both of these partition images to their respective disks and then rebooted… and to my delight, amazement, and befuddlement, this time the machine booted up perfectly into Debian 13.2 and then straight into KDE Plasma / Wayland!
Pardon my French but “WTF”?
I am mystified by how and why this worked. I thought all the steps I took today made changes *only* to the “/” and “/boot” partitions? Did the MOK certificate step make some change in the firmware on the motherboard (Gigabyte X870E Aorus Master) or perhaps in the TPM 2.0 module?
At any rate it looks like I now have a working system running Debian 13.2, kernel 6.12.74, with Nvidia driver 595.58.03-1 on an RTX5060 Ti (16GB) video card! Thanks again for all your help!
Steve, the weird part is real but explainable: MOK enrollment is stored in UEFI firmware through shim’s MOK database, not in Debian’s
/or/bootpartitions and not in the TPM. So the enrollment survived your Clonezilla restore. The restore brought back the 6.12.74 kernel and NVIDIA module that had already been built, and the enrolled DKMS certificate finally let Secure Boot trust it. The 6.12.88 error was separate: DKMS could not rebuild for that running kernel because matching headers were missing. I updated the article to put that header check before the forced DKMS rebuild.Hi,
I’ve installed the nvidia-open version on Trixie, to replace the drive 550 in the debian vanilla repository (they show some error in the logs, I prefer update).
Now, if I use drm, xorg do not start BUT if I restart the service sddm in tty2, it works.
The xorg error is:
[ 17.478] (II) Loading sub module “fb”
[ 17.478] (II) LoadModule: “fb”
[ 17.478] (II) Module “fb” already built-in
[ 17.478] (EE)
[ 17.478] (EE) Backtrace:
[ 17.479] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.479] (EE) 0: /usr/lib/xorg/Xorg (?+0x0) [0x55b32d1cec6d]
[ 17.479] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.480] (EE) 1: /lib/x86_64-linux-gnu/libc.so.6 (?+0x0) [0x7f17b9577df0]
[ 17.480] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.480] (EE) 2: /lib/x86_64-linux-gnu/libc.so.6 (?+0x0) [0x7f17b95cc95c]
[ 17.480] (EE) 3: /lib/x86_64-linux-gnu/libc.so.6 (gsignal+0x12) [0x7f17b9577cc2]
[ 17.481] (EE) 4: /lib/x86_64-linux-gnu/libc.so.6 (abort+0x22) [0x7f17b95604ac]
[ 17.481] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.481] (EE) 5: /lib/x86_64-linux-gnu/libc.so.6 (?+0x0) [0x7f17b9560420]
[ 17.481] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.481] (EE) 6: /usr/lib/xorg/Xorg (?+0x0) [0x55b32d0300d7]
[ 17.481] (EE) 7: /usr/lib/xorg/modules/libglamoregl.so (glamor_init+0xcc) [0x7f17b0f5167c]
[ 17.482] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.482] (EE) 8: /usr/lib/xorg/modules/drivers/modesetting_drv.so (?+0x0) [0x7f17b0f92728]
[ 17.482] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.482] (EE) 9: /usr/lib/xorg/modules/drivers/modesetting_drv.so (?+0x0) [0x7f17b0f887fe]
[ 17.482] (EE) 10: /usr/lib/xorg/Xorg (AddGPUScreen+0xf4) [0x55b32d052044]
[ 17.482] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.482] (EE) 11: /usr/lib/xorg/Xorg (?+0x0) [0x55b32d0b0191]
[ 17.482] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.482] (EE) 12: /usr/lib/xorg/Xorg (?+0x0) [0x55b32d0b5e65]
[ 17.482] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.482] (EE) 13: /usr/lib/xorg/Xorg (?+0x0) [0x55b32d0b23ca]
[ 17.482] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.482] (EE) 14: /usr/lib/xorg/Xorg (?+0x0) [0x55b32d0b2b23]
[ 17.482] (EE) 15: /usr/lib/xorg/Xorg (config_init+0xd) [0x55b32d0b139d]
[ 17.483] (EE) 16: /usr/lib/xorg/Xorg (InitInput+0xc1) [0x55b32d094531]
[ 17.483] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.483] (EE) 17: /usr/lib/xorg/Xorg (?+0x0) [0x55b32d055c8d]
[ 17.483] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 17.483] (EE) 18: /lib/x86_64-linux-gnu/libc.so.6 (?+0x0) [0x7f17b9561ca8]
[ 17.483] (EE) 19: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0x85) [0x7f17b9561d65]
[ 17.483] (EE) 20: /usr/lib/xorg/Xorg (_start+0x21) [0x55b32d03e641]
[ 17.483] (EE)
[ 17.483] (EE)
Fatal server error:
[ 17.483] (EE) Caught signal 6 (Aborted). Server aborting
[ 17.483] (EE)
[ 17.484] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[ 17.484] (EE) Please also check the log file at “/var/log/Xorg.0.log” for additional information.
[ 17.484] (EE)
[ 17.619] (EE) Server terminated with error (1). Closing log file.
Thanks for the detailed report and Xorg log, Lorenzo. The backtrace points to a known race condition on Debian Trixie with nvidia-open drivers and kernel modesetting. At first boot, SDDM starts before the NVIDIA DRM render nodes (
/dev/dri/renderD128) are fully initialized, causing the modesetting X driver to crash when glamor_init tries to use them. Your workaround of restarting SDDM manually works because by then the render nodes are ready.This timing issue affects systems using nvidia-open with DRM modesetting, particularly on dracut-based Debian 13 installations. Two approaches can resolve it:
Option 1: Add NVIDIA modules to early boot
Force NVIDIA modules to load during initramfs by adding them to the dracut configuration:
Option 2: Delay display manager startup
Create an override to add a delay before SDDM starts, giving the render nodes time to initialize:
Try Option 1 first since it addresses the root cause. The nvidia-open modules initialize faster when loaded early in the boot process rather than on-demand. If Option 1 alone does not resolve it, add Option 2 as a fallback. After either change, reboot and verify that SDDM starts successfully on the first attempt.
I have added this troubleshooting section to the article under “Xorg Fails on First Boot with DRM Modesetting (Debian 13)” so future readers with the same issue can find it directly. Thanks for the detailed Xorg log, it made pinpointing the race condition much easier.
The Nvidia APT repo method does not seem to work (anymore?). APT complains about unresolved dependencies (and rightly so!)
For example I run:
> sudo apt install nvidia-driver cuda nvidia-settings nvidia-smi
I get errors:
Unsatisfied dependencies:
nvidia-driver-cuda : Conflicts: nvidia-smi
nvidia-driver-libs : Depends: libnvidia-egl-xcb1 (<= 575.51.03-1) but 1:1.0.1-1 is to be installed
Depends: libnvidia-egl-xlib1 (<= 575.51.03-1) but 1:1.0.1-1 is to be installed
Recommends: nvidia-driver-libs:i386 (= 575.51.03-1)
nvidia-smi : Depends: nvidia-alternative (= 560.35.05-1)
Depends: libnvidia-ml1 (= 560.35.05-1) but 575.51.03-1 is to be installed
Indeed if you look at the "nvidia-smi" package in your web browser here:
https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/
There's basically no package since version 560.xx
Looks like the dependencies on these packages are a giant mess now and not all of them are being generated for all the driver versions being released.
Thanks for reporting this, arustictop. You’ve identified a legitimate packaging issue with NVIDIA’s CUDA repository where nvidia-smi versions lag behind current driver releases, creating dependency conflicts. This affects Debian 12 and 11 users specifically.
The conflict happens because nvidia-driver-cuda (part of the full driver stack) conflicts with the standalone nvidia-smi package when you try to install both explicitly. The solution is to avoid listing nvidia-smi separately since it’s already included as a dependency when you install the driver metapackage. Use this command instead:
For the proprietary driver variant. If you need the open-source kernel modules, use:
The nvidia-driver metapackage automatically pulls in nvidia-smi as a dependency at the correct matching version, avoiding the version mismatch you encountered. The article has been updated to reflect this working installation command pattern based on NVIDIA’s official Debian installation guide.
The libnvidia-egl-xcb1 and libnvidia-egl-xlib1 dependency issues you mentioned stem from Debian’s base packages having newer versions than what the NVIDIA CUDA repository expects. These conflicts typically resolve themselves when you let APT handle dependencies automatically rather than forcing specific package combinations. If you still encounter version conflicts, verify your system is fully updated with
sudo apt update && sudo apt upgradebefore attempting driver installation.For Debian 13 Trixie users: NVIDIA’s CUDA repository currently doesn’t support Debian 13, so you must use Debian’s default repositories instead (Method 1 in the guide). Debian 13 ships driver versions 550.x and 535.x through the standard repositories without these packaging conflicts.
Hi Joshua, what do you mean by “it is recommended to install all the drivers”? I’ve just installed the “NVIDIA Drivers With Cuda Support (Proprietary)” for my gtx1060 6gb, but are you recommending I also install the opensource cuda support driver too?
Thanks,
Tim
Thanks for the question, Tim. You only need to install ONE driver variant, not both. The GTX 1060 is a Pascal architecture GPU, so you should stick with the proprietary NVIDIA driver you already installed. You’re all set.
The “recommended to install all drivers” language was unclear and has been removed from the guide. Here’s what actually matters for your GTX 1060:
Installing both simultaneously creates conflicts and serves no purpose. The system uses one driver at a time. The open-source variant targets newer hardware (Turing/Ampere/Ada Lovelace) where NVIDIA invested more optimization effort. For Pascal-generation cards, the proprietary driver remains the recommended choice.
Your current setup with the proprietary driver and CUDA support is exactly what you need for gaming, rendering, or machine learning workloads on the GTX 1060. No additional driver installation necessary.
Tried this twice. No success it just errors out on me
Which part? Got any error logs you can post? This would be helpful.
Also, your graphics card, system information.
I have 5090 and installed proxmox and get the error:
root@pve:~# apt install nvidia-driver nvidia-kernel-open-dkms cuda nvidia-smi nvidia-settings
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
nvidia-driver-cuda : Conflicts: nvidia-smi
nvidia-driver-libs : Depends: libnvidia-egl-xcb1 (<= 575.51.03-1) but 1:1.0.1-2 is to be installed
Depends: libnvidia-egl-xlib1 (<= 575.51.03-1) but 1:1.0.1-2 is to be installed
Recommends: nvidia-driver-libs:i386 (= 575.51.03-1)
nvidia-smi : Depends: nvidia-alternative (= 560.35.05-1)
Depends: libnvidia-ml1 (= 560.35.05-1) but 575.51.03-1 is to be installed
Recommends: nvidia-kernel-dkms (= 560.35.05-1) but it is not installable or
nvidia-kernel-560.35.05 or
nvidia-open-kernel-560.35.05 but it is not installable
E: Unable to correct problems, you have held broken packages.
Thanks for reporting this, Steven. The RTX 5090 is Blackwell architecture, which requires NVIDIA’s open-source kernel modules exclusively. Your error shows version conflicts because you explicitly installed nvidia-smi as a separate package, which creates mismatches between nvidia-smi 560.x and the driver stack 575.x.
The nvidia-driver metapackage automatically includes nvidia-smi at the correct matching version, so installing it separately causes the dependency conflicts you are seeing. Additionally, nvidia-driver-cuda explicitly conflicts with standalone nvidia-smi installations.
Remove the conflicting packages first:
Update your package cache to reflect the removal:
Install the driver without explicitly specifying nvidia-smi:
After installation completes, reboot to activate the driver:
Once the system restarts, verify the driver loaded correctly:
The nvidia-smi binary comes from nvidia-driver automatically, keeping versions synchronized. Proxmox uses its own kernel, so before installation verify your kernel headers match your running kernel with
uname -r, then install the corresponding Proxmox kernel headers package (typicallypve-headers-$(uname -r)). If conflicts persist, ensure you enabled both contrib and non-free repositories per the guide’s pre-installation steps.Hi!
At the step “Debian 12 Bookworm Import GPG Key for Nvidia” the error occurs “curl: (22) The requested URL returned error: 403
gpg: no OpenPGP format data found”
Thanks for reporting this, Zinoviev. The 403 error indicates NVIDIA changed how they distribute their repository GPG key. The direct .pub file download method is no longer working.
Use this updated method to import the NVIDIA GPG key. First, install the CUDA keyring package which handles the GPG key automatically:
For Debian 12 Bookworm:
For Debian 11 Bullseye:
This keyring package installs the GPG key and repository configuration automatically, replacing the manual curl method. After running these commands, proceed with the driver installation steps from the guide. The article has been updated to reflect this change.
Joshua
My Debian 12 was updated to nvidia driver 560 which killed it as I was running on 535 quite smoothly can I stop this from happening again .
Bob
Thanks for sharing this, Bob. Unexpected driver upgrades breaking a stable setup is exactly what NVIDIA’s version pinning packages prevent. You can lock your system to the 535 driver branch to avoid automatic upgrades to 560 or newer versions.
First, downgrade back to the 535 driver if you haven’t already:
Then install the pinning package to lock your system to the 535 branch:
This prevents APT from upgrading to 560 or any newer driver branches while still receiving security updates within the 535.x series. The pinning package creates an APT preference that tells the package manager to stick with 535.
Verify the pinning is active:
You should see the 535 version marked as the candidate even if newer versions exist in the repository. The guide’s “Lock Driver to Specific Version or Branch” section covers this feature in detail for future reference.
Joshua
I had driver Linux-x86_64-535.216.01 working fine on my GTX1050 Ti , an update pushed the driver to 560 which does not work I have to start all over !
Bob
nvidia-detect was not available within non-free-firmware. I had to add “non-free” to make it visible to `sudo apt install`.
So, here is the entire command I propose to modify the corresponding one in this tutorial :
`sudo add-apt-repository contrib non-free-firmware non-free`
Thanks for the feedback Thibault, I’ll make a point to update the article.
Thank you so much for this tutorial and keeping it up-to-date! One problem though… The 32-bit support is at version 555, while the 64-bit support is at 560. Is there coming an update for it, or can I install 64-bit version 555?
Thanks for the kind words, Arthur. The version mismatch between 64-bit drivers (560) and 32-bit libraries (555) was temporary and happened when NVIDIA released new driver versions before the corresponding 32-bit packages finished building and testing.
Your system worked fine with this mismatch for most applications. The 32-bit libraries (nvidia-driver-libs:i386) provided compatibility for older 32-bit games and applications, while your primary 64-bit driver handled all GPU operations. The version difference didn’t affect stability or performance.
The 32-bit packages typically caught up within a few days to weeks. You could have either waited for the 555 32-bit libraries to update to 560, or downgraded your 64-bit driver to 555 if you needed exact version matching:
By now, the 32-bit packages have updated to match the 64-bit version through regular system updates. This type of temporary version lag is normal in NVIDIA’s release cycle and resolves itself automatically.
Hello and thank you for the tutorial. Very well written and easy to follow.
Everything works well, but unfortunately, after rebooting, the system gets stuck on the login screen (keeps returning to it).
The system is a fresh Debian 12 KDE with Nvidia drivers including Cuda and Wayland. It’s a 2-monitor setup with a GTX 2080.
When I switch to X11 at login, I can sign in. However, the graphics are unusual: multiple backgrounds and windows on both monitors. I can open a CLI, the keyboard is QWERTY instead of QWERTZ. But that’s manageable.
As a Linux newbie, I’m a bit lost and hoping for some help here. Unfortunately, I couldn’t find anything suitable online 🙁
Best regards,
Elmar
Thanks for the detailed report, Elmar. The login loop on Wayland with your GTX 2080 indicated missing kernel modesetting configuration, which was required for NVIDIA Wayland support. The unusual multi-monitor behavior in X11 suggested display configuration conflicts.
First, verify kernel modesetting was enabled for NVIDIA:
If this showed
N, enable it with:Additionally, enable NVIDIA power management for proper suspend/resume and Wayland session availability:
These steps are detailed in the guide’s “Configure Wayland Support” section. The keyboard layout reverting to QWERTY suggested KDE wasn’t loading your user session properly due to the Wayland initialization failure. Once modesetting was configured, both Wayland sessions and proper multi-monitor X11 behavior should have worked correctly.
Hello Joshua,
Thank you very much for your tips. I have now tried several fresh installations and installed the drivers both via the repository using your method and directly as *.run files. The error remains the same. I’m now going to check under udev.d to see if all the rules are present (a tip from another forum pointed to a rule that is blocking the Nvidia driver). Setting up a new system doesn’t take long.
Under X11, the NVIDIA driver is present, but the regional settings are disabled. This has set the keyboard layout to English, and I cannot activate German or add the language, even though it was available before.
Wayland is important to me because I have monitors of different sizes, all of which can do 4k. I need to be able to scale them individually; otherwise, I can’t use the setup for graphics and video. I need the NVIDIA drivers to make full use of Davinci Resolve.
I will follow your tips and report back.
Best regards,
Elmar
Thanks for the detailed follow-up, Elmar. The fact that the issue persisted across multiple fresh installations and both APT and runfile methods pointed to either a configuration conflict or hardware-specific quirk with your multi-monitor 4K setup rather than installation problems.
The udev rules investigation was a good direction. Check if any custom udev rules were interfering with NVIDIA device initialization:
For the KDE regional settings being disabled under X11, this typically indicated the plasma-desktop session wasn’t loading your user configuration properly. Verify your display manager configuration recognized the NVIDIA driver:
For your DaVinci Resolve workflow with mixed 4K monitors requiring per-display scaling, Wayland was indeed the right choice. The kernel modesetting and power management configuration from the previous reply should have enabled proper Wayland sessions. Additionally, verify your monitors were detected correctly:
If you discovered specific udev rules or configuration files causing conflicts, sharing those details would have helped identify the root cause for your particular hardware combination.
Hi, Joshua,
Having an issue when I use Method 2.
After following the steps and arriving at:
`sudo apt install nvidia-driver nvidia-smi nvidia-settings`
I get an error claiming the installation failed due to unmet dependencies:
`nvidia-alternative : Depends: glx-alternative-nvidia (>= 1.2) but it is not installable`
`E: Unable to correct problems, you have held broken packages.`
This is on a fresh install of Debian 12. Any ideas?
I have a similar error!
Hello Joshua!
I have an issue when I use Method 2 the similar like Mat.
How you can see on Nvidia’s website:
https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/
the latest version of nvidia-driver, nvidia-msi and nvidia-settings are 560.35.03-1.
But when I am using:
echo ‘deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /’ | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list,
and after this:
apt search nvidia-driver,
apt search nvidia-settinds,
apt search nvidia-smi,
I see that latest version of nvidia-driver and nvidia-settings are: 565.57.01-1 amd64,
and latest version of nvidia-smi is: 560.35.03-1 amd64.
565.57.01-1 is beta-version (how you can see on Vnidia website).
And when I try:
apt install nvidia-driver nvidia-smi nvidia-settings,
I receive error:
Packages with unsatisfied dependencies:
nvidia-smi : Dependencies: nvidia-alternative (= 560.35.03-1)
Dependencies: libnvidia-ml1 (= 560.35.03-1) but 565.57.01-1 will be installed
Recommends: nvidia-kernel-dkms (= 560.35.03-1) but 565.57.01-1 will be installed or
nvidia-kernel-560.35.03 or
nvidia-open-kernel-560.35.03 but it cannot be installed
E: Unable to troubleshoot, you have broken fixed packages.
P.S. I used your tutorial long time. But few days ago I received update 565.57.01-1 for nvidia and all broked.
I purged nvidia and tried install again like you wrote. And now I receive error.
Your Method 1 is work. Installing *.run-file from Nvidia work. But Method 2 not work.
Please, tell me how I can fix this, because Method 2 is the best.
Thank you!
Thanks for the detailed report, conscious. You identified exactly what was happening: NVIDIA pushed beta driver 565.57.01 to their CUDA repository before the supporting packages (nvidia-smi 560.35.03) were updated to match, creating version conflicts.
The explicit
nvidia-smiinstallation caused this issue. Thenvidia-drivermetapackage automatically includesnvidia-smias a dependency at the correct matching version. Installing it separately forced APT to resolve conflicting version requirements between the beta driver and stable nvidia-smi.Remove nvidia-smi from the installation command:
If you wanted to avoid beta drivers entirely and stick with stable 560.x, pin the driver to that specific version:
Then install the version pinning package to prevent future beta upgrades:
The guide has been updated to remove the explicit nvidia-smi installation, which was causing these version conflicts. APT handles nvidia-smi automatically when you install nvidia-driver, ensuring version consistency.
Thanks for reporting this, Mat. The
glx-alternative-nvidiadependency error indicated a conflict between NVIDIA’s CUDA repository packages and Debian’s default repository packages. This typically happened when package priorities weren’t set correctly or when mixing installation methods.First, verify which repositories were providing NVIDIA packages:
The
nvidia-smipackage should not have been installed explicitly, as it’s automatically included as a dependency ofnvidia-driver. Installing it separately could have caused version conflicts. The correct command was:To resolve the dependency conflict, remove any partially installed NVIDIA packages and reinstall cleanly:
If the issue persisted, ensuring Debian’s contrib repository was enabled often resolved the
glx-alternative-nvidiadependency:The guide has been updated to remove the explicit
nvidia-smiinstallation, as it’s automatically provided bynvidia-driver.How do I remove the NVIDIA APT so that I can install the default one?
Never mind. I figured it out.
Thanks for asking, Chris. To switch from the NVIDIA CUDA repository back to Debian’s default repository, remove the NVIDIA repository configuration and purge the installed drivers:
Then install drivers from Debian’s default repository following Method 1 in the guide:
This removed the NVIDIA CUDA repository, cleaned up any CUDA-sourced driver packages, and installed the stable Debian-tested drivers instead. The Debian repository provides more conservative driver versions with thorough distribution testing.
Thanks, got me up to 545.23.08 on debain 12 sadly I think 550.40+ is required for the new 6GB 3050
Detected NVIDIA GPUs:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA107 [GeForce RTX 3050 6GB] [10de:2584] (rev a1)
Checking card: NVIDIA Corporation GA107 [GeForce RTX 3050 6GB] (rev a1)
Uh oh. Your card is not supported by any driver version up to 545.23.08.
A newer driver may add support for your card.
Newer driver releases may be available in backports, unstable or experimental.
Guess I am risking the vendor run/installer
Just in case anyone with the same card finds this comment.
I can confirm I got the 550.40.x drivers directly from the nvidia run script on the nvidia website installed and they work fine so far on Debian 12
Thanks, Billy, for posting the feedback.
Currently I have this as a method for Fedora Nvidia Drivers installation, as currently Nvidia and Fedora from 38 onwards is a complete mess. I will add the same method for Debian as well as an optional back up method if all else fails.
What driver version from Nvidia APT PPA will work with the latest stable Debian kernel 6.1.0-18 ?
For example version 535.104.12 does not work.
It worked perfectly. I’ve chosen the option “Install NVIDIA Drivers Without Cuda Support (Proprietary)”.
Normally I would never leave comment on a website/blog/forum. You’ve helped me we with a problem that I have been struggling for over 5 years, now I can finally connect to a monitor with HDMI. None of the other solutions provided on the internet worked for me (Connect Debian to external monitors, while having a hybrid GPU (Nvidia/Intel)). The only resort I had, was to choose Linux Mint.
Many thanks, keep this good work alive!
Thanks Anon for the feedback, glad it worked out. 🙂
Thank you for the tutorial. It helps a lot. The only thing missing is the fact that nvidia driver may not work properly if you have secure boot enabled in your bios settings.
Thank you very much. Now everything working good. Because nvidia-driver from Debian repository not working good.
Thank you again!