If you are running a Quadro P2000 (or any Pascal-based GPU) on Debian 12, a standard apt upgrade in late 2025 likely broke your drivers. This happens because the latest NVIDIA drivers (v590+) have dropped support for your hardware, but Debian's repositories try to install them anyway.
Target Issue: NVIDIA-SMI communication failure after apt upgrade (Driver v590+ incompatibility).
My environment:
- Debian 12
- NVIDIA Quadro P2000 Installed
- NVIDIA Quadro P2000 Driver was upgraded to v590+
1. The Conflict: Why it Broke
In late 2025, NVIDIA moved the Quadro P2000 (Pascal) to a legacy support branch. Standard Debian repositories often push the v590+ driver, which explicitly ignores the P2000. To fix this, you must downgrade to the v580 series and lock the version.
2. Phase 1: Cleaning & Preparation
Before installing the correct driver, you must remove the broken ones and block the open-source Nouveau driver which often "claims" the GPU first.
A. Purge Broken Drivers
#!/bin/bash
sudo apt purge "^nvidia-.*"
sudo apt autoremove
If unsure, check what is installed:
#!/bin/bash
dpkg -l | grep -E "nvidia|cuda"
B. Blacklist the Nouveau Driver
If lspci -k shows Kernel driver in use: nouveau, the official driver will fail to load.
- Create the blacklist file:
sudo nano /etc/modprobe.d/blacklist-nouveau.conf - Add these lines:text
blacklist nouveau options nouveau modeset=0Use code with caution. - Update the boot image and reboot:
sudo update-initramfs -usudo reboot
3. Phase 2: Installing the 580-Series Branch
Using the official NVIDIA CUDA repository for Debian 12 ensures access to the specific 580-branch.
A. Add the 2025 Keyring & Repo
#!/bin/bash
# 1. Download and install the keyring
wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
# 2. Update your package lists
sudo apt update
B. Target the Specific Version
We use the pinning package to ensure the system targets the 580 branch specifically.
#!/bin/bash
sudo apt install nvidia-driver firmware-misc-nonfree linux-headers-$(uname -r)
sudo apt install nvidia-driver-pinning-580
sudo apt install cuda-drivers-580 nvidia-smi
4. Phase 3: Troubleshooting the Build (DKMS)
If lsmod | grep nvidia is still empty, the driver failed to build for your kernel.
A. Check Build Status
#!/bin/bash
sudo dkms status
If it says added but not installed, the build failed.
B. Force a Rebuild
Trigger a manual re-compile of the kernel modules:
#!/bin/bash
# Force DKMS to build the 580 module
sudo dpkg-reconfigure nvidia-kernel-dkms
# Update the boot image
sudo update-initramfs -u
# Reboot
sudo reboot
If lsmod | grep nvidia is returning results, the driver is successfully loaded into your kernel.
C. Verify Version
To confirm you are indeed on the 580.xx branch that supports your P2000, run:
#!/bin/bash
cat /proc/driver/nvidia/version
D. Manual Load - Optional
Try to force-insert the driver. If this returns a "No such device" or "Operation not permitted" error, check your Secure Boot status in BIOS.
#!/bin/bash
sudo modprobe nvidia
sudo modprobe nvidia-drm
E. nvidia-smi tool issues: nvidia-smi is installed, still say sh: 1: nvidia-smi: not found - If lsmod shows the driver is loaded but the system cannot find the nvidia-smi command, it means the binary is either not in your system PATH or it was installed to a non-standard location during the driver downgrade.
Search your entire system to see where the executable actually lives:
#!/bin/bash
sudo find / -name nvidia-smi 2>/dev/null
if find only shows the /usr/share/doc/ directory, it means you have the documentation installed, but the binary executable itself is missing. This usually happens on Debian 12 when there is a mismatch between the driver version and the utility package.
Since your lsmod shows the driver is loaded, we just need to force-install the actual executable.
1. Identify your exact driver version
Before installing the tools, we must match your loaded driver's version. Run:
#!/bin/bash
cat /proc/driver/nvidia/version
Look for the version number (e.g., 535.xx, 550.xx, or 580.xx).
2. Install the matching Utility Package
Based on that version, install the specific utility package. Do not just install nvidia-smi; you need the versioned nvidia-utils.
#!/bin/bash
sudo apt install cuda-drivers-580
3. Check for the Binary again
Once the installation finishes, verify the binary exists:
#!/bin/bash
ls -l /usr/bin/nvidia-smi
4. If it's still missing (Manual Extract)
If apt says everything is installed but the file is missing, the package may have failed to unpack correctly due to the previous conflicts. Force it:
#!/bin/bash
sudo apt-get install --reinstall nvidia-utils-common nvidia-kernel-common
sudo apt-get install --reinstall nvidia-smi
5. Final Test
Once the file is in /usr/bin/nvidia-smi, you can finally run the command you wanted:
#!/bin/bash
nvidia-smi
5. Phase 4: Permanent Version Pinning
To prevent Debian from trying to "upgrade" you back to the broken v590 driver, you must put a hold on your working packages.
sudo apt-mark hold cuda-drivers-580 nvidia-smi nvidia-smicuda-drivers-580
Note: The following error may occurr: sudo apt-mark hold cuda-drivers-580 nvidia-driver-580 nvidia-smicuda-drivers-580 set on hold.nvidia-smi set on hold.E: Can't select installed nor candidate version from package 'nvidia-driver-580' as it has neither of them
The package nvidia-driver-580 is likely not the exact metapackage name used in the NVIDIA repository you added. Your system doesn't have a record of a package with that specific name to put on hold.
If you want to be extra thorough and lock the general nvidia-driver package (which likely wants to upgrade to 590+), you need to tell apt which version to hold, but since you don't have a 580 version of that specific package name installed, you should just hold the generic nvidia-driver which will prevent major changes:
#!/bin/bash
sudo apt-mark hold nvidia-driver
This will prevent any automatic upgrade process from touching your current, working 580 setup. Your system is protected from future breakage during apt upgrade. If you ever need to check which packages you've locked, you can run:
#!/bin/bash
apt-mark showhold
6. Phase 5: Monitoring your GPU
Now that the driver is communicating, use these command-line tools to watch your Quadro P2000:
Standard Watch (Real-time)
Updates the nvidia-smi dashboard every second:
#!/bin/bash
watch -n 1 nvidia-smi
Visual Monitoring (nvtop) - Optional
For an interactive, graph-based view:
#!/bin/bash
sudo apt install nvtop
nvtop
7. Common Issues After Kernel Upgrade
If nvidia-smi fails after a kernel update, do this:
7.1 Check if driver is loaded
#!/bin/bash
lsmod | grep nvidia
7.2 Check DKMS build status
#!/bin/bash
sudo dkms status
7.3 Check your running kernel
#!/bin/bash
uname -r
If NVIDIA module is missing for current kernel:
7.4 Install matching kernel headers
#!/bin/bash
sudo apt install linux-headers-$(uname -r)
7.5 Rebuild NVIDIA module (If needed)
#!/bin/bash
sudo dkms autoinstall
(manually load it if needed)
#!/bin/bash
sudo modprobe nvidia
7.6 Verify
#!/bin/bash
nvidia-smi
Why this happens
Each new kernel (e.g. 6.1.0-43-amd64) needs its own NVIDIA module build.
If headers aren’t installed, DKMS won’t build it automatically.
Summary Checklist:
- Kernel Headers: Always install
linux-headers-$(uname -r)before the driver. - Secure Boot: If
nvidia-smifails butlsmodshows the driver, Disable Secure Boot in BIOS. - initramfs: Always run
sudo update-initramfs -uafter changing driver configurations. - Documentation vs. Binary: If you get
sh: nvidia-smi: not found, ensure you installedcuda-drivers-580and not just the documentation package.


Comments 1 comment
Thnks! Oh, also, firmware-b43-installer package is package for Debian/Ubuntu-based systems that downloads and installs proprietary firmware for Broadcom 43xx wireless cards. It supports various cards, including BCM4311, BCM4312, BCM43131, and BCM43224.