Lately the nvidia drivers, especially since version 565, are going literally to hell, there's always something not working or half-working and basically the Archer has to waste time trying to find workarounds and "fix" what nvidia screwed up. So it's either that, or downgrading to an older version where things used to work smoothly. BUT!!! downgrading the nvidia driver isn't as easy as you could imagine. I suppose many of the Archers know about the CLI package named "downgrade" but it has some flaws - it doesn't download dependencies, unless you mention them. That's why in the case of dowgrading nvidia, I recommend downloading the packages and downgrading them locally/manually using pacman.
I finally learned how to properly downgrade the driver and decided to share this knowledge cuz I'm pretty sure there are people who still don't know how. Armed with this knowledge you can go back to an nvidia driver and/or kernel as old as 10 years ago, if you wanted to.
DO keep in mind: depending on how far back in time you wanna go with the driver version, you may have to download and downgrade this package as well: "libglvnd". The oldest available is from 2019, the latest one is from 2023. But I'm sure you can find even older versions than that, if you visit pkgs.org.
So here's how:
1. Personally I prefer to use the nvidia-dkms package (you need the package dkms installed) because dkms rebuilds the initial ramdisks on its own - you don't have to do anything driver post-install, except for rebooting your computer.
Also, having dkms and nvidia-dkms allows you to downgrade the kernel too, if necessary. In principle that's not mandatory but sometimes the whole system works better and smoother, if you pair a certain older version of the nvidia driver with an older kernel version.
So, if you choose to use nvidia-dkms and if you remember a driver version where everything was working flawlessly (in my case that was 555.58), you need to visit https://archive.archlinux.org/packages/ and download one by one these packages:
When I do that I move all of them to a dir named "03 NVIDIA DRIVER" and if you keep reading, you'll find out why.
While you're in the specified link, see and remember (or copy) the date the nvidia version was released. Usually all packages are being uploaded to this link too, apart from the worldwide repositories.
2. Knowing the date the drivers were released, visit the same address only with some minor differences: https://archive.archlinux.org/packages/g/gcc/ & https://archive.archlinux.org/packages/g/gcc-libs/. You can press Ctrl+F in your browser to find the same or an earlier date. I'll give you an example with one of my favorite driver versions so far - 510.54: this driver was released on 15-Feb-2022. So the gcc & gcc-libs versions you need will be released a day or two before that: a quick search in these addresses indicates that the gcc & gcc-libs versions are 11.2.0-2, released on 09-Feb-2022.
ALTOUGH, sometimes there might discrepancies. In such cases the only way to find out which gcc version is the right one is to download and install a few and then reinstall the downloaded nvidia version. I know that this sucks because it includes repetitive actions but you can never know which gcc version nvidia has decided to use building the driver. USUALLY this applies: "So the gcc & gcc-libs versions you need will be released a day or two before that" but not always, especially not with very old drivers.
In my case using 555.58-2 which has been released on 30-Jun-2024, this gcc version works with that driver: gcc-14.2.1+r134+gab884fffe3fc-1 which makes no sense because it has been released 4 months after the driver.
So, finding the right version of gcc & gcc-libs is a bit like the lottery but there's nothing we can do about that. And it's important to find the right version because if the driver has been built with a different version of gcc, after the reboot you won't get to your desktop. Instead, it will hang at "Reached target Graphical Interface" and then the dmesg screen will start flickering.
Those two packages I would put them in a dir named "01 GCC".
3. In a similar manner with date of release, as close as possible to the nvidia driver (a few days after the nvidia release is better - to make sure that kernel has been optimized to work with that specific nvidia version you wanted, search for both rolling and LTS kernels and download them. As I said earlier, downgrading the kernel isn't mandatory but I prefer to do the whole thing properly to ensure a smooth system working. So, for 555.58-2 I downloaded rolling linux and linux-headers v6.9.7 & linux-lts and linux-lts-headers v6.6.36. You never know when you might need the LTS kernel, so you better have them both. These 4 files I've put them in a dir named "02 KERNELS".
Now, why did I name the dirs that way? The number indicates the order in which the files need to be installed - first the GCC packages, second - the kernels and finally, third - the nvidia driver. That's the proper order.
Installing the packages can be done by cd to the specific directory (or using F4 in some file managers; PCManFM has that function - F4 opens the terminal into the directory you've opened). Since I use PCManFM, pressing F4 inside the GCC dir does this and the terminal looks like this:
4. Now it's time to downgrade the stuff. In all 3 directories in the specified order use this command:
This command upgrades the existing packages or in our case - downgrades them. When you're finished downgrading the nvidia packages, reboot. If you've been lucky enough to "hit" the proper GCC version, you'll see your desktop.
P.S. I know it looks like A LOT of work written like this but I wanted to write it as detailed as possible and for you to have all the information for a successful downgrade. But once you get used to the process, it takes no more than 10 minutes, including the installation and reboot. But it works.
2 days ago I had the latest nvidia driver with tons of workarounds to ensure the driver starts after resuming from suspend to RAM and with the latest rolling and LTS kernels. But I got fed up with nvidia's BS, so I downgraded to nvidia 560.35.03-19 and 6.11.9 kernel but it turned out that this driver has its own issues with some of the games I play, so decided to go back even further to one of the best drivers ever released: 555.58-2. Naturally, at the first attempt I got the flickering dmesg screen I mentioned earlier. Then I remembered what I was told in the nvidia forum - about the gcc packages. So I found them, installed them, reinstalled the nvidia driver and voila - the desktop appeared. And the games I play run the smoothest - no stuttering audio and video, no hiccups, no freezings.
In order to avoid all that hustle in the future, I recommend you to make a backup of the newly downgraded system - whether it's timeshift, clonezilla or rescuezilla - doesn't matter. What matters is that you have an easily restorable backup.
Haven fun with the downgrade!
I finally learned how to properly downgrade the driver and decided to share this knowledge cuz I'm pretty sure there are people who still don't know how. Armed with this knowledge you can go back to an nvidia driver and/or kernel as old as 10 years ago, if you wanted to.
DO keep in mind: depending on how far back in time you wanna go with the driver version, you may have to download and downgrade this package as well: "libglvnd". The oldest available is from 2019, the latest one is from 2023. But I'm sure you can find even older versions than that, if you visit pkgs.org.
So here's how:
1. Personally I prefer to use the nvidia-dkms package (you need the package dkms installed) because dkms rebuilds the initial ramdisks on its own - you don't have to do anything driver post-install, except for rebooting your computer.
Also, having dkms and nvidia-dkms allows you to downgrade the kernel too, if necessary. In principle that's not mandatory but sometimes the whole system works better and smoother, if you pair a certain older version of the nvidia driver with an older kernel version.
So, if you choose to use nvidia-dkms and if you remember a driver version where everything was working flawlessly (in my case that was 555.58), you need to visit https://archive.archlinux.org/packages/ and download one by one these packages:
Code:
nvidia-dkms nvidia-utils nvidia-settings lib32-nvidia-utils libxnvctrl
When I do that I move all of them to a dir named "03 NVIDIA DRIVER" and if you keep reading, you'll find out why.
While you're in the specified link, see and remember (or copy) the date the nvidia version was released. Usually all packages are being uploaded to this link too, apart from the worldwide repositories.
2. Knowing the date the drivers were released, visit the same address only with some minor differences: https://archive.archlinux.org/packages/g/gcc/ & https://archive.archlinux.org/packages/g/gcc-libs/. You can press Ctrl+F in your browser to find the same or an earlier date. I'll give you an example with one of my favorite driver versions so far - 510.54: this driver was released on 15-Feb-2022. So the gcc & gcc-libs versions you need will be released a day or two before that: a quick search in these addresses indicates that the gcc & gcc-libs versions are 11.2.0-2, released on 09-Feb-2022.
ALTOUGH, sometimes there might discrepancies. In such cases the only way to find out which gcc version is the right one is to download and install a few and then reinstall the downloaded nvidia version. I know that this sucks because it includes repetitive actions but you can never know which gcc version nvidia has decided to use building the driver. USUALLY this applies: "So the gcc & gcc-libs versions you need will be released a day or two before that" but not always, especially not with very old drivers.
In my case using 555.58-2 which has been released on 30-Jun-2024, this gcc version works with that driver: gcc-14.2.1+r134+gab884fffe3fc-1 which makes no sense because it has been released 4 months after the driver.
So, finding the right version of gcc & gcc-libs is a bit like the lottery but there's nothing we can do about that. And it's important to find the right version because if the driver has been built with a different version of gcc, after the reboot you won't get to your desktop. Instead, it will hang at "Reached target Graphical Interface" and then the dmesg screen will start flickering.
Those two packages I would put them in a dir named "01 GCC".
3. In a similar manner with date of release, as close as possible to the nvidia driver (a few days after the nvidia release is better - to make sure that kernel has been optimized to work with that specific nvidia version you wanted, search for both rolling and LTS kernels and download them. As I said earlier, downgrading the kernel isn't mandatory but I prefer to do the whole thing properly to ensure a smooth system working. So, for 555.58-2 I downloaded rolling linux and linux-headers v6.9.7 & linux-lts and linux-lts-headers v6.6.36. You never know when you might need the LTS kernel, so you better have them both. These 4 files I've put them in a dir named "02 KERNELS".
Now, why did I name the dirs that way? The number indicates the order in which the files need to be installed - first the GCC packages, second - the kernels and finally, third - the nvidia driver. That's the proper order.
Installing the packages can be done by cd to the specific directory (or using F4 in some file managers; PCManFM has that function - F4 opens the terminal into the directory you've opened). Since I use PCManFM, pressing F4 inside the GCC dir does this and the terminal looks like this:
4. Now it's time to downgrade the stuff. In all 3 directories in the specified order use this command:
Code:
sudo pacman -U *.zst
This command upgrades the existing packages or in our case - downgrades them. When you're finished downgrading the nvidia packages, reboot. If you've been lucky enough to "hit" the proper GCC version, you'll see your desktop.
P.S. I know it looks like A LOT of work written like this but I wanted to write it as detailed as possible and for you to have all the information for a successful downgrade. But once you get used to the process, it takes no more than 10 minutes, including the installation and reboot. But it works.
2 days ago I had the latest nvidia driver with tons of workarounds to ensure the driver starts after resuming from suspend to RAM and with the latest rolling and LTS kernels. But I got fed up with nvidia's BS, so I downgraded to nvidia 560.35.03-19 and 6.11.9 kernel but it turned out that this driver has its own issues with some of the games I play, so decided to go back even further to one of the best drivers ever released: 555.58-2. Naturally, at the first attempt I got the flickering dmesg screen I mentioned earlier. Then I remembered what I was told in the nvidia forum - about the gcc packages. So I found them, installed them, reinstalled the nvidia driver and voila - the desktop appeared. And the games I play run the smoothest - no stuttering audio and video, no hiccups, no freezings.
In order to avoid all that hustle in the future, I recommend you to make a backup of the newly downgraded system - whether it's timeshift, clonezilla or rescuezilla - doesn't matter. What matters is that you have an easily restorable backup.
Haven fun with the downgrade!


