seerge / g-helper

Lightweight Armoury Crate alternative for Asus laptops and ROG Ally. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models
https://g-helper.com
GNU General Public License v3.0
7.63k stars 265 forks source link

Graphical fan curve issues #1248

Closed MaixGit closed 1 year ago

MaixGit commented 1 year ago

Describe the bug The fan curves randomly freak out when adjusting them and end up in a configuration that is physically impossible, additionally the curves don't accurately control the fan speed at the temperature I set them (see Additional Context).

Clear scenario to Reproduce Steps to reproduce the behavior:

  1. Go to 'Fans + Power'
  2. Randomly click on the fan curves until they freak out

Expected behavior The graphical fan curve should follow a logical linear correlation between the temperature and fan speed as defined by the points.

App Logs log.txt

Screenshots or screencasts image

Desktop (please complete the following information):

Asus software

Additional context I previously used Atrofac which worked perfectly for the fan curve but unfortunately stopped switching power plans after a windows update, and after switching to GHelper often the fans don't actually follow the curve I defined in GHelper, sometimes turning off when they are suppsoed to be on, or even running way above the defined curve. e.g. On the curve below, at 32c the fans run at 3600rpm when they are clearly supposed to be at 2400rpm. Additionally sometimes the numbers on hover suddenly change slightly (from 40c to 39c) after switching plans or reloading the config, I think this is all just due to the graphical implementation of the curves. image

In my opinion the graphical curve is very finicky and would either need a rework or a manual button in which there are fields or even just a text/config file where I can assign percentages/rpm to temperatures like in Atrofac (Screenshot below). If this option already exists, sorry I didn't know, but the graphical curves are still messy. image

All screenshots were taken with no Asus services running, after stopping them in GHelper.

seerge commented 1 year ago

@MaixGit hello,

No matter how much i randomly click on fan chart - I didn't manage to reproduce anything close to that.

I would advice just to click on "Factory defaults" then it would load what BIOS reports as your default fan cuve, and edit it from there by dragging dots.

  1. Atrofac / Armoury and G-Helper use literally same endpoint to set fan curves (as this is the only one existing)
  2. If you want to edit curve in % values instead of RPM you can click on Y-axis and it will show %
  3. As for following fan curve - it's up to BIOS algorithms on how to interpret a curve, from my experience it's mostly tries to follow it, but don't expect pixel-to-pixel accuracy anyway.
MaixGit commented 1 year ago

Thank you for the quick reply and sorry for asuming the programs use a different method for fan control. For me it's pretty easy to recreate the bug so I've recorded a video and the logs along with it below

https://github.com/seerge/g-helper/assets/43832909/94b7158b-6b43-4361-a93e-2b399baec0f4

log.txt

Is there any way to edit the fan curve within the bios? When I tried I didn't have a cursor to interact with, and not even a mouse helped, and navigating via arrow keys I couldn't find any fan curve options.

I know about the % to RPM switch when clicking the side column but I was more referring to the text input instead of a graphical input, with either rpm or % for certain temperature.

seerge commented 1 year ago

@MaixGit check this build, I have made some adjustments, so when you move mouse out of chart bounds it shouldn't shift dots.

GHelper.zip

As for text-editing of the fan settings, it's quite exotic, but you can manually open %appdata%\ghelper\config.json and edit fan curves there. But keep in mind that values are in HEX not in decimals there.

MaixGit commented 1 year ago

Thank you, this build fixes the issue and works as expected. I'll keep woking on the fan curve to figure out how the bios algorithms follow it. One idea I've had so far is that on my pc instead of 8 points I only had 4 points for curve adjustments in the bios.