Skip to content

system76-driver-nvidia metapackage should prioritize proprietary driver over open driver for Maxwell/Pascal GPUs #3640

Description

@Addin

Description

Pop!_OS 24.04 automatically installed nvidia-driver-580-open on a system with an NVIDIA GeForce GTX 950M (Maxwell architecture), which is not supported by the open-source kernel module. This results in repeated driver probe failures at boot and no GPU acceleration.

Hardware information

  • Laptop Model: HP Pavilion Gaming.
  • GPU: NVIDIA GeForce GTX 950M (GM107M, Maxwell architecture).
  • PCI ID: 01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev a2).

System information

  • Pop!_OS version: 24.04.
  • Kernel version: 6.16.3-76061603-generic.
  • Problematic driver: nvidia-driver-580-open (version 580.82.09).

Expected behavior

The system should:

  1. Detect that the GPU is Maxwell architecture.
  2. Install the compatible proprietary driver (nvidia-driver-580, nvidia-driver-550, or nvidia-driver-470).
  3. Boot without errors and provide GPU acceleration.

Actual behavior

  1. System installs nvidia-driver-580-open by default.
  2. Driver fails to load with repeated probe errors at boot:
NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 18de:139a)
NVRM: installed in this system is not supported by open
NVRM: nvidia.ko because it does not include the required GPU
NVRM: System Processor (GSP).
  1. No GPU acceleration available.
  2. lsmod | grep nvidia shows errors:
libkmod: ERROR ../libkmod/libkmod-module.c:2039 kmod_module_get_holders: 
could not open '/sys/module/nvidia/holders': No such file or directory
  1. nvidia-smi command fails because driver isn't loaded.

Steps to reproduce

  1. Install Pop!_OS 24.04 on a system with Maxwell-era NVIDIA GPU (GTX 9xx series).
  2. Allow system to install default NVIDIA drivers (or run sudo apt install system76-driver-nvidia).
  3. Reboot and observe boot errors.
  4. Run nvidia-smi - command fails because driver isn't loaded.

Resolution

After removing nvidia-driver-580-open and explicitly installing nvidia-driver-550, the system correctly upgraded to nvidia-driver-580 (proprietary version), which works perfectly with the GTX 950M.

Confirmed working configuration

  • Driver: nvidia-driver-580 (proprietary, NOT -open).
  • DKMS: nvidia-dkms-580 (proprietary, NOT -open).
  • GPU status: Fully functional with no boot errors.
  • nvidia-smi: Working correctly.

Working driver installation steps

# Remove the incompatible open driver
sudo apt remove --purge nvidia-driver-580-open nvidia-dkms-580-open nvidia-driver-570-open

# Install proprietary driver (550 or 535 work well)
sudo apt install nvidia-driver-550

# Install System76 metapackage (optional, for automatic updates)
sudo apt install system76-driver-nvidia

# Update initramfs and reboot
sudo update-initramfs -u
sudo reboot

Root cause

The system76-driver-nvidia metapackage has dependencies listed in this order:

nvidia-driver-580-open | nvidia-driver-580 | nvidia-driver-570-open | 
nvidia-driver-570 | nvidia-driver-550 | nvidia-driver-470

APT installs the first available option from this list. Since nvidia-driver-580-open appears first, it gets selected by default on fresh installations, even though it does not support Maxwell or Pascal GPUs.

Key finding: The proprietary nvidia-driver-580 works perfectly with Maxwell GPUs - only the -open variant is incompatible.

Impact

This affects all users with Maxwell (GTX 9xx) and potentially Pascal (GTX 10xx) GPUs who:

  • Perform fresh Pop!_OS 24.04 installations.
  • Run sudo apt install system76-driver-nvidia on existing systems.
  • Accept automatic driver updates.

These GPU generations are still very common in laptops and budget gaming systems.

Suggested fix

The system76-driver-nvidia metapackage should be improved to:

  1. Reorder dependencies - Prioritize proprietary drivers before open drivers:
   nvidia-driver-580 | nvidia-driver-580-open | nvidia-driver-570 | 
   nvidia-driver-570-open | nvidia-driver-550 | nvidia-driver-470
  1. Hardware detection - Check GPU architecture before selecting driver variant (open vs proprietary).

  2. Graceful fallback - If open driver fails to load during boot, automatically offer to install proprietary driver.

  3. User notification - Display clear message during installation about driver compatibility with different GPU generations.

  4. Update documentation - Clarify in Pop!_OS documentation that:

    • Open drivers only support Turing+ architectures (RTX 20 series and newer).
    • Maxwell/Pascal GPUs require proprietary drivers.
    • How to manually select the appropriate driver.

Additional context

The NVIDIA open kernel modules only support Turing architecture (RTX 20 series) and newer GPUs. Maxwell and Pascal GPUs require the proprietary driver. This breaking change wasn't clearly communicated to users installing or upgrading to Pop!_OS 24.04.

NVIDIA GPU architecture support:

  • ❌ Maxwell (GTX 9xx series) - Open driver NOT supported.
  • ❌ Pascal (GTX 10xx series) - Open driver NOT supported .
  • ✅ Turing (RTX 20xx series) - Open driver supported.
  • ✅ Ampere (RTX 30xx series) - Open driver supported.
  • ✅ Ada Lovelace (RTX 40xx series) - Open driver supported.

References

Logs

Attached are the system logs from when the issue was occurring (before the fix was applied):

dkms-status.log.
gpu-info.log.
nvidia-errors-boot.log.
nvidia-journal.log.
nvidia-packages.log.
system-info.log.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions