You run nvidia-smi to check your GPU, and instead of a clean table you get this: NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

This error almost always means the NVIDIA kernel module is not loaded, even when the driver files still sit on disk. A kernel update, a broken DKMS build, Secure Boot blocking the module, or the open-source nouveau driver taking over can all cause it. The fixes below move from the fastest checks to the deeper repairs, so start at the top and stop once nvidia-smi returns your GPU.
Why NVIDIA-SMI Cannot Communicate With the NVIDIA Driver
nvidia-smi is just a front end. It talks to the loaded NVIDIA kernel module (nvidia.ko). When that module is missing, mismatched with your running kernel, or blocked from loading, the tool has nothing to talk to and throws the communication failure.
So the real question is not “is the driver installed” but “is the matching kernel module loaded right now.” Most of the steps here confirm or fix exactly that.
Step 1: Reboot First
If the error appeared right after a system update or a fresh driver install, reboot before anything else. Driver installers and kernel upgrades often need a clean restart to load the new module.
sudo rebootAfter the system comes back, run nvidia-smi again. If it works, you are done. If it still fails, move on.
Step 2: Check Whether the Driver Module Is Loaded
Confirm whether the kernel actually loaded the NVIDIA module:
lsmod | grep nvidiaIf you see lines like nvidia, nvidia_uvm, and nvidia_modeset, the module is loaded and your problem is elsewhere. If the command returns nothing, the module did not load, which matches the error perfectly.
Try loading it manually:
sudo modprobe nvidiaWatch for any error text. A clean prompt with no output is a good sign. Run nvidia-smi again after this.
Step 3: Read the Kernel Log for the Real Reason
When modprobe fails, the kernel usually says why. Check the log:
sudo dmesg | grep -i nvidiaCommon messages and what they point to:
- “API mismatch” means the loaded module version and the userspace driver version do not match. A reinstall fixes this (Step 6).
- “module verification failed” or “Lockdown: … is restricted” points to Secure Boot blocking an unsigned module (Step 5).
- “nouveau” entries mean the open-source driver grabbed the GPU first (Step 4).
- “disagrees about version of symbol” means the module was built for a different kernel (Step 7).
Use the message to jump to the matching fix instead of guessing.
Step 4: Blacklist the Nouveau Driver
Nouveau is the open-source NVIDIA driver that ships with many distributions. If it loads first, the official module cannot bind to the card. Check for it:
lsmod | grep nouveauIf it shows up, blacklist it. Create a config file:
sudo bash -c 'echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist-nouveau.conf'Rebuild the initramfs so the change applies at boot:
sudo update-initramfs -u
sudo rebootOn Fedora or RHEL based systems, use sudo dracut --force instead of update-initramfs.
Step 5: Handle Secure Boot
Secure Boot refuses to load kernel modules that are not signed with a trusted key. After a fresh NVIDIA install, this is one of the most common reasons the module never loads.
You have two clean options.
Option A: Sign the module (recommended on machines you want to keep secure). On Ubuntu and Debian, the driver package can enroll a Machine Owner Key (MOK) during install. Reinstall the driver (Step 6) and, when prompted, set a password and complete the MOK enrollment on the blue screen during the next reboot.
Option B: Disable Secure Boot. Enter your UEFI/BIOS setup at boot, find the Secure Boot setting, and switch it to Disabled. Save and exit, then reboot and test nvidia-smi. If you also manage Windows on the same machine, review how your firmware behaves before flipping this, since some settings affect how Windows starts.
Step 6: Reinstall the NVIDIA Driver
A version mismatch (the “API mismatch” message from Step 3) almost always clears up with a clean reinstall that matches your current kernel.
On Ubuntu and Debian, let the system pick the recommended driver:
sudo apt update
sudo ubuntu-drivers autoinstall
sudo rebootTo install a specific version instead, list what is available first:
ubuntu-drivers devicesThen install the package it recommends, for example:
sudo apt install nvidia-driver-550
sudo rebootOn Fedora using RPM Fusion:
sudo dnf install akmod-nvidia
sudo rebootIf you originally used NVIDIA’s .run installer, rerun it and choose to reinstall, or remove it first with sudo nvidia-uninstall before installing through your package manager. Mixing the .run installer with package-manager drivers is a frequent cause of this exact error, so pick one method and stick with it.
Step 7: Rebuild the Module After a Kernel Update
A kernel upgrade is the single most common trigger. Your new kernel boots, but the NVIDIA module was built for the old one, so it never loads. DKMS exists to rebuild the module automatically, but it can silently fail if the matching kernel headers are missing.
Install the headers for your running kernel:
sudo apt install linux-headers-$(uname -r)Then force DKMS to rebuild every NVIDIA module:
sudo dkms autoinstall
sudo rebootCheck the current DKMS status with dkms status to confirm the NVIDIA module shows as “installed” for your active kernel.
Step 8: Confirm the Kernel and Headers Match
Mismatched kernel and header versions break the build quietly. Compare them:
uname -r
dpkg -l | grep linux-headersThe output of uname -r should have a matching linux-headers package. If your bootloader is loading an older kernel than the one you installed headers for, the build will target the wrong target. Update your bootloader and reboot into the newest kernel, then repeat Step 7.
Step 9: WSL2 and Cloud or Virtual Machines
If you hit this error inside WSL2, do not install a Linux NVIDIA driver inside the distribution. WSL2 uses the Windows host driver. Install or update the NVIDIA driver on Windows, make sure Windows is fully updated, then restart WSL with wsl --shutdown from a Windows terminal and reopen it.
On cloud GPU instances, the host may have reset or the instance may have launched without the GPU attached. Confirm the GPU is present with lspci | grep -i nvidia before reinstalling anything. If lspci shows no NVIDIA device at all, the problem is hardware allocation, not the driver.
Step 10: Verify the Fix
Once any step succeeds, confirm with the full check:
nvidia-smiA working result shows your driver version, CUDA version, GPU model, temperature, and memory usage. If you use the GPU for CUDA work, also confirm the toolkit sees it:
nvidia-smi --query-gpu=driver_version,name --format=csvNVIDIA-SMI Communication Error: Symptoms and Fixes
Symptom in dmesg | Most likely cause | Fix step |
|---|---|---|
Nothing in lsmod | Module not loaded | Step 2 and 7 |
| “API mismatch” | Driver and module version differ | Step 6 |
| “module verification failed” | Secure Boot | Step 5 |
| “nouveau” entries | Open-source driver loaded | Step 4 |
| “disagrees about version of symbol” | Built for old kernel | Step 7 |
No NVIDIA device in lspci | Hardware not attached | Step 9 |
The error reads like a missing driver, but the cause is nearly always a kernel module that did not load. Reboot first, confirm the module status with lsmod, read dmesg for the exact reason, and then apply the matching fix. A kernel-aware reinstall with the correct headers resolves the large majority of cases.
