Last active
March 8, 2026 20:37
-
-
Save djosephsen/123f32507ff9badcb8ed819741feb768 to your computer and use it in GitHub Desktop.
How the AI and I finally managed to downgrade the NVIDIA Drivers on Pop!_OS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| How the AI and I finally managed to downgrade the NVIDIA Drivers on Pop!_OS | |
| (RTX 40-series / Kernel 6.12+) | |
| Take it away claude: | |
| The Problem: The "Latest Driver Trap" | |
| On Pop!_OS 22.04 (and upstream Ubuntu Jammy), older NVIDIA driver packages (like | |
| nvidia-driver-550, 560, or 565) have been turned into meta-packages that point to the | |
| latest version (currently 580). | |
| If version 580 is unstable on your hardware, apt will actively fight you if you try to | |
| downgrade, effectively "trapping" you on the broken driver or forced upgrade loop. | |
| Additionally, the NVIDIA Open Kernel Modules (now the default) can cause critical Xid | |
| 154/31 MMU faults on Ada Lovelace (RTX 40-series) laptop GPUs. | |
| The Solution: Surgical Manual Installation | |
| To fix this, we bypass the package manager's dependency logic by downloading real binary | |
| components from the graphics-drivers PPA and installing them manually via dpkg. | |
| 1. Preparation (From the Desktop) | |
| Verify you have the necessary kernel headers and build tools: | |
| 1 sudo apt update | |
| 2 sudo apt install build-essential gcc make dkms linux-headers-$(uname -r) | |
| Create a directory and download the Real 565.77 Proprietary Binaries: | |
| 1 mkdir -p ~/nvidia-565-manual && cd ~/nvidia-565-manual | |
| 2 sudo add-apt-repository ppa:graphics-drivers/ppa -y | |
| 3 sudo apt update | |
| 4 | |
| 5 # Download components (specify the exact version to avoid the 580 trap) | |
| 6 V="565.77-0ubuntu0~gpu22.04.1" | |
| 7 apt-get download \ | |
| 8 nvidia-driver-565=$V nvidia-dkms-565=$V nvidia-kernel-common-565=$V \ | |
| 9 nvidia-kernel-source-565=$V libnvidia-compute-565=$V libnvidia-compute-565:i386=$V \ | |
| 10 libnvidia-extra-565=$V nvidia-compute-utils-565=$V libnvidia-decode-565=$V \ | |
| 11 libnvidia-decode-565:i386=$V libnvidia-encode-565=$V libnvidia-encode-565:i386=$V \ | |
| 12 nvidia-utils-565=$V xserver-xorg-video-nvidia-565=$V libnvidia-cfg1-565=$V \ | |
| 13 libnvidia-fbc1-565=$V libnvidia-fbc1-565:i386=$V libnvidia-gl-565=$V \ | |
| 14 libnvidia-gl-565:i386=$V libnvidia-common-565=$V nvidia-firmware-565-565.77=$V \ | |
| 15 libnvidia-egl-wayland1 libnvidia-egl-wayland1:i386 | |
| 2. The "Clean Room" Install (From TTY) | |
| 1. Switch to TTY3 (Ctrl+Alt+F3) and log in. | |
| 2. Stop the Desktop: sudo systemctl stop gdm | |
| 3. Nuke existing drivers: | |
| 1 sudo apt remove --purge "*nvidia*" -y || sudo dpkg --purge --force-depends $(dpkg -l | |
| | grep nvidia | awk '{print $2}') | |
| 2 sudo apt autoremove -y | |
| 4. Manual Install: | |
| 1 cd ~/nvidia-565-manual | |
| 2 sudo dpkg -i *.deb | |
| 5. The Shield (Critical): Lock these versions so apt can never upgrade them to 580: | |
| 1 dpkg-query -W -f='${Package}\n' | grep 565 | xargs sudo apt-mark hold | |
| 2 sudo apt-mark hold libnvidia-egl-wayland1 | |
| 6. The Glue: Install any remaining standard system dependencies: | |
| 1 sudo apt install -f | |
| 7. Finalize: | |
| 1 sudo update-initramfs -u | |
| 2 sudo reboot | |
| Why this works | |
| * dpkg -i: Places the specific 565.77 files on disk without checking the "poisoned" | |
| Pop!_OS repositories. | |
| * apt-mark hold: Creates a permanent block that prevents Pop!_OS's 1001-priority rules | |
| from forcing an upgrade to 580. | |
| * Proprietary modules: By choosing the non-open binaries, we avoid the experimental | |
| memory-mapping bugs in the NVIDIA Open driver. | |
| --- | |
| Pro-tip: If you ever need to upgrade in the future, you must sudo apt-mark unhold these | |
| packages first. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment