Problems with Kepler GK104 (GTX770) overclocking in Linux

Hello, I’m having problems getting overclocking working in Linux with my GTX770 (GK104 based) card.

I’ve tried a lot of different values for the coolbits setting in xorg.conf, including 8 and 12 which are listed in multiple places on the web as enabling overclocking and enabling overlocking plus fan control for Kepler cards respectively. With some coolbits values, the fan slider and clock adjustments do appear in nvidia-settings but only the fan control actually works. The clock adjustments simply do nothing, I can enter any values there and it has absolutely no effect on speed plus when I restart nvidia-settings it just shows the original clock values again. Trying to set the clock values from command line using nvidia-settings says that the values are read only.

The card can be overclocked just fine in Windows with software such as MSI Afterburner, but unfortunately currently the only software overclocking solution on Linux is the one provided by NVIDIA.

I can overclock the card by reflashing the firmware but I’d prefer to be able to change the clocks without rebooting and reflashing since that way I can easily use clocks that aren’t stable in all applications but work in most.

I’m currently using driver version 390.67 but I could never get overclocking working in 390.48 either. I don’t have experience with earlier drivers because I’ve only very recently switched from Windows (due to the whole Win10 fiasco). I suspect some older drivers might work (I’ve certainly found many Kepler clocking success stories using NVIDIA’s proprietary Linux drivers from the web but they’re all from years ago) but I’d really prefer to get this working with the latest drivers. Yes, the card is old and I’ll be replacing it in the next 1 year probably, but it’s still even supported in the non-legacy branches.

I’m open to temporarily installing some earlier versions of the driver and seeing if overclocking this card works there if somebody wants to give me some version numbers to try though.
nvidia-bug-report.log.gz (90.7 KB)

Coolbits 8 for overclocking and 12 for overclocking+fan control is correct.
Things have been changed starting with the 390 driver regarding overclocking in terms of syntax. So also bugs might have been introduced there. To check if it is working in general you could try with a 384 driver and nvidia-settings.
To have more info about your system, please run nvidia-bug-report.sh as root and attach the resulting .gz file to your post. Hovering the mouse over an existing post will reveal a paperclip icon. Also provide the full cli command you’ve been trying.

Now that looks like Asus locked down your card completely, nvidia-smi only reports the most basic values, not even clocks.
Sidenote: Windows tools like Afterburner or nvidia profile inspector use NVAPI which provides a low level access to driver and gpu settings and doesn’t exist on linux. So on linux only features work that use driver standards.

Ahh, so that’s what the problem is, I kind of suspected it could be something like that. The card is a factory overclocked model from ASUS btw., maybe that has something to do with it? Well, when I finally get the money to buy a 1070Ti or 1080 (or whatever will be out when I have it) I have to make sure the card isn’t locked down like this…

Is there anything I could possibly do about this situation, at least if I’m willing to take some risks with the card? Like flash modified firmware or firmware from another card manufacturer, maybe firmware from a NVIDIA reference card?

I don’t know if those kind of locks can be disabled with a different bios. You can use nvafakebios from envytools to load different bios images without reflashing. Stop Xserver - stop nvidia-persistenced - unload nvidia modules - load biosfile using nvafakebios - load nvidia modules - run nvidia-smi -q and see if clocks are reported.