Jump to content

Is there Afterburner alternative on Linux?

Windows 10 breaks on regular basis to the point where I'm done with it. I plan on moving to Ubuntu. Afterburner is the last software that I need to replace in order to free myself from Windows (I think). 

 

For AMD, there is this project called AMDOverdriveCtrl which has beautiful interface full of functionalities: https://sourceforge.net/projects/amdovdrvctrl/

 

But nothing for nVidia. I know the nVidia driver comes with a settings page that allows you to change various things, but that is nowhere near good enough. I searched everywhere, found nothing good. Does anyone know if there is a replacement for Afterburner for Linux? If not, I plan on creating one. 

 

My plan is to use Electron framework to make a modern interface which communicates with nvidia-smi in the background to control GPU fan, clockspeed, power, etc. 

http://developer.download.nvidia.com/compute/cuda/6_0/rel/gdk/nvidia-smi.331.38.pdf

 

Please let me know what you think. Is there a replacement that I missed? If not, does anyone want to help (Electron is JavaScript + Node.JS)? 

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, Electronics Wizardy said:

What do you want From afterburner? Sensors with grep will shows the temp, nvidia-smi shows usage. 

I want to have the temperature and usage shown on the task bar (or how you call that thing on the top). Also fan profile, switching from different clockspeed configurations. 

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, X01X012013 said:

I want to have the temperature and usage shown on the task bar (or how you call that thing on the top). Also fan profile, switching from different clockspeed configurations. 

There is a system monitor that shows temps on the top bar. 

 

Fan profile and other settings are in the driver. 

Link to comment
Share on other sites

Link to post
Share on other sites

6 minutes ago, Electronics Wizardy said:

There is a system monitor that shows temps on the top bar. 

 

Fan profile and other settings are in the driver. 

 

LL

LL

 

I don't have Ubuntu installed yet, these images are found on Google. This is what it looks like? 

What I'm looking for is a fan curve that set fan speed depending on temperature. The default fan curve from EVGA is so ridiculous that my GTX 950 performs worse than Intel Integrated Graphics. 

Also, for clockspeed profile, I want to have multiple presets that I can switch from, like "Maximum overclock", "Quiet", "Normal", etc. 

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, X01X012013 said:

 

LL

LL

 

I don't have Ubuntu installed yet, these images are found on Google. This is what it looks like? 

What I'm looking for is a fan curve that set fan speed depending on temperature. The default fan curve from EVGA is so ridiculous that my GTX 950 performs worse than Intel Integrated Graphics. 

Also, for clockspeed profile, I want to have multiple presets that I can switch from, like "Maximum overclock", "Quiet", "Normal", etc. 

For those settings, linux isn't great. I personally just leave them all at the defaults. For clocks they will automatically slow down at idle so don't worry about that. 

 

There might be a cli tool to adjust fan speed that you could script easily. 

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, Electronics Wizardy said:

For those settings, linux isn't great. I personally just leave them all at the defaults. For clocks they will automatically slow down at idle so don't worry about that. 

 

There might be a cli tool to adjust fan speed that you could script easily. 

Well, let's make it great! Time to code (after my finals)

Link to comment
Share on other sites

Link to post
Share on other sites

Last time I checked, the closed NVidia driver does not expose fan and temperature controls in the standard way (usable by lm_sensors et al). This is probably a reason such a tool does not exist (yet).

 

AFAIK there is some kind of (proprietary) API made by NVidia (for temperature and fan control). That is more sane (I think, as a non-programmer) than grepping the command-line utilities output. I presume the API documentation is available from NVidia, somewhere...

Link to comment
Share on other sites

Link to post
Share on other sites

@X01X012013

Although it might take a bit of thinkering in order to make it work to your liking, Conky is probably what you might be looking for.

Apart from it, there should also probably be a bunch of plugins for various DE's out there that might add the same functionality to a desktop taskbar or anywhere you like. For example, with Xfce4 there's a specific version of the sensors plugin which can also display the temperature of an nvidia card.

 

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Wild Penquin said:

Last time I checked, the closed NVidia driver does not expose fan and temperature controls in the standard way (usable by lm_sensors et al). This is probably a reason such a tool does not exist (yet).

 

AFAIK there is some kind of (proprietary) API made by NVidia (for temperature and fan control). That is more sane (I think, as a non-programmer) than grepping the command-line utilities output. I presume the API documentation is available from NVidia, somewhere...

Well, they might have some proprietary API, but since we don't have access to that, so I guess parsing command-line utility output is the only way to go. That might be "insane" but that's all we got now. The core communication code is subject to be replaced by something "sane", but the rest of the code can stay the same. 

 

Notes for myself: 

 

6 hours ago, Night_ said:

@X01X012013

Although it might take a bit of thinkering in order to make it work to your liking, Conky is probably what you might be looking for.

Apart from it, there should also probably be a bunch of plugins for various DE's out there that might add the same functionality to a desktop taskbar or anywhere you like. For example, with Xfce4 there's a specific version of the sensors plugin which can also display the temperature of an nvidia card.

 

Interesting... But it only does half of what we need... Because I kind of want graphs on clockrate, temperature, VRAM usage, etc, I think we can just put a few other common sensors (CPU temp, RAM usage) in the list. I think Node.JS exposes some sensors, so it wouldn't be too hard. There must be some Node modules that help with common sensors too. What we really need is to be able to control and monitor the GPU. 

Link to comment
Share on other sites

Link to post
Share on other sites

@X01X012013

That's where the configuration part comes in. Cokey can pull details directly from the shell, as in from programs (like bash commands) or scripts (such as one's written in Python) that print their output to the terminal (e.g CLI stdout), as well as from internal LUA scripts.

Node.JS could probably be used in conjuction with Conky, but that's kind of unnecessarily considering it's possible to pull all the data using Nvidia utility commands such as "nvidia-smi", "nvidia-settings" or more simply, by using some existing addon scripts that probably do what you're looking for with less extra hassle.

 

If you wish to make pretty graphs from all the data, look into something like conky-draw which could allow you to make all sorts of fancy looking stuff.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Night_ said:

@X01X012013

That's where the configuration part comes in. Cokey can pull details directly from the shell, as in from programs (like bash commands) or scripts (such as one's written in Python) that print their output to the terminal (e.g CLI stdout), as well as from internal LUA scripts.

Node.JS could probably be used in conjuction with Conky, but that's kind of unnecessarily considering it's possible to pull all the data using Nvidia utility comands such as "nvidia-smi", "nvidia-settings" or more simply, by using some existing addon scripts that probably do what you're looking for with less extra hassle.

 

If you wish to make pretty graphs from all the data, look into something like conky-draw which could allow you to make all sorts of fancy looking stuff.

That's still not good enough, I want multiple profiles with different overclocking/underclocking and fan curve that I can switch with 2 clicks. I also want GUI interface to modify each profile (and create new ones). 

 

Also, that doesn't look fancy, I want modern, animated, and interactive interface. Fanciness is less of a priority, and I'll do that last, but if we are going fancy that is not good enough, I want live graph controlled by sliders. 

Link to comment
Share on other sites

Link to post
Share on other sites

@X01X012013

If you're keen on using a GUI, there's this not so fancy looking tool called "Nvidiux" which seems to have the options you're looking for when it comes to overclocking. However i can't say that i know how well it performs as i didn't try it myself.

 

However as mentioned before, other than that when it comes overclocking you're probably more-or-less stuck with what's already there in Nvidia's settings manager or with the manual aprroach using something like the "nvidia-settings" utility from the command line.

With that said though, in such a case a simple bash script could probably serve as a profile switcher. But where instead of a GUI you could edit several profile-config files with each containing the exact overclock values, while later loading them using a simple command instead of a few mouse clicks.

 

As for fancy monitoring, Conky's graphs could be animated and be made a lot more detailed - as i said before it's just takes a bit of one-time configuring.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Night_ said:

@X01X012013

If you're keen on using a GUI, there's this not so fancy looking tool called "Nvidiux" which seems to have the options you're looking for when it comes to overclocking. However i can't say that i know how well it performs as i didn't try it myself.

 

However as mentioned before, other than that when it comes overclocking you're probably more-or-less stuck with what's already there in Nvidia's settings manager or with the manual aprroach using something like the "nvidia-settings" utility from the command line.

With that said though, in such a case a simple bash script could probably serve as a profile switcher. But where instead of a GUI you could edit several profile-config files with each containing the exact overclock values, while later loading them using a simple command instead of a few mouse clicks.

 

As for fancy monitoring, Conky's graphs could be animated and be made a lot more detailed - as i said before it's just takes a bit of one-time configuring.

That is interesting, I'll definitely look into Nvidiux. Thanks for the information :) 

 

Can you help me a bit on how to create profile scripts? GPUGraphicsClockOffset seem to take in an index at the end, which is the PowerMizer power level, what should I do? Once I know how to write the script, I can easily wrap it in a GUI :) 

 

The monitoring I want is icons on the top bar, not really graphs on the desktop. I do want to be able to get a nice graph when I need it, I want something that feels like this: 

http://canvasjs.com/editor/?id=http://canvasjs.com/example/gallery/dynamic/realtime_line/

 

Those desktops looks amazing, but I pretty much never look on my desktop so I don't know how useful that will be... 

Link to comment
Share on other sites

Link to post
Share on other sites

11 hours ago, X01X012013 said:

Well, they might have some proprietary API, but since we don't have access to that, so I guess parsing command-line utility output is the only way to go. That might be "insane" but that's all we got now. The core communication code is subject to be replaced by something "sane", but the rest of the code can stay the same. 

My point was exactly that I think it is documented and well usable (note: proprietary = closed source does not necessarily mean it can not be used in other, open source projects - what would be the point in creating an API if it is not documented?). IIRC I've seen this discussed on NVidia developer forums, but I might misremember. It might even be documented in the "glue" part of NVidia drivers, I'd look in there first (also the driver documentation). EDIT: I'm not a programmer, but there's bound to be some header while where the relevant information is exposed, if this API exists.

 

You might want to ask on the NVidia developer forums (Linux subforum) about this. There are NVidia staff reading there, and if there's such an API / interface, they will tell you.

 

Something anecdotal why I think this might be worthwhile: Some years back I was playing with SuperKaramba (a KDE "conky replacement" which can show things in fancy style, but the project has been discontinued AFAIK). It worked well, some configurations used /proc to dig out the information / stats, while some used command line utilities. Some command line utilities are quite bloated. That does not matter in normal, intended usage of the programs, but in this use case it caused CPU spikes every update interval - which was a gamestopper on a low- to mid-end machine, say, if I was doing any gaming.

 

Bottom line: better use the least CPU-intensive way available to achieve this kind of things. NVidia-smi might work well, or not in this regard (not all command line utilities are created equal).

Edited by Wild Penquin
wordings, typos
Link to comment
Share on other sites

Link to post
Share on other sites

@Wild Penquin

You got a good point, I'll use command line utility for the prototype, it's just one file that needs to be replaced if we are switching to API. I see that the other project (Nvidiux) uses `nvidia-settings --query` to read information, so there might not be an API. 

Also, it would really only pull data once every few seconds, and I can make different monitors update at different time, it should be fine. 

Link to comment
Share on other sites

Link to post
Share on other sites

18 hours ago, X01X012013 said:

That is interesting, I'll definitely look into Nvidiux. Thanks for the information :) 

 

Can you help me a bit on how to create profile scripts? GPUGraphicsClockOffset seem to take in an index at the end, which is the PowerMizer power level, what should I do? Once I know how to write the script, I can easily wrap it in a GUI :) 

 

The monitoring I want is icons on the top bar, not really graphs on the desktop. I do want to be able to get a nice graph when I need it, I want something that feels like this: 

http://canvasjs.com/editor/?id=http://canvasjs.com/example/gallery/dynamic/realtime_line/

 

Those desktops looks amazing, but I pretty much never look on my desktop so I don't know how useful that will be... 

I dug a little in the "nvidia-settings" manual page and noticed that there's actually an option which allows loading different config files using the "--config" option, that in turn might be used to fill the role of the overclocking profile files that you're looking for.

Each configuration file seems to contain the settings that are available in the Nvidia settings manager, so in theory, it might also be possible to create a file of such type with the overclocking settings included and save the effort of using a seperate parsing script. Loading different config files is probably done by using the "nvidia-settings" similarly to the following style:

user@desktop-pc:~$ nvidia-settings -l --config="~/.gpu_profile1.conf"

 

Eitherway, the default script that gets loaded is located at "~/.nvidia-settings-rc", so you can try using that as a basic guideline.

 

As for the settings, the "GPUGraphicsClockOffset" needs to be set before applying any overcloking parameters, which can be done manually using the following way:

user@desktop-pc:~$ nvidia-settings -a [gpu:0]/GPUGraphicsClockOffset[3]=100

Where the value withing the square brackets ("[3]") specifies the performance profile and the value of the parameter itself probably specifies the base clock offest itself. In a config file, i assume you could try including this setting in the following style:

0/GPUGraphicsClockOffset[3]=100

Note that before doing anything related to overcloking, you will have to enable an option called "Coolbits" in the X-Server. You can do that by locating the X.org config files used by your distro (usually located at "/etc/X11/xorg.conf.d" or something similar) and find the configuration section that has the settings for your GPU, which usually looks something like this:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 10XX"
	Option "NoLogo" "1"
EndSection

Then just add another "Option" line somewhere withing the segement (before the "EndSection" tag) as follows:

    Option         "Coolbits" "5"

Note that didn't find any specific documeted value for the integer that's used for activating the "Coolbits" feature, so if "5" doesn't work for you can try using "28" or "1" instead. Eitherway, after adding the line and restarting the X-Server, the overcloking options should become available.

 

Also note that i didn't actually try any of these settings so i can't say for certian which of these may work or break stuff. So do whatever tinkering you like with care (and also in that regard, don't hold me liable if you break anything while doing so).

 

As for monitoring widgets, Gnome 3 seems to have some kind of an addon that might suit your needs. I assume other DE's like KDE Plasma 5 might have something similar available as well.

 

Link to comment
Share on other sites

Link to post
Share on other sites

  • 4 months later...

Whats the status on this project? If ANYONE can create a tool with the same functionality as Afterburner, I would GLADLY pay for it!

Link to comment
Share on other sites

Link to post
Share on other sites

Conky + Conky manager. in conky manager, it comes with a preset widget set up for getting information from Nvidia cards.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

  • 3 months later...

Not to bring up old threads but I came across this one and decided to contribute my own GUI to over clocking support for nvidia based cards. I am currently still testing multiple devices to ensure the compatibility of my build. Please let me know if you would like to contribute to this project.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 years later...

GreenWithEnvy is a thing.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 years later...
On 4/26/2017 at 8:48 PM, X01X012013 said:

Windows 10 breaks on regular basis to the point where I'm done with it. I plan on moving to Ubuntu. Afterburner is the last software that I need to replace in order to free myself from Windows (I think). 

 

For AMD, there is this project called AMDOverdriveCtrl which has beautiful interface full of functionalities: https://sourceforge.net/projects/amdovdrvctrl/

 

But nothing for nVidia. I know the nVidia driver comes with a settings page that allows you to change various things, but that is nowhere near good enough. I searched everywhere, found nothing good. Does anyone know if there is a replacement for Afterburner for Linux? If not, I plan on creating one. 

 

My plan is to use Electron framework to make a modern interface which communicates with nvidia-smi in the background to control GPU fan, clockspeed, power, etc. 

http://developer.download.nvidia.com/compute/cuda/6_0/rel/gdk/nvidia-smi.331.38.pdf

 

Please let me know what you think. Is there a replacement that I missed? If not, does anyone want to help (Electron is JavaScript + Node.JS)? 

I know it's been awhile since this post but, have you tried MangoHUD?

 

Screenshot

Since you're transitioning from Windows, definitely check out the software you use most to see if what alternatives are out there.  

 

I was going to suggest Phoronix Test Suite first but, that's more for benchmarking than monitoring.  Still might be worth checking out though.  Geekbench is another option too

RTX 3080Ti Ryzen 5 3600 MSI Gaming Edge WiFi 32Gb DDR4 3600 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×