Halloween

Double, double toil and trouble – NVIDIA drivers

This is a personal post mostly representing anecdotal information sharing my personal experience with the ASUS NVIDIA GeForce RTX 3060 Ti graphics card tested exclusively under Ubuntu 22.10. It captures issues I’ve experienced, together with a few workarounds.

There are many reasons why NVIDIA produce proprietary graphics drivers. One popular held reason is that there is game-specific code in these drivers which are developed using exclusive rights to the game source code and extensive optimization. This type of information is confidential and valuable as it can give a company a competitive advantage over their rivals. Even if the performance gains are tiny, even a few extra fps may sway customers.

NVIDIA is starting to embrace open source drivers though. Since May 2022, NVIDIA has published Linux GPU kernel modules as open source with dual GPL/MIT license. This starts with the R515 driver release. However, the open source drivers lag behind their proprietary counterparts with benefits offered by the proprietary driver not yet available with the open source equivalent. In particular, they include display and graphics features (such as G-SYNC, Quadro Sync, SLI, Stereo, rotation in X11, and YUV 4:2:0 on Turing), as well as power management, and NVIDIA virtual GPU.

For many users, the open source display drivers are not currently a viable solution. How do the proprietary drivers fare?

Asus GTX 3060 Ti
Asus NVIDIA GeForce RTX 3060 Ti

With Ubuntu 22.10’s package management system, the latest NVIDIA display driver is version 515.65.01.

I can report this version is stable in use. Generally a thumbs-up. Over the past 10 days, I experienced a single lock up which occurred when watching a video. The display and keyboard were frozen. Logging in remotely via ssh and issuing the shutdown command didn’t turn off the machine. Apart from this single blip, which I’ve been unable to reproduce, the display driver works very well with fps rates within expectations for a wide range of games using Proton.

I did temporarily upgrade to the later display driver 515.76 but experienced 2 complete lock ups within an hour, so reverted back to 515.65.01. I will test 515.76 when Ubuntu offer it within their native package management format. Things have not been perfect though.

Notable issues with the proprietary display drivers

HDMI / DisplayPort audio bug

Playing sound through a monitor’s speakers suffers from regular sound dropouts. The ASUS card has 3 DisplayPort and 2 HDMI connectors. The sound bug occurs with both DisplayPort and HDMI.

Initially, I thought these dropouts were connected with hard drive access, as they often occurred when starting programs such as Firefox, Thunderbird, Discord, and others. But with more testing there are frequent dropouts even when there is no hard disk activity. It transpires this audio bug has affected RTX 30 series cards for a long time.

The only reliable way I can find to stop these audio dropouts is to lock the memory clocks.

I added the lines to my .bashrc file.

alias lmc='sudo nvidia-smi --lock-memory-clocks=405'
alias rmc='sudo nvidia-smi -rmc'

So lmc locks the memory clocks at 405 MHz. For activities where higher memory clocks are essential (e.g. playing a game), the memory clocks lock is cleared by issuing rmc. It’s hardly an elegant solution though. Instead, I revert to using a pair of bookshelf speakers either with the motherboard’s sound output or via Bluetooth.

But I seriously wouldn’t expect this NVIDIA bug, which has been floating around for ages, to remain unfixed. Come on NVIDIA!

This bug is not fixed with display driver 520.56.06.


Inconsistent Power Draw

nvidia-smi reports that the GPU idles around 14W when connected to a single monitor and 24W when connected to two monitors under Ubuntu. That’s pretty frugal for a mid-range dedicated graphics card. Under Windows that figure is 8W with a single monitor. That’s not the issue though.

From a lot of testing, it appears that the 14W floor is not maintained. For example, the GPU will idle at 14W over a long period of time provided that the GPU is not stressed. But once it has been stressed (e.g. playing a graphically demanding game), the GPU’s minimum power draw increases to 22W even when only powering a single monitor. The only way to revert back to the 14W floor is to reboot the machine.

This bug is not fixed with display driver 520.56.06.


Not beginner friendly

When changing graphics drivers, it’s too easy to end up with a system that boots but only to a blank screen. This happens more often with a rolling distro as opposed to a point release distro like Ubuntu.

For a beginner, this might be a real bugbear. For anyone experienced with Linux, it’s just an inconvenience. The solution is, of course, to boot to the command-line and reinstall the graphics drivers.

  • Start the system and press the Escape key when waiting for the GRUB menu to show;
  • Highlight the kernel you want to use and press the e key;
  • Go to the line starting with linux and add 3 to the end of the line;
  • Press Ctrl + x to boot.

Once you log in at the command-line, you can then reinstall:

$ sudo apt install nvidia-driver-515 nvidia-dkms-515

4 comments

  1. Why not try a different distros as Ubuntu is very conservative with updated software. Maybe try a distro which provides the New Feature branch (520.56.06)?

Share your Thoughts

This site uses Akismet to reduce spam. Learn how your comment data is processed.