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://seerge.github.io/g-helper/
GNU General Public License v3.0
7.42k stars 266 forks source link

Custom fan curves are rejected by Asus BIOS. ASUS ROG Strix G531GU #1206

Closed NooB9496 closed 1 year ago

NooB9496 commented 1 year ago

Describe the bug Custom fan curves are rejected by Asus BIOS. I can't set custom fan curves.

Expected behavior Can You please fix this? I want to use custom fan curves for games.

App Logs log.txt

Screenshots or screencasts ghelper

Desktop (please complete the following information):

Asus software

seerge commented 1 year ago

@NooB9496 hello,

I assume you didn’t had a custom fan curves in Armory as well? If so - they are simply not supported by your device

NooB9496 commented 1 year ago

@NooB9496 hello,

I assume you didn’t had a custom fan curves in Armory as well? If so - they are simply not supported by your device

In Armory Crate i have custom fan curves and works perfectly.

seerge commented 1 year ago

@NooB9496 try to set a curve exactly same as you have in AC (and posted screenshots here of ac one and one in g-helper)

Does it make any difference?

NooB9496 commented 1 year ago

@NooB9496 hello, I assume you didn’t had a custom fan curves in Armory as well? If so - they are simply not supported by your device

In Armory Crate i have custom fan curves and works perfectly.

armory

NooB9496 commented 1 year ago

ghelper1 Still don't works.

seerge commented 1 year ago

@NooB9496 well, it doesn’t look like a fan curve :) So no wonder that it doesn’t work in G-Helper.

i can only imagine that there is some other endpoint for a very old devices like yours that can set a minimum and maximum setting for a fan

If you want you can check this topic on how to discover endpoints https://github.com/seerge/g-helper/issues/38

Fan editor won’t work for you as is

NooB9496 commented 1 year ago

@NooB9496 well, it doesn’t look like a fan curve :) So no wonder that it doesn’t work in G-Helper.

i can only imagine that there is some other endpoint for a very old devices like yours that can set a minimum and maximum setting for a fan

If you want you can check this topic on how to discover endpoints #38

Fan editor won’t work for you as is

I will try. Also i will check games with G-Helper Turbo Mode, maybe is enough and temps will be good.

seerge commented 1 year ago

@NooB9496 default fan behaviour will be exactly same as for all 3 modes in armory. It’s baked in bios

seerge commented 1 year ago

@NooB9496

110013 / 14 is just a fan speed readings :) that's what you see in g-helper already

Try to do a second method from #38 (i.e DSL dump), it sheds more light on what each endpoint does (at least approximately)

I see 2 "suspicious" endpoints, that could be max fan speeds for your case

110022 : ff (255)
110023 : ff (255)

You can even try to "test" them by running following in PowerShell as admin, where 255 is desired setting (in a range between 0 and 255)

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,255)
(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110023,255)
NooB9496 commented 1 year ago

@NooB9496 and try to do a second method from #38 (i.e DSL dump), it sheds more light on what each endpoint does (at least approximately)

This values are changed:

Turbo Mode 110013 : 21 (33) 110014 : 1f (31)

Balance Mode: 110013 : 19 (25) 110014 : 19 (25)

Silent Mode: 110013 : 0 (0) 110014 : 0 (0)

NooB9496 commented 1 year ago

@NooB9496

110013 / 14 is just a fan speed readings :) that's what you see in g-helper already

Try to do a second method from #38 (i.e DSL dump), it sheds more light on what each endpoint does (at least approximately)

I see 2 "suspicious" endpoints, that could be max fan speeds for your case

110022 : ff (255)
110023 : ff (255)

You can even try to "test" them by running following in PowerShell as admin, where 255 is desired setting (in a range between 0 and 255)

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,255)
(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110023,255)

Yep this works, fans works on 97% speed.

seerge commented 1 year ago

@NooB9496 but on your AC screenshot sliders have 2 edges, do they both work ? cause if this is minimum speed setting - what is maximum? :)

And does AC allow setting CPU and GPU fan's separately ? or it's same values for both ?

NooB9496 commented 1 year ago

@NooB9496 but on your AC screenshot sliders have 2 edges, do they both work ? cause if this is minimum speed setting - what is maximum? :)

And does AC allow setting CPU and GPU fan's separately ? or it's same values for both ?

Both sliders works, in AC i can manually change fan speed for CPU and GPU. Max RPM is 5400.

seerge commented 1 year ago

@NooB9496 then it should be 4 separate parameters (2 for CPU + 2 for GPU)

Does 022 work specifically for CPU and 023 for GPU ?

If so - try to set

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x0F)

and

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0xFF)

it could be that first half of number is min speed, and second is max. therefore in first case - your CPU fan will be set to 0 - 100% (i.e. will work normally) and in second case - will be locked at max (i.e. 100% - 100%)

NooB9496 commented 1 year ago

PS C:\Windows\system32> (Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x0F

At line:1 char:80

  • ... ject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x0F
  • ~ Missing ')' in method call.
  • CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
  • FullyQualifiedErrorId : MissingEndParenthesisInMethodCall

PS C:\Windows\system32> (Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0xFF)

GENUS : 2 CLASS : PARAMETERS SUPERCLASS : DYNASTY : PARAMETERS RELPATH : PROPERTY_COUNT : 1 DERIVATION : {} SERVER : NAMESPACE : PATH : result : 1 PSComputerName :

PS C:\Windows\system32>

CPU fan works on 97%, GPU fan 0%. After using second command.

seerge commented 1 year ago

@NooB9496 you didn't copy-paste first correctly. They both should affect CPU

NooB9496 commented 1 year ago

Now after using first command CPU fan use 7% but I can't hear him, he's not turning.

seerge commented 1 year ago

@NooB9496 well, may be it just runs slow :) so it seem to work

Try (Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x7F)

I can imagine fan will run somewhere in the middle (like 50-60%)

NooB9496 commented 1 year ago

@NooB9496 but on your AC screenshot sliders have 2 edges, do they both work ? cause if this is minimum speed setting - what is maximum? :) And does AC allow setting CPU and GPU fan's separately ? or it's same values for both ?

Both sliders works, in AC i can manually change fan speed for CPU and GPU. Max RPM is 5400.

My bad, only CPU fan works. GPU fan 0%.

NooB9496 commented 1 year ago

@NooB9496 but on your AC screenshot sliders have 2 edges, do they both work ? cause if this is minimum speed setting - what is maximum? :) And does AC allow setting CPU and GPU fan's separately ? or it's same values for both ?

Both sliders works, in AC i can manually change fan speed for CPU and GPU. Max RPM is 5400.

My bad, only CPU fan works. GPU fan 0%.

Ah, sorry, both works.

NooB9496 commented 1 year ago

@NooB9496 well, may be it just runs slow :) so it seem to work

Try (Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x7F)

I can imagine fan will run somewhere in the middle (like 50-60%)

CPU fan 57%

seerge commented 1 year ago

@NooB9496 does

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x7F)

Make CPU fan run between 50% and 100% only ?

NooB9496 commented 1 year ago

@NooB9496 does

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x7F)

Make CPU fan run between 50% and 100% only ?

Only 57%, don't goes up.

seerge commented 1 year ago

@NooB9496 well, it will go up if your temp goes up i assume :)

NooB9496 commented 1 year ago

@NooB9496 well, it will go up if your temp goes up i assume :)

unfortunately no, I loaded the processor, the temperature increased but the fan speed didnt.

seerge commented 1 year ago

@NooB9496 then 22 and 23 are just minimum fan speeds, and we need endpoint for maximum as well :) try to do a DSL dump, mb it will be more clear from there

NooB9496 commented 1 year ago

DSL dump?

seerge commented 1 year ago

@NooB9496 yes, as I have asked. Method 2 from https://github.com/seerge/g-helper/issues/38

seerge commented 1 year ago

@NooB9496 or actually, try following command

may be it's just 2 bytes, first minimum, second - maximum. It should set fan range to 50 - 100

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x7FFF)
NooB9496 commented 1 year ago

@NooB9496 yes, as I have asked. Method 2 from #38

site frome method 2 don't work for me

NooB9496 commented 1 year ago

@NooB9496 or actually, try following command

may be it's just 2 bytes, first minimum, second - maximum. It should set fan range to 50 - 100

(Get-WmiObject -Namespace Root/WMI -Class AsusAtkWmi_WMNB).DEVS(0x00110022,0x7FFF)

CPU fan 95%

seerge commented 1 year ago

@NooB9496 https://www.intel.com/content/www/us/en/download/774881/acpi-component-architecture-downloads-windows-binary-tools.html

NooB9496 commented 1 year ago

@NooB9496 https://www.intel.com/content/www/us/en/download/774881/acpi-component-architecture-downloads-windows-binary-tools.html

i have dsdt file, upload it here? Does it contain sensitive data?

seerge commented 1 year ago

@NooB9496

CPU fan 95%

On what temps ?

Try this build : there is no slider , but it will use first curve point as min value, and last - as max value. And set range using my 2 byte assumption.

GHelper.zip

DSDT doesn't contain any "sensitive" data ...

NooB9496 commented 1 year ago

@NooB9496

CPU fan 95%

On what temps ?

Try this build : there is no slider , but it will use first curve point as min value, and last - as max value. And set range using my 2 byte assumption.

GHelper.zip

dsdt.zip

DSDT doesn't contain any "sensitive" data ...

regardless of the temperature, it always works at 95% of the speed

seerge commented 1 year ago

@NooB9496 try the build i have linked.

I have just checked, and even my G14 2022 has this 022 / 023 endpoints (but make no sense, cause laptop supports normal fan curves). But I was able to test ranges and they actually work.

NooB9496 commented 1 year ago

@NooB9496 try the build i have linked

it works, awesome ghelper2

seerge commented 1 year ago

@NooB9496 can you try something more "normal" like 50% to 100% ? (btw Y-axis in RPM most probably won't be accurate, as it's calibrated for normal fan curves for other devices, and there whole logic is a bit different)

NooB9496 commented 1 year ago

@NooB9496 can you try something more "normal" like 50% to 100% ? (btw Y-axis in RPM most probably won't be accurate, as it's calibrated for normal fan curves for other devices, and there whole logic is a bit different)

Works ghelper3

seerge commented 1 year ago

@NooB9496 good, then I consider this as "completed" :) and will include this fallback approach in next release.

Thanks for checking

NooB9496 commented 1 year ago

@NooB9496 good, then I consider this as "completed" :) and will include this fallback approach in next release.

Thanks for checking

Thank You, Awesome job.

ev-i commented 1 year ago

Confirming. ASUS TUF 15 (2021) FX516PR with versions before 1.117 was unable to set custom curve with message "Custom fan curves are rejected by Asus BIOS" Not it works properly.

seerge commented 1 year ago

@ev-i good to know, but keep in mind that it's pretty much same as on @NooB9496 screenshot from armoury, i.e. you can just set min / max RPM for the fan (i.e. the range), actual temperature points won't be accurate for you :)

khtpro commented 1 year ago

i own tuf 2021 too but still didnt fix the fan curve :(

model FX506HC

seerge commented 1 year ago

@khtpro it means your device doesn't support that at all. There is nothing to "fix" here .

cybercrimeworld commented 7 months ago

@seerge Why some device does not support custom fan curve.

cybercrimeworld commented 7 months ago

@seerge In you're code can you tell me how the fan is rotate and determine its speed and changes it's rpm. How this decision are happened. Please tell me the section only on you're code