Nvidia-driver-assistant misdetects older GPUs due to faulty NVIDIA metadata

@megvadulthangya please also test the ISOs from testing branch which only ship with 570xx, 575xx and 590xx drivers: Release 202601011030 · manjaro/release-review · GitHub

linux618-nvidia-390xx-390.157-5-x86_64.pkg.tar.zst
linux618-nvidia-470xx-470.256.02-5-x86_64.pkg.tar.zst
linux618-nvidia-570xx-570.207-5-x86_64.pkg.tar.zst
linux618-nvidia-570xx-open-570.207-5-x86_64.pkg.tar.zst
linux618-nvidia-575xx-575.64.05-5-x86_64.pkg.tar.zst
linux618-nvidia-575xx-open-575.64.05-5-x86_64.pkg.tar.zst
linux618-nvidia-590.48.01-2-x86_64.pkg.tar.zst
linux618-nvidia-open-590.48.01-2-x86_64.pkg.tar.zst

How to debug properly

  1. when in grub boot menu select nonfree and press E for edit.
  2. look for splash and quiet in the kernel cmdline and remove it
  3. add 3 to the line you removed splash and quiet
  4. press CTRL + X to boot

If you still get the plymouth splash screen you may press ESC to enable TTY log.

The system should load into a TTY in which you login with manjaro:manjaro to get to the terminal. Then list the packages installed by pacman for Nvidia: pacman -Q | grep nvidia. You may also check with mhwd -li which drivers got installed …

@philm, after testing the Anh-Linh 26.0-rc3 ISO, I modified the nvidia-driver-assistant source code to better handle the architecture of older NVIDIA cards. The modified code is available here:
https://github.com/megvadulthangya/nvidia-driver-assistant/tree/v3

I will also download and test the testing branch ISO with the GTX 750 Ti, then report back the results.

For me it is more of interest what the output of this code snippet would be on your system and the result of the driver install of the official isos I shared…

#!/bin/bash

CONKMOD="nvidia-390xx nvidia-470xx nvidia-575xx nvidia"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 740A)" == "open" ]] && CONKMOD+=" nvidia-570xx"
echo "CONKMOD: $CONKMOD"
DEPKMOD="nvidia-570xx"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 740A)" == "open" ]] && DEPKMOD="nvidia-570xx-open"
echo "DEPKMOD: $DEPKMOD"
17:57:57 ○ [fh@manjaro] ~/temp
 $ cat test.sh
#!/bin/bash

CONKMOD="nvidia-390xx nvidia-470xx nvidia-575xx nvidia"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 750)" == "open" ]] && CONKMOD+=" nvidia-570xx"
echo "CONKMOD: $CONKMOD"
DEPKMOD="nvidia-570xx"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 750)" == "open" ]] && DEPKMOD="nvidia-570xx-open"
echo "DEPKMOD: $DEPKMOD"

17:58:03 ○ [fh@manjaro] ~/temp
 $ bash test.sh
CONKMOD: nvidia-390xx nvidia-470xx nvidia-575xx nvidia nvidia-570xx
DEPKMOD: nvidia-570xx-open

and now :yawning_face: :person_in_bed: :zzz:

So which means that nvidia-driver-assistant suggests the wrong driver for the 750 series for some odd reason …


There is some logic issue on the current code of us:

nvidia-driver-assistant --simulate-gpu 750
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

Detected system:
  Manjaro Linux 

Please copy and paste the following command to install the open kernel module flavour:
  Not supported
nvidia-driver-assistant --mhwd --simulate-gpu 750
open

Normally it should say closed …

Hmm, after fixing the patch a little it matches now:

$ nvidia-driver-assistant --simulate-gpu 750
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

Detected system:
  Manjaro Linux 

Please copy and paste the following command to install the open kernel module flavour:
  sudo pacman -S linux618-nvidia-580xx-open
$ nvidia-driver-assistant --simulate-gpu 750 --mhwd
open

However it seems that the database used suggests the wrong driver for some odd reason …

DEBUG:root:gpu.get(legacybranch): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

DEBUG:root:recommend_driver(): Do device IDs support the open driver?
DEBUG:root:recommend_driver(): using json logic
DEBUG:root:recommend_driver(): all devices support open
DEBUG:root:Recommended driver: open
DEBUG:root:get_distro(): detected manjaro  distribution is supported
Detected system:
  Manjaro Linux 

DEBUG:root:OS detected: manjaro
DEBUG:root:get_legacy_branch(): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Please copy and paste the following command to install the open kernel module flavour:
  sudo pacman -S linux618-nvidia-580xx-open

First script:

#!/bin/bash

CONKMOD="nvidia-390xx nvidia-470xx nvidia-575xx nvidia"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 740A)" == "open" ]] && CONKMOD+=" nvidia-570xx"
echo "CONKMOD: $CONKMOD"
DEPKMOD="nvidia-570xx"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 740A)" == "open" ]] && DEPKMOD="nvidia-570xx-open"
echo "DEPKMOD: $DEPKMOD"

Output:

CONKMOD: nvidia-390xx nvidia-470xx nvidia-575xx nvidia
DEPKMOD: nvidia-570xx

Second script:

#!/bin/bash

CONKMOD="nvidia-390xx nvidia-470xx nvidia-575xx nvidia"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 750)" == "open" ]] && CONKMOD+=" nvidia-570xx"
echo "CONKMOD: $CONKMOD"
DEPKMOD="nvidia-570xx"
[[ "$(nvidia-driver-assistant --mhwd --simulate-gpu 750)" == "open" ]] && DEPKMOD="nvidia-570xx-open"
echo "DEPKMOD: $DEPKMOD"

Output:

CONKMOD: nvidia-390xx nvidia-470xx nvidia-575xx nvidia nvidia-570xx
DEPKMOD: nvidia-570xx-open

Thank you for showing the debug thingy… I see I can remove the nvidia-driver-assistant from live, and then install anything… so I guess if I can’t integrate it into my ISO… at least I can remove it and then test with my new version…

Which has a more complex way to detect GPUs, I think about SLI and hybrid systems as well…

Sorry for being slow with the responses…

I think partly the json db might be wrong for your card. I pushed some update on the assistant …

im still in the testing iso live remove or upgrade the mhw-db then reinstall nvdriver assitant… ?Which i was forcefully uninstalled…

0.23.48.01-3-any version says not supported…

But again… if the code has what i doing there… thats bad couse the detection method was weak…

nvidia-driver-assistant-0.23.48.01-4 fixed that. you have to update on the spot when available …

the issue is complex. the original assistant uses a database and your approach is to force drivers based on series function you created.

Fun fact the the card of yours doesn’t have kernelopen but still the script suggests open for some odd reason …

Nope!

Please copy and paste the followind command to install the open kernel module flavour: sudo pacman -S linux618-nvidia-580xx-open

the DB states legacybranch=580xx, which is correct and has no kernelopen, but for some reason it still gets detected as such. So some logic changed …

python ./nvidia-driver-assistant --simulate-gpu 750 --verbose
DEBUG:root:get_nvidia_devices(): Processing Vendor: 10DE, Device ID: 0x1380, class 0x0300
DEBUG:root:pci:v000010DEd00001380sv000010DEsd000018FEbc03sc00i00
DEBUG:root:gpu.get(legacybranch): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

DEBUG:root:recommend_driver(): Do device IDs support the open driver?
DEBUG:root:recommend_driver(): using json logic
DEBUG:root:recommend_driver(): all devices support open
DEBUG:root:Recommended driver: open
DEBUG:root:get_distro(): detected manjaro  distribution is supported
Detected system:
  Manjaro Linux 

DEBUG:root:OS detected: manjaro
DEBUG:root:get_legacy_branch(): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Please copy and paste the following command to install the open kernel module flavour:
  sudo pacman -S linux618-nvidia-580xx-open

Seems we have some defaults we have to check again:

proprietary_required = "proprietary_required"
proprietary_supported = "gsp_proprietary_supported"
default = "open_required"
open_supported = "kernelopen"
support_flags = (open_supported, proprietary_supported)

Added more debug stuff: debug: be more verbose (d44ee32c) · Commits · Frede H / Nvidia Driver Assistant · GitLab

$ ./nvidia-driver-assistant --simulate-gpu 750 --verbose
DEBUG:root:get_nvidia_devices(): Processing Vendor: 10DE, Device ID: 0x1380, class 0x0300
DEBUG:root:pci:v000010DEd00001380sv000010DEsd000018FEbc03sc00i00
DEBUG:root:Device: has following flags: ['kernelopen']
DEBUG:root:Device: supports open driver
DEBUG:root:gpu.get(legacybranch): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

DEBUG:root:recommend_driver(): Do device IDs support the open driver?
DEBUG:root:recommend_driver(): using json logic
DEBUG:root:recommend_driver(): all devices support open
DEBUG:root:Recommended driver: open
DEBUG:root:get_distro(): detected manjaro  distribution is supported
Detected system:
  Manjaro Linux 

DEBUG:root:OS detected: manjaro
DEBUG:root:get_legacy_branch(): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Please copy and paste the following command to install the open kernel module flavour:
  sudo pacman -S linux618-nvidia-580xx-open
$ python ./nvidia-driver-assistant --simulate-gpu 740A --verbose
DEBUG:root:get_nvidia_devices(): Processing Vendor: 10DE, Device ID: 0x1292, class 0x0300
DEBUG:root:pci:v000010DEd00001292sv000010DEsd000018FEbc03sc00i00
DEBUG:root:Device: has following flags: []
DEBUG:root:Device: needs proprietary driver
DEBUG:root:gpu.get(legacybranch): GeForce GT 740M belongs to legacybranch = 470.xx
DEBUG:root:Device: has following flags: []
DEBUG:root:Device: needs proprietary driver
DEBUG:root:gpu.get(legacybranch): GeForce GT 740A belongs to legacybranch = 470.xx
DEBUG:root:Device: has following flags: []
DEBUG:root:Device: needs proprietary driver
DEBUG:root:gpu.get(legacybranch): GeForce GT 740A belongs to legacybranch = 470.xx
DEBUG:root:Device: has following flags: []
DEBUG:root:Device: needs proprietary driver
DEBUG:root:gpu.get(legacybranch): GeForce GT 740A belongs to legacybranch = 470.xx
Detected GPUs:
  GeForce GT 740A - (pci_id 0x1292)

DEBUG:root:recommend_driver(): Do device IDs support the open driver?
DEBUG:root:recommend_driver(): using json logic
DEBUG:root:recommend_driver(): all devices require closed
DEBUG:root:Recommended driver: closed
DEBUG:root:get_distro(): detected manjaro  distribution is supported
Detected system:
  Manjaro Linux 

DEBUG:root:OS detected: manjaro
DEBUG:root:get_legacy_branch(): GeForce GT 740A belongs to legacybranch = 470.xx
Please copy and paste the following command to install the legacy kernel module flavour:
  sudo pacman -S linux618-nvidia-470xx


This is just for fun… for the logic…
detecting without anything… this is in the v4.3clean branch.
(dont ask about the green line please):slight_smile:

Well your script doesn’t work for may 4070 card on my end. We have to see why the database recommends open for the 750 TI …

And the winner is: {"devid":"0x1380","name":"NVIDIA GeForce GTX 750 Ti","legacybranch":""580.xx","features":["kernelopen"]}

So we have to check if it is a mistake by NVIDIA to add kernelopen to that card …

But if I look at the mod.json I see this:

    {
      "devid": "0x139B",
      "subdevid": "0x107A",
      "subvendorid": "0x1025",
      "name": "NVIDIA GeForce GTX 750 Ti",
      "features": [
        "hdmi4k",
        "vdpaufeaturesetE"
      ]
    },

I really wonder which DB is correct …

python ./nvidia-driver-assistant --simulate-gpu 750 --verbose --supported-gpus /usr/share/nvidia-driver-assistant/supported-gpus/supported-gpus-mod.json 
DEBUG:root:get_nvidia_devices(): Processing Vendor: 10DE, Device ID: 0x1380, class 0x0300
DEBUG:root:pci:v000010DEd00001380sv000010DEsd000018FEbc03sc00i00
DEBUG:root:Device: has following feature: hdmi4k
DEBUG:root:Device: has following feature: vdpaufeaturesete
DEBUG:root:Device: has following flags: []
DEBUG:root:Device: needs proprietary driver
DEBUG:root:gpu.get(legacybranch): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = None
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

DEBUG:root:recommend_driver(): Do device IDs support the open driver?
DEBUG:root:recommend_driver(): using json logic
DEBUG:root:recommend_driver(): all devices require closed
DEBUG:root:Recommended driver: closed
DEBUG:root:get_distro(): detected manjaro  distribution is supported
Detected system:
  Manjaro Linux 

DEBUG:root:OS detected: manjaro
Please copy and paste the following command to install the legacy kernel module flavour:
  sudo pacman -S linux618-nvidia

Well I now checked the older database of 0.22.105.08-1 and I got this:

{"devid":"0x1380","name":"NVIDIA GeForce GTX 750 Ti","features":["hdmi4k","vdpaufeaturesetE"]}

python ./nvidia-driver-assistant --simulate-gpu 750 --verbose --supported-gpus 0.22.105.08-1/usr/share/nvidia-driver-assistant/supported-gpus/supported-gpus.json
DEBUG:root:get_nvidia_devices(): Processing Vendor: 10DE, Device ID: 0x1380, class 0x0300
DEBUG:root:pci:v000010DEd00001380sv000010DEsd000018FEbc03sc00i00
DEBUG:root:Device: has following feature: hdmi4k
DEBUG:root:Device: has following feature: vdpaufeaturesete
DEBUG:root:Device: has following flags: []
DEBUG:root:Device: needs proprietary driver
DEBUG:root:gpu.get(legacybranch): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = None
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

DEBUG:root:recommend_driver(): Do device IDs support the open driver?
DEBUG:root:recommend_driver(): using json logic
DEBUG:root:recommend_driver(): all devices require closed
DEBUG:root:Recommended driver: closed
DEBUG:root:get_distro(): detected manjaro  distribution is supported
Detected system:
  Manjaro Linux 

DEBUG:root:OS detected: manjaro
Please copy and paste the following command to install the legacy kernel module flavour:
  sudo pacman -S linux618-nvidia

So it seems the database update went wrong by upstream Nvidia somehow: https://gitlab.manjaro.org/-/snippets/1178/raw/master/nvidia-db-update-0.23.48.01-1.txt

1 Like

Congratulations on precisely identifying the issue. Thank you for your help. :clinking_glasses::magnifying_glass_tilted_left:

Wonder why Linus T Say what he say at one time… (Edit this out if you want…) Here is your update! “Buy a new one”

And the fun begins: Nvidia-driver-assistant 0.23.44.01-1 and later suggests wrong drivers - Linux - NVIDIA Developer Forums

2 Likes

OK, I hope I fixed it for now via revision 5:

nvidia-driver-assistant --simulate-gpu 750 --verbose
DEBUG:root:get_nvidia_devices(): Processing Vendor: 10DE, Device ID: 0x1380, class 0x0300
DEBUG:root:pci:v000010DEd00001380sv000010DEsd000018FEbc03sc00i00
DEBUG:root:Device: has following feature: hdmi4k
DEBUG:root:Device: has following feature: vdpaufeaturesete
DEBUG:root:Device: has following flags: []
DEBUG:root:Device: needs proprietary driver
DEBUG:root:gpu.get(legacybranch): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Detected GPUs:
  NVIDIA GeForce GTX 750 Ti - (pci_id 0x1380)

DEBUG:root:recommend_driver(): Do device IDs support the open driver?
DEBUG:root:recommend_driver(): using json logic
DEBUG:root:recommend_driver(): all devices require closed
DEBUG:root:Recommended driver: closed
DEBUG:root:get_distro(): detected manjaro  distribution is supported
Detected system:
  Manjaro Linux 

DEBUG:root:OS detected: manjaro
DEBUG:root:get_legacy_branch(): NVIDIA GeForce GTX 750 Ti belongs to legacybranch = 580.xx
Please copy and paste the following command to install the legacy kernel module flavour:
  sudo pacman -S linux618-nvidia-580xx

I just tested it, and i can confirm -5 is detecting correctly, showing that you know what you doing :slight_smile:

Check if it boots for you: Release 202601020649 · manjaro/release-review · GitHub