azeam / powerupp

Simple GUI for UPP
GNU General Public License v3.0
81 stars 7 forks source link

Not working with Radeon RX 5700, ubuntu 18.04, linux kernel 5.3.0 #12

Closed rumble-key closed 4 years ago

rumble-key commented 4 years ago

_pp_dpmsclk idle: cat /sys/class/drm/card0/device/pp_dpm_sclk 0: 300Mhz 1: 800Mhz * 2: 1750Mhz After putting gpu under load: cat /sys/class/drm/card0/device/pp_dpm_sclk 0: 300Mhz 1: 1025Mhz 2: 1750Mhz * After applying new gfx clock frequency using powerupp to 1800Mhz: cat /sys/class/drm/card0/device/pp_dpm_sclk 0: 300Mhz 1: 800Mhz * 2: 1800Mhz After putting gpu under load: cat /sys/class/drm/card0/device/pp_dpm_sclk 0: 300Mhz 1: 1750Mhz * 2: 1800Mhz

_power_dpm_force_performancelevel is set to auto, setting it to high makes no difference

GUI is broken as well: Screenshot from 2020-06-19 00-52-01

rumble-key commented 4 years ago

Did upgrade to ubuntu 20.04, which is currently shipped with kernel 5.4, powerupp would still not work

Solution: install and boot with kernel 5.7.4 as described in https://wiki.ubuntu.com/Kernel/MainlineBuilds

I checked only gfx frequency and power increase - works perfectly

P.S. Margins in GUI are still broken, window resizing doesn't help Screenshot from 2020-06-19 15-04-29

azeam commented 4 years ago

Try this commit and see if it works for you (looks like you are using some very large system font?), on my system it looks "good" now even with huge fonts. Do a make clean before re-building with make.

As for the other issue I believe it is caused by #3 and the new firmware is working as expected with Ubuntu 20.04 and kernel 5.7 for me (possibly earlier).

rumble-key commented 4 years ago

I use Large Text option from Universal Access settings

With the new commit everything is good, except initial window size is a bit too small: Screenshot from 2020-06-19 19-26-19

azeam commented 4 years ago

The vertical scrollbar still annoyingly appears for a pixel-scroll with this, but I believe it is as good as I am able to get it while keeping the window resizable (which I prefer).

rumble-key commented 4 years ago

Sorry for late reply. It is totally fine now. Though, if fan RPM becomes 4 digit number the leftmost column with temperatures goes just a few pixels beyond the window border. Or temperature becomes 3 digit number Screenshot from 2020-06-21 20-03-29

I see now that powerupp is fully written in C. Wow, that's insane, really. I tried C++ in the past and definitely not trying that again, ever, and C is even more harder. But creating GUI for C++ program with Qt/QML was actually pretty easy. QML is like CSS and JavaScript combined. I think with Qt and QML it should be pretty simple to make window auto resize to it's contents and make actually everything in GUI auto resize and look good, regardless of window size, font size and screen resolution. But maybe I am wrong.

Anyway, I am really grateful to you for making this software. I wouldn't even consider buying RX 5700 if there wasn't GUI software like this to overclock beyond limits on ubuntu. I managed to get stable Gfx overclock up to 2000 MHz, but had to lower to 1900 MHz because of too high temperature. Fan speed just can't go above 86%, even if try setting it to manual control it's just won't work. Seems like driver issue again, though I don't know where I should report it.

As for the issue with kernel and firmware, as I said overclocking didn't work on kernel 5.3/5.4. But now on kernel 5.7 it works perfectly. And the first thing that got my attention in the README was "..who own a Navi 10 card and are on a kernel <5.5 and want to overclock..". There is a mention of issue with 5600xt, but nothing about kernel. So, I think it's worth mentioning in the readme, so that other people with RX 5700 start troubleshooting by first updating to the latest stable linux kernel.

azeam commented 4 years ago

Sorry for late reply. It is totally fine now. Though, if fan RPM becomes 4 digit number the leftmost column with temperatures goes just a few pixels beyond the window border. Or temperature becomes 3 digit number

The fix is pretty ugly (you can see the comment on the commit) and is basically taken care of by a couple of spaces after the default "N/A" text, adding a few more should take care of those last bits. I made another attempt at a proper window resize depending on content and it is possible to do something like:

GtkWidget *toplevel = gtk_widget_get_toplevel(g_everythingbox); int contentwidth = gtk_widget_get_allocated_width(g_everythingbox); int contentheight = gtk_widget_get_allocated_height(g_everythingbox); if (GTK_IS_WINDOW (toplevel)) { GtkWindow *window = (GTK_WINDOW(toplevel)); gtk_window_resize(window, contentwidth + 85, contentheight + 60); }

or:

GtkWidget *toplevel = gtk_widget_get_toplevel(g_everythingbox); int contentwidth = gtk_widget_get_allocated_width(g_everythingbox); int contentheight = gtk_widget_get_allocated_height(g_everythingbox); gtk_widget_set_size_request(toplevel, contentwidth + 85, contentheight + 60);

in the monitoring section (and declaring g_everythingbox as a widget), this will automatically resize the window when the text width in the monitoring section changes and will be checked every 200ms (as often as the monitoring is updated).

It will, however, in the first case cause the window size to always resize to the content width even if manually resizing the window and in the second case the window cannot be resized to a smaller width than the content (would be the same as not setting the window to resizable, which also fixes the issue, but I don't like it). Maybe there are better ways to handle this, but I think it's a combination of GTK+ limitations, the fact that the monitoring section is the widest part of the window and that the width changes depending on the monitoring data which makes this trickier than it would need to be.

I see now that powerupp is fully written in C. Wow, that's insane, really. I tried C++ in the past and definitely not trying that again, ever, and C is even more harder. But creating GUI for C++ program with Qt/QML was actually pretty easy. QML is like CSS and JavaScript combined. I think with Qt and QML it should be pretty simple to make window auto resize to it's contents and make actually everything in GUI auto resize and look good, regardless of window size, font size and screen resolution. But maybe I am wrong.

I'm new to C myself but I quite like it, it's not easy but very powerful and fast. Never tried Qt/QML but I will look into it for the next project ;)

Anyway, I am really grateful to you for making this software. I wouldn't even consider buying RX 5700 if there wasn't GUI software like this to overclock beyond limits on ubuntu. I managed to get stable Gfx overclock up to 2000 MHz, but had to lower to 1900 MHz because of too high temperature. Fan speed just can't go above 86%, even if try setting it to manual control it's just won't work. Seems like driver issue again, though I don't know where I should report it.

Glad you like it, not sure about the fan issue. I'm planning to implement some fan settings to powerupp but haven't had time to work on that yet.

As for the issue with kernel and firmware, as I said overclocking didn't work on kernel 5.3/5.4. But now on kernel 5.7 it works perfectly. And the first thing that got my attention in the README was "..who own a Navi 10 card and are on a kernel <5.5 and want to overclock..". There is a mention of issue with 5600xt, but nothing about kernel. So, I think it's worth mentioning in the readme, so that other people with RX 5700 start troubleshooting by first updating to the latest stable linux kernel.

I see your point but I still think it was caused by that power bug, meaning it's not a kernel issue per se, it used to work with old kernels before the firmware got updated, but nowadays it needs a new kernel (with updated drivers) to make the new firmware compatible or older firmware if using an older kernel than before the drivers got updated to work with the new firmware. But I guess the readme could be clearer on that.