๐Ÿ–ต A very sad tale about an old man and his beloved Nvidia GeForce 210 GPU

Up until recently, I had been running the Long-Term-Support version of Ubuntu 20 (Focal Fossa) on my dev machine. When I’m in the middle of multiple software projects, the last thing I need is a failed upgrade. So I kept postponing. Every once in a while, I would tell the software updater: “Not today!”

And so the months and years went by…

But with the LTS version of Ubuntu 24 (Noble Numbat) already out, my system was beginning to get outdated. This or that piece of software would complain about not finding the latest lib packages, and the going got increasingly tough. As I am currently taking a breather between projects, I decided to take the plunge and do a system upgrade. And yes, there were some problems!

At this point I should mention that my graphics card is an, admittedly very old, GeForce 210. This card was released in 2009. It connects to the motherboard on a PCI Express version 2.0 slot with 16 lanes. It has connectors for VGA, DVI and HDMI, but you can only use a maximum of two connectors at one time. I like how it is a low-power solution for using my two VGA monitors, one of which is on a VGA-to-DVI adapter.

This graphics card has served me well. It was good enough to play Dota and WOTLK for some time, and I was even able to mine some Feathercoin with its very basic CUDA capabilities, using sgminer.

I was happy with it, despite the fact that, using the open source Nouveau driver it would sometimes hang at random. Well, not exactly at random, it would usually happen when the window manager performs 2D visual effects, but not with any pattern that I could detect. All I know is that using xfce as my window manager was not solving the problem. Disabling hardware acceleration at the X config (Option "NoAccel" "true") did not help either. I was never able to determine why this happens from the X logs, so I was forced to use NVidia’s 340.108 binary blob. This binary worked well without ever crashing, but is only compatible with Linux kernels up to major version 4.

The 340 driver is no longer maintained by Nvidia, and for this reason, they will never make it work with the latest kernel versions. Focal Fossa comes with a 6.x.x kernel, and I don’t want to run an old kernel, as this would defeat the whole purpose of upgrading the system’s software in the first place.

There is this obviously very talented person on github, who has published a solution for patching the 340 drivers for kernels with major version 5, and it is here. According to this issue, the patch does not work for kernels with major version 6. In fact, I was able to reproduce this issue on my machine.

According to the developer, it would take some effort to patch the binary blob for the latest kernels. I hope he does this, but at the same time I understand and empathize if he never does.

There is also a legacy PPA that lets you install the nvidia-340 package, even though it is no longer available on recent distributions. But after trying it on Ubuntu 24 I got a black screen. Probably because it doesn’t work with kernel version 6.

If only there was a way for all the Linux users of GeForce 210 cards to pitch in a dollar in a jar, and create a bounty available for whoever patches the 340 binary blob for use with kernel version 6, or even for whoever fixes the bug that makes the Nouveau drivers hang in the first place. Maybe then it would be worth the time of these developers to give new life to these old cards. I’m not even sure if such a level of organization is possible.

So the bottom line is, currently I am stuck with using the Nouveau drivers on my fully upgraded Ubuntu machine. Yes, my system’s graphics card may hang at any time, so I am saving this blog post often as I write. I have disabled all the graphics effects on my Gnome desktop, and this minimizes, but does not completely eliminate, the problem.

You could argue that my problems are self-inflicted, because I am stubborn: I don’t want to upgrade to a recent graphics card, because then I would also have to buy two HDMI monitors. I don’t want to have a high-powered graphics card on my machine, because it would needlessly draw too much power from the PSU. And I would be constantly tempted to stop working and start playing video games.

I should be inserting here some commentary about Nvidia and planned obsolescence, but I think Linus said it best:

Actually I’m not even that mad that Nvidia does not want to spend more effort to support a very old product, but it would be nice if they could at least help the Nouveau driver developers by releasing some of their internal secrets about the cards that they themselves are not planning to support. Having said this, I realize that they have zero incentive to do so. Not supporting old hardware forces us to buy more hardware. Well, what do you know, I did end up ranting about planned obsolescence after all. And why not? Venting your frustration is what blogs were made for!

There’s also something to be said here about these very sufficient, very capable, working pieces of hardware being dubbed “ancient”. I think people are using this word very liberally. Is all software engineering at this point done by teenagers? I’m already past my midlife crisis, but I swear some of the stuff I read about this graphics card these days almost triggered another crisis in me. If my machine is ancient, then I guess so am I. Am I really that old? I know VGA is ancient, but apparently so is DVI?!? Are people really flocking to switch from the “dated” HDMI to DisplayPort? What problem do these technologies solve, really? Aaargh!

Old man yells at cloud

So, anyhow, the solution I have decided to go with, is to buy another graphics card that was released five years later, in 2014. This way I can postpone buying new monitors for a while longer. As far as I can tell from scouring the web, the MSI GeForce GT 710 may be sufficiently usable with the Nouveau drivers, albeit not without problems. It will arrive today and I will only then know for sure. I may even edit this blog post to let you know.

One thing is for certain. Every Nvidia card that is well-supported by open source drivers retains its value and is immortalized for the ages. The ones that don’t, necessarily lose their value over time. Binary blobs are great if you own Nvidia stock, but not if you are a consumer of their products. Due to the complexities of software, and because of all kinds of version hell, when you buy a graphics card, you are effectively not buying it, but actually renting it for a few years, until it becomes practically unusable.

I have enormous respect for the people who reverse engineer this hardware, because it’s a very hard, very specialized type of systems programming that requires a lot of thankless work. Often, when you plug something to your Linux machine and it just works, it’s a small miracle come true, thanks to these very special people. I don’t take it for granted.

Leave a Reply

Your email address will not be published. Required fields are marked *