Fixing my nvidia card nouveau drivers

I have a GEFORCE 210 Nvidia (Rev2) card (GT218)
Up until recently it has never given problems with the standard nouveau drivers.
About six months ago my Linux(s) started hanging randomly. I thought I had a fix - disable the graphics acceleration in Firefox and Thunderbird. But no, I still get hung at random times in all 4 Linuxes - Debian, Devuan, Void, and Solus.
Eventually I managed to find this in the messages log of Devuan, when I rebooted after a hang

Nov  4 21:38:45 trinity kernel: [   40.068254] Initializing XFRM netlink socket
Nov  4 21:39:02 trinity kernel: [   57.229572] nouveau 0000:01:00.0: Direct firmware load for nouveau/nva8_fuc084 failed with error -2
Nov  4 21:39:02 trinity kernel: [   57.229597] nouveau 0000:01:00.0: Direct firmware load for nouveau/nva8_fuc084d failed with error -2

So now I have something I can look up . A search for the error line came up with
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990662
and
Debian bullseye system randomly freezes with NVIDIA graphics card and nouveau driver. - Debian User Forums

So it would seem this is a known problem. It is caused by the firmware drivers not being compatible with new kernels, so they dont get installed by the package system.

There is a fix. It involves extracting the drivers out of some Nvidia file, and then putting them in /lib/firmware/nouveau where the nouveau software can find them. Fortunately there is a script available to do this

$ mkdir /tmp/nouveau
$ cd /tmp/nouveau
$ wget https://raw.github.com/envytools/firmware/master/extract_firmware.py
$ wget http://us.download.nvidia.com/XFree86/Linux-x86/325.15/NVIDIA-Linux-x86-325.15.run
$ sh NVIDIA-Linux-x86-325.15.run --extract-only
$ python2 extract_firmware.py
# mkdir /lib/firmware/nouveau
# cp -d nv* vuc-* /lib/firmware/nouveau/

So I ran that, one line at a time, in Devuan, and a whole heap of files appeared in /lib/firmware/nouveau, including nva8_fuc084 but not nva8_fuc084d. So I dont know… have I fixed it or not.

Time will tell. Wait for the next hangup.

Neville

1 Like

I did not have to wait long.
It hung again.
When I rebooted and looked at messages I got

Nov  5 21:05:50 trinity kernel: [   41.697121] Bridge firewalling registered
Nov  5 21:05:51 trinity kernel: [   42.167159] Initializing XFRM netlink socket
Nov  5 21:06:08 trinity kernel: [   58.989614] nouveau 0000:01:00.0: firmware: direct-loading firmware nouveau/nva8_fuc084

So now it finds the firmware, but it hangs anyway.
Back to the original issue. The nvidia firmware does not work with the new kernel. Thats why the package system did not install it.

I dont see how anyone could put forward that bug fix when it does not attack the basic problem.

I think I shall be buying an AMD card sometime soon.

2 Likes

@nevj
Have you or can you install the Nvidia driver?

When I started using Linux I came across this advice somewhere, which, as best I can recall it: your time is better spent choosing hardware that is compatible with Linux than trying to make the wrong hardware run.

I, too, am looking at AMD graphics cards.

1 Like

I can install it, but it will not work with the new kernel version.
Nvidia is refusing to update drivers for old cards.
Noveau works but hangs occasionally. Those drivers I added to Noveau were essentially ‘borrowed’ Nvidia drivers for a 325.15 card which is the oldest card that Nvidia have drivers for that suit the new kernel. They dont work either on my card.

What happened was kernel developers changed the way modules interface with the kernel. Every maker of drivers updated their drivers to match, except Nvidia.

Let us know what you choose.
I only want a basic card.
It is rather annoying when something that worrked perfectly for 12 years suddenly misbehaves.

It is, but 12 years is a long time. I read Linus Torvalds proposed dropping 486 support from the kernel. I’m not sure exactly how many years that is. Wikipedia says the Pentium came out in 1993, so 486 is more than twice that old I guess.

Yes, and its not a big deal because its only a cheap basic card.
The hardware solution is the best, as @don.karon says.

What puzzles me is I can sit at the computer for hours, and the graphics work fine, then suddenly it decides to load some firmware called
nouveau/nva8_fuc084
and it fails to load.

I built a 486 with a Vesa Localbus around 1993. It was a bad choice because Pentiums with PCI took over. But I ran it quite happily with Freebsd till about 2010.

@nevj
Arch has nouveau driver
I see my Arch is using Nouveau driver. Can you roolback your kernel upgrade to where the Nouveau driver works?

Yes, but then other things will break, especially kernel modules written for the new kernel

Therefore, either you get a backup from these days running <=5.4 linux kernel and xorg-server <= 1.20.8, restore it and stop upgrading from there, either you are ready to downgrade many things… in a totally unsupported way. 

Not a very happy prospect.
and it is not just one Linux, I have Debian, Devuan, Solus, and 3 versions of Void in that machine. I am going to have to get an amd card and convert all 6 linuxes to amd .

Cheers
Neville

@nevj
If you lived closer, I have a AMD card I would give you. I have to use Nvidia for games I play on Windows.

Thats nice thank you Daniel. I appreciate the thought.
Its OK, I only need a cheap low level AMD card. Not too new or fancy, and not an old s/h one, or I might have more trouble

I was just cleaning up my Devuan after the mess I installed trying to fix this issue. Noticed it already has AMD firmware installed… so I should be able to just swap video cards with no configuring. It should just detect the new card and load the right module.
Thats Devuan, and Debian is probably the same. What happens with Void and Solus may be interesting.
Regards
Neville

@nevj
I bet your Nvidia card takes the same driver as my GT620 and GT430, the Nvidia 390.154.
A bash script can be downloaded from Nvidia, but I have no idea on how to execute the script. I tried a Nvidia driver install, but it would not work, so I had to reinstall the nouveau driver.

I will try that one, but I will do what I did above and extract the driver for nouveau

Indeed it is. I have a 486sx-25 at home - the BIOS date is 8/27/1992, so it’s exactly 30 years old. I have it maxxed out as much as I can. 32MB (not GB) of RAM, 1MB video card, 500MB HDD. It runs DOS 6.22 and Windows 3.1 - it’s great for those old DOS games. But it’s just flat-out old. And I don’t know of anyone else who has one of these…

2 Likes

That is a 32 bit driver
I need x86-64 dont I?

Tried it anyway. Doesnt work, hangs with same message

Nov  7 21:00:12 trinity kernel: [   55.147259] nouveau 0000:01:00.0: firmware: direct-loading firmware nouveau/nva8_fuc084

Time to shop for an AMD card

@nevj


You have to download this from Nvidia, do a chown +x to make it executable and do a ./xxxxxx.run
It seems ridiculous on how Windows can run old Nvidia graphics, that Linux is phasing out.
I ran it but it said I needed to kill my X server?

@4dandl4
Ok , I got the wrong file. I had trouble finding it.
Will try again

I is ridiculous. The whole thing was caused by kernel developers changing the kernel module interface.

@nevj


I got the Nvidia 390.154 driver installed in Arch.
I had to use “sudo systemctl stop lightdm.service”
cd to “Downloads”
Run the “sudo NVIDIA-Linux-x86_64-390-154.run” file
The install will ask if you want Nvidia to disable the nouveau driver, I said yes, after that I rebooted and, you also have to let the installer build the 32bit libraries, the Nvidia driver was installed.
I rebooted and lightdm started.
I do not know how this will play-out with void Linux, or even how it will affect Arch, but since I am running the lts kernel, it should work. It may lock-down my kernel upgrades, but at least I am running Nvidia. Guess I will know when I run “pacman -Syu” system upgrade.

It is saying “not supported” but I already knew that.

This is the nouveau driver disabled.

Is your kernel >5.4 ?
I dont disable nouveau. and I dont install nvidia. I just copy the nvidia firmware over to nouveau.
So far , it loads the moduke OK, but then hangs, but that is because I have been mistakenly using 32 bit firmware (x86)? How stupid… I just copied that scriot from the internet and did not check it was for x86 architecture.
Lets see what happens when I get the right x86-64 firmware.