Add nvidia driver rolling package

Hi, first of all, I’m a longtime Manjaro user now and I really love it for the most part. But as always there are things which can be improved.
One thing I miss from the old days is one simple package for the nvidia driver which we have to install once and forget about it. It did always have the latest version, so we didn’t need to manually update.
Sadly this feature got removed at some point when all the different nvidia driver versions were introduced. However it would be really useful to get it back.

Problems with older drivers

First let’s have a look at why someone shouldn’t use an older driver version:

  • broken features like the video hardware encoder and cuda
  • worse performance in some cases
  • missing fixes for games and apps (some newer games and stuff like Proton or newest Wayland development often need the newest Nvidia driver for best performance or sometimes to work at all)

So for the most part using an older driver version doesn’t make sense because it only breaks more things than it fixes. In my experience I never saw a situation where an older version of the driver was even necessary, so in most cases it should be the best idea to use the very latest nvidia driver at every time.

(except if you are running a very old card which is not supported anymore by the newest branch, obviously)

Why we need to have the driver rolling

The current situation is that every nvidia driver version has it’s own package. If a new driver comes out, we have to manually update.

But why make this step necessary? I saw people facing the above mentioned problems without knowing why.
Sure you could say they should just ask in the forum and will get the answer, but I know that many people won’t. As I know the most of my family and some friends at least, they are like:

“Huh, something doesn’t work. Linux is trash, it is too much hussle to learn every inconsistency and takes too much time to maintain and do everything manually.”

They don’t really try to understand it and it sometimes gets on the nerves to ask for every problem. Most will just switch back to Windows (or another distro) because they need something that “just works”.

However this is not only annoying for noobs. I don’t like the current situation either. You will get later why.

The current steps of updating the driver and how it should be

What we currently have to do when a new nvidia driver comes out:

  • Remove all packages which depend on nvidia and remember them
  • Remove metapackages (like of linux-latest)
  • Remove the old driver
  • Install the new one
  • Install the new metapackage again
  • Install the programs again which depend on nvidia

You see these are many steps (especially if you have to do it on multiple machines). It takes time and nerves since you have to do everything manually step by step.
This could be enormously improved.

How I imagine it should be:

  • Run normal system updates
    DONE :slight_smile:

The problem breaks consistency

As I mentioned above, it is really weird. Normally one would not expect to have to update this manually to keep the system working.

I don’t see a reason why on a rolling release distro everything gets updated automatically on system update, but some drivers don’t. This just creates unexpected inconsistency and breaks user friendliness (and features if you are not awary of it), which may lead to unnecessary frustration.

A proposal

To fix this, there could be just a simple linuxXX-nvidia package for each kernel (just like in the old days) and packages for the kernel metapackages (linux-latest-nvidia and linux-lts-nvidia).

What do you all think about it? Of course I’m open to alternative ideas. Just write down your thoughts and the community will discuss together to find the best solution.


Have a nice day and thanks for reading,
Bleuzen

3 Likes

We have that already.
Its your choice to use the ‘xx-latest’ packages.
You can just not use them, and instead use mhwd and update normally, as you envision.

(ex: remove ‘linux-latest’ and/or ‘linux-latest-nvidiaxxx’, etc, ensure your desired mhwd profile for drivers and kernel are set [ex: video-nvidia-440xx and linux54], then … update as normal. You will continue to use and update nvidia440 and linux54)

Thanks but this is not what I meant. I don’t mean the linux-latest packages. Also I don’t mean minor updates like from kernel 5.4.1 to 5.4.2 or nvidia 440.1 to 440.2.

I mean something like auto updating from nvidia driver series 450 to 455 without having to do this manually steps.

1 Like

I see. So you want also an nvidia-latest package (or mhwd profile maybe)

Basically. Maybe a mhwd profile for the nvidia driver without a specific version, which always contains the lastest version, could do it.

So current we have packages like
linux59-nvidia450
linux59-nvidia455

And a possible solution may be to add a profile / package like
linux59-nvidia
which installs the lastest version, so currently 455, but will change when a new version comes out.

This should also be compatible with the kernel metapackages (linux-latest, linux-lts),
for example by adding something like a
linux-latest-nvidia
package.

1 Like

You basically want it like how it’s done on Arch. They have a nvidia package, that gets updated with the newest version whenever it’s released.

1 Like

On the other hand it will have a bad experience for users who use older GPUs that are not supported by the latest nvidia drivers. When it comes to user friendliness auto recognition of the hardware and loading the correct driver is 100% necessary because of the policy of nvidia. So if a meta package like latest-nvidia will be supported, then it have to use the latest nvida driver that supports the the GPU.

Second point would be stability. With new driver versions the stability could be decreased. There are a lot of aspects which need to be considered. So in my opinion it would be much better, since nvidia is proprietary, to choose the version myself and test it before running it.

“manjaro settings” has notifications, but in my opinion and experience, it is badly implemented. At least on XFCE. It checks if a new kernel version is out or new language packages, but not nvidia drivers. When i get a new notification of kernel update for example, it just show me that something has been updated, but not what. It would be nice if the indicator there would have a context menu, when you can click “update nvidia driver” and will remove the old one and install the new one. Same thing for languages packages. Kernel notifications are really not needed, since it becomes updated with pamac.

So i would suggest to improve the manjaro settings, to make it more user friendly with some minor implementations so that it is more visible for a DAU (Dumbest assumed user). Automating things like creating a packages for the latest driver is good, but could have disadvantages for users with older GPUs and really don’t solve the problem of not knowing that there is a update for nvidia.

So :+1: for better notifications :slight_smile:

1 Like

Not really. The user has to manually install the nvidia-latest package if/once it exists. Just like how linux-latest for kernels isn’t preinstalled. The user has to install it manually.

Arch already does a rolling package. But seems non-optional since it’s tied to the nvidia package, unlike what is being requested here.

Ok for clarification: I mean if the new iso will use this meta package ‘nvidia-latest’. Sorry didn’t mention that. However, if you have to choose it manually, then it is ok.

But i remember this here recently:

The meta packages:

linux-rt-lts-manjaro
linux-rt-lts-manjaro-bbswitch
linux-rt-lts-manjaro-nvidia-430xx
linux-rt-lts-manjaro-r8168

were the reason of a problem that a GUI User can’t remove the old nvidia driver. mhwd couldn’t handle this. If now this package ‘latest-nvidia’ will come, then i beleve there will come problems from DAUs…

Yeah … but those are definitely not used by default … its both LTS and most importantly Real-Time.
(our mhwd profile for 5.4-rt isnt even marked LTS funny enough)
It wouldnt be available in mhwd at all, and certainly were packages specifically installed by the user.

This is a perfect example of my explanation above, and why its simply a misunderstanding or misuse of mhwd and/or packages.

If they had followed this kind of setup (all through mhwd, and not going outside of it manually installing packages without understanding), that is to say select 5.4-rt and nvidia-bumblebee-430xx in mhwd…
Then that wouldnt have been an issue at all. They could just select 450 instead if it was available.

There won’t be more problems. If he only wanted to remove the driver completely (without updating) he won’t have to uninstall more, since, when my proposal is used, linuxXX-nvidia would be there instead of linuxXX-430. So it won’t get worse, but stay the same.

On the other side, since he wanted to uninstall it to install a newer driver afterwards, my proposal would even solve this issue.
Because if he would use a mhwd config just called “nvidia” without a version number in it, he wouldn’t need to remove an older driver first and switch mhwd profiles for updating. MHWD wouldn’t have to do anything in this case, which would just vanish the problem with updating the nvidia driver while linux-lts or linux-latest metapackages are installed.

  1. I’m not talking about removing the older nvidia driver versions here. This could be a topic for another thread, since for very old hardware, the open source driver may be better anyway, but like I said, this is not the topic of this thread.
    The older nvidia driver version would stay in the repos, so anyone who needs them could just continue using them.

  2. A meta package which installs this old legacy drivers wouldn’t be useful because they don’t get updates anymore. So it would be a package pointing to another fixed package forever. This doesn’t help anyone.
    So I think a metapackage (and mhwd profile) just for the very latest nvidia driver would be enough.

Have you every had problems with the newest nvidia driver? I nevery had. Until now it was always the opposite, that the older drivers were causing problems because of incompatibilities with newer software.
In very most cases there shouldn’t be a need (and want) to use an older nvidia driver.

But yeah, a simple mhwd profile and metapackage wouldn’t remove the older drivers, so the option to use them would still be there, if you want to.

Better notifications could help a little. But not much.

  1. Casual users are used to just click away any popups / notifications. Many won’t know that they need to manually update there driver, even if there was a notification.

This is also part of why there is a linux-latest metapackage now, which gets automatically installed if a someone uses an EOL kernel.

  1. This would not fix the problem of having to do the updating of the driver manually. See my main post:
1 Like

Manjaro is a semi-rolling distribution because it has periodic sets of updates so it makes sense that drivers and kernels are also not rolling so they do not break when used in the sets of updates. I think the only way to get a true rolling package is to use a true rolling distribution.

I wrote a little script from scratch that would work in a pacman hook:

Are you looking for something like that?

Nice thanks for your effort,
but

this is not exactly what I’m looking for.

I want to be able to automatically update the nvidia driver, without having to uninstall packages and install new ones.
The package should stay the same, only the driver version contained should update. This way there are no package operations needed.
This would have the pros of:

  • Not needing to uninstall everything depending on nvidia
  • Not having to download a newer build of the older driver branch before switching to the new driver branch

My best idea for a solution is to have one “video-nvidia” mhwd profile, which uses one package per kernel (“linuxXX-nvidia”) which stays always installed and gets updated always to the newest driver.
This way we won’t have to uninstall stuff and reinstall it after. The installed package list will stay the same, only the version of the one package itself changes.
So just like it was in the old days, when there were not all the different nvidia driver versions in the repo but just one at a time (and per supported gpus).

Example:
Currently we have packages like
linux59-nvidia-450xx
linux59-nvidia-455xx

Now there would be an additional mhwd profile and package:
linux59-nvidia // (or maybe linux59-nvidia-latest)

This package would contain currently driver version 455.
But when for example driver 460 comes out, this exact package (linux59-nvidia) would become driver 460. Without changing its name. Without having to uninstall an old package and install a new one. It would stay the same, but contain the newer driver.
This would be optimal.

1 Like

this cannot be apply because :

  • many laptop use older nvidia version
  • each compilation kernel require a passe for each driver nvidia

what will be done if latest goes for 440 series to 450 series ?
see
[Stable Update] 2020-08-22 - Kernels, Deepin, KDE-git, Firefox, Pamac, Nvidia 450, KDE Apps 20.08
https://forum.manjaro.org/t/stable-update-2020-08-28-kernels-systemd-pam-pambase-kde-git-deepin-pamac-nvidia-450-66-libreoffice-7-0/
how many help we get since 440 series to 450 series may go wrong ?

It can. We already have proven it in the past, when Manjaro used this exact approach.
Also Arch does the same and some other distros. So it is definitely possible.

Yeah, fine. They can continue to do so. There would be only an additional mhwd profile + package. I’m not talking about removing the existing one. So no harm is done here.

Yes, this is already the case for all the different driver versions and mhwd profiles which are currently in the repo. Adding one more shouldn’t be a problem.

Users using the mhwd profile for latest nvidia driver would get updated from 440 to 450 series.
This will keep their systems fully functional, since using older driver versions often break things because they are not compatible in combination with all the other new packages (cuda, ffmpeg nvenc, others using nvidia apis…)

Well, people can ask here in the forum. But I doubt this will happen often. Nvidia driver are usually well tested in my experience.
At least people have usually more problems when staying on older version compared to the latest anyway.
But in case they do have problems, they can just stay on the older version, as this new profile I suggest is only an addition to the existing ones.

@philm @aragorn @megavolt
we have found a candidate for testing hybrid cards

2 Likes

Ok understand… what you are looking for is then exclude mhwd and use a meta package like arch. Using a config “latest-yx” is not really useful in mhwd. That means extra packages that need to be managed and therefore extra work.

Anyway… the packages are already there. The script i mention above do what you expect, but it doesn’t overwrite it, but rather remove the old ones and install the new ones. I see no real benefit of your idea now… only a preference.

I still prefer the mhwd profile over a metapackage or pacman hook.

The downsides of just a metapackage:

  • There is no mhwd support. Updating the kernel means having to manually uninstall the metapackage for the driver first, update kernel with mhwd, afterwards installing the metapackage manually again for the new kernel. This are the manual steps I wan’t to avoid.

The downsides of the pacman hook:

  • On system update, it will first install the newest version of the old (currently installed) nvidia driver branch before downloading and installing the newer driver branch.
    This means we have to download unnecessary packages which will get uninstalled soon after installation again.
    If you have a fast internet connection this may be fine. But as in some locations in Germany here, I would really like to avoid any unnecessary downloads.
  • It needs to uninstall the old driver version first (before installing the new one), which is not possible if you have packages installed depending on nvidia (for example cuda and nvtop).
    So we have to manually uninstall and remember those packages to be able to update the driver, then afterwards manually install these packages again.
    These manual steps is what I try to avoid and the reason why I started this forum thread.

What I want is a fully automatic driver update. Without manual steps or unnecessary downloads.

You may say these manual steps are easy.
Well to that I can say yes, maybe for me. I know how to handle metapackages and update the driver. Maybe only noobs won’t.
But since I have to do this on multiple machines it is really annoying. So it should be fully automatic.

The goal here is that only running normal system updates is enough to keep nvidia driver up to date.
No unnecessary downloads, no manual package uninstalls/installs.
As far as I know, this is currently only possible with an additional (rolling) mhwd profile.