seerge/g-helper

Custom Fan Curve not working on GPU fan

zelfrort opened this issue · 29 comments

Bug Description:

Applying any custom fan curve stops the GPU fan completely. This happen on all three performance modes.

Clicking on the "Factory Defaults" button and then "Apply Custom Fan Curve" checkbox does not seem to help. The GPU fan speed goes to 0RPM. Restarting the laptop did not help either.

I thought maybe it was a UI issue, but the fan physically stops spinning.

Steps to Reproduce:

  1. Open G-Helper.
  2. Click on "Fan + Power".
  3. Click on "Apply Custom Fan Curve".

Expected Behavior:

Expected fan curves to work on both CPU and GPU fans. It seems it only applied to the CPU Fan. GPU fan stops.

App Logs:

15/04/2023 22:00:01: ------------
15/04/2023 22:00:01: App launched: ROG Zephyrus G15 GA503RW_GA503RW
15/04/2023 22:00:01: AutoSetting for Online
15/04/2023 22:00:01: BatteryLimit = 80 : OK
15/04/2023 22:00:01: PerformanceMode = 1 : OK
15/04/2023 22:00:01: Boost 1
15/04/2023 22:00:01: Eco flag : 0
15/04/2023 22:00:01: Mux flag : 1
15/04/2023 22:00:02: Monitor Power On
15/04/2023 22:01:19: FanCPU = 14-3F-44-48-4C-50-54-62-11-1A-22-29-34-43-51-5A : OK
15/04/2023 22:01:19: FanGPU = 14-3F-44-48-4C-50-54-62-16-1F-26-2D-39-47-55-5F : OK

Screenshots:

Before applying custom fan curves:
before

After applying custom fan curves:
after

Desktop:

  • OS: Windows 11 Pro (22H2)
  • BIOS: Version 313
  • Model: ROG Zephyrus G15 (2022) GA503RW
  • CPU: AMD Ryzen 9 6900HS
  • GPU: NVIDIA GeForce RTX™ 3070 Ti

Software:

  • G-Helper (0.51.0.0)
  • ASUS System Control Interface v3 (3.1.12.0)
  • ASUS Optimization (2.1.43.0)

The recommended debloat bat file was used. This is a clean install of Windows.

Not Installed:

  • Armoury crate
  • MyASUS

After testing further I noticed the Custom Fan Curve does sometimes work on the GPU fan. (After a reboot)
I suspect it might have something to do with booting the pc with an external monitor.

The external monitor was connected via a USB-C's DysplayPort cable on the 2nd slot. NVIDIA GPU.

So far I do not see any error logs anywhere. I'll keep testing and report back if I find something else.

seerge commented

@zelfrort looks like a bug in a bios or so, as from log I see that fan curve was accepted and app got a response 1(OK) from bios. I know that some devices could be acting if you apply only fan curve but no PPTs, try to do both and see if it make any difference.

Anyway since app sets fan curve, it's not much I can do next to that :)

Thanks for your response @seerge, unfortunately applying Custom PPTs with Customs Fan Curves did not solve the problem.

After extensive testing with G-Helper and Armoury Crate, I can confirm that the problem I am experiencing does not come from G-Helper. Although, I believe it would be possible to use G-Helper to patch this problem. Let me elaborate.

First Finding: (Odd Behavior)
Whenever Custom Fan Curves are applied the GPU fans will stop spinning if the GPU is disabled. This happens whenever Eco or Optimized Mode is enabled. However, on default options (Silent, Performance/Balance & Turbo) both CPU and GPU Fans seem to be spinning even if the GPU is disabled.

Although this might not be a problem in general, I am curious to know if this is happening to others too.

Second Finding: (Bug)
Booting/Restarting the pc with a HDMI or USB-C's DisplayPort cable which connects directly to the dedicated GPU (In this case, the NVIDIA GeForce RTX 3070 Ti) and then applying a Custom Fan Curve will cause the GPU fans to stop spinning as if the GPU was disabled. No matter the load on the GPU it will not start the GPU Fan. This will of course cause thermal throttling and unnecessary stress on the CPU Fan.

This bug does not seems to happen if the Ultimate GPU Mode is used. However, this is not a solution if you plan to eventually un-dock the pc and have good battery life.

Workaround:
The only solution to get the GPU fan to start spinning again without restarting the pc (With no HDMI or USB-C's DisplayPort cable connected) is to switch to Eco Mode and back to the desired mode (In this case, either Optimized or Standard Mode). This cannot be done with Armoury Crate without also unplugging the cable. However, it is possible to do this with G-Helper. (Consider using the keyboard to switch modes since the external monitor will go and stay black unless you switch back modes.)

Only switching to and back from Eco Mode works. Other things like disconnecting the external monitor, 'ejecting' the GPU and terminating all processes using the GPU does not seem to have any effect on the fan.

Suggested Patch:
Whenever G-Helper starts as a task check if an external monitor is connected (e.g. By checking Monitors in Device Manager.) if true, cycle to Eco Mode and back to the previously selected Mode. This patch should only be applied to this and other confirmed Models.

This will cause the screen to briefly go black but I consider this trade-off worth it for the temps and flexibility.

I understand if you find this patch too much for G-Helper to cover, and it is in no way your responsibility to fix Asus' failing drivers. I hope this information can help someone else noticing poor performance.

If I find the time I will contribute with this patch or a separate PowerShell Script to run along side G-Helper's startup task.
But for now, feel free to close or pin this issue. Thanks again for your response and great work on this project.

seerge commented

@zelfrort hello, thanks for detailed testing and explanations. Most probably it's indeed a quirky behavior of your bios.

Actually from what I heard so far G15 is in general more "bugged" than G14, it's bios sometimes fails to turn off dGPU (or turn it back), doesn't save eco state after reboot (so i literally had to implement a "forced" mode on start for G15 only)

Does this "fan" issue happen to you also in armoury (when all other conditions are same) ?

I suspect it is a Driver issue rather than the Bios, since it is possible to 'fix' the issue via the same interface. (ATKWMIACPI Driver) But I do not have the means; or rather the time; to verify this.

Oh, that is rather odd. I will keep an eye out for other possible problems. So far it is been a great Laptop.

Yes, I tested this issue with both G-Helper and Armoury Crate in isolation and I could replicate this problem with both. I could also 'fix' the issue with both as I previously described.

seerge commented
  1. I don't think it's on driver level (as all this commands also work in linux where is no driver at all) :) Driver is just a proxy-layer between bios and user / app.

  2. I can add this "workaround", but I need to know if it's specific to all models like yours ... or is it only you? 🗡️

  3. In a topic next door #287 I have explained that bios sets fan based on it's own (quite specific) temp sensor (which is different from what Nvidia GPU driver shows). Can you check build from that topic where app shows 2 temps (driver + bios) and see if second temp is not suddenly 0 in your case?

After skimming over previous reported issues with the keywords 'Fan' & 'GPU' I found two similar reports. Issues #49 and #114, both of those reports were also on a G15 2022 with Nvidia GPUs. I see three users were involved, maybe we could ping/tag them into this issue to see if they can replicate the error following my steps?

I checked the build from that issue but it always reported -655536°C temperature no matter what I did.
image

seerge commented

@zelfrort , ok , so looks like your laptop's GPU sensor is absent or broken? That could explain why your fans refuse to spin properly. Does it make sense to try to do a cmos reset (by holding power button for 40 seconds) mb? :)

seerge commented

GHelper.zip

You can check this build, it will do your tihng with eco -> standard every time app stars / wakes up and sees more than 1 display connected for G15

seerge commented

I have added your workaround as an optional feature in build 0.56
Cause it's very specific, it's not a setting in a UI but rather an extra optional line in config explained in readme https://github.com/seerge/g-helper/blob/main/docs/README.md#workaround-for-bugged-bios-on-g15

Hi there.

I am using G15 (2022) 503RM and had the exact same issue.

I checked the logs in G-helper to report it to bugporting, but there was no record in the logs, so I couldn't report it.

So, I'm back to using armory craft.

In my case, the fan on my dGPU was not working even when I was not using an external monitor.

It's been about 2 months since I bought the laptop and I've had it checked by a service center, so I don't think it's a laptop issue.

If you has any information on my laptop, please let me know. I am using the latest bios (313).

Thank you

Hi, I am using the same laptop as the user above and can confirm I am also having this issue. A custom fan curve isn't enough for me to go back to armoury crate but currently my fans are on at 50 degrees on the eco powermode.

I am not sure how to check the logs so I cannot confirm if the drivers are contacting the bios.

I have the same problem. I've tried adding an extra line in config, it worked once, but after I disconnected one of the displays it stopped working, and for some reason disappeared from the config file. I've tried to do it again, but it keeps disappearing from the file. The only workaround is to select an Eco mode for GPU and then back to standard. Seems working for now.
I was so happy to find your program, it's a total life saver! Especially when custom curves are working! Thank you so much for it!

seerge commented

@attakuart can you post your config with added extra setting?

I have added your workaround as an optional feature in build 0.56 Cause it's very specific, it's not a setting in a UI but rather an extra optional line in config explained in readme https://github.com/seerge/g-helper/blob/main/docs/README.md#workaround-for-bugged-bios-on-g15

Hi @seerge, I got around to doing this and after restarting the GHelper application I unfortunately still seem unable to apply custom fan curves. Am I misinterpreting the post and its telling me that I have to connect an external monitor to set custom fan curves?

seerge commented

@Knox623 for topic starter bios was bugging only for case when he had external monitor connected.
So what app does:

Every time it's started / being woken up - it checks if a) number of screns > 1 AND that special line in config exists AND dGPU is ON -> restarts dGPU. That's what was asked, so i have added it :)

@seerge I see thanks for clearing that up. In that case then I seem to still have the same issue of the fan curves not being applied correctly. For example, if I turned on the custom fan curves now it would spin up the fans even though I am below the temperature i've set it to.

seerge commented

@Knox623 not "applied" ? or justs bios doesn't follow it exactly? :) What happens if you set that same fan curves in AC?

@seerge When I set the desired fan curve on AC it works.
image
60 degrees no fan.

seerge commented

@Knox623 please include full screenshot with fan curve + logs and config from g-helper, as i don’t have telepathy skills

@seerge Sorry but you only asked if the fan curve worked in AC, nothing else.
image
image
config.txt
log.txt

seerge commented

@Knox623 in your case curve in g-helper is different from armory's :)
try to set the same - or at least have 1 or 2 points far on left on OFF level

Screenshot 2023-05-13 172145
MrxSiN commented

0.94. This bug still present.
Here how i got it.
Im on booting laptop in eco mode. Plug charger, change to standard and connect to monitor with type c.
Untick custom fan will spin the fan, but once tick the checkbox the fan slow down eventually not spinning.

seerge commented

@MrxSiN cause it's a bug in bios not in the app :) how does it work when you set exactly same setting in AC?

MrxSiN commented

Currently doesnt have AC installed but, if i remember correctly, it indeed happen too with AC. The only way to fix it is with a reboot.

seerge commented

@zelfrort hey, i was wondering if you still use this as a "solution" ? :)

help, cpu agressive
image

MrxSiN commented

Need more context. What’s the problem you trying to explain?

Did anyone find a solution to this yet? The only thing that works as Zelfrort mentioned, was switching to eco and back to standard. But I can't remember to do that all the time and it does take a few seconds to switch each time.