From 8ab1f1fc819e0461c6879fb346572854c6cc0b74 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Tue, 5 Mar 2024 00:08:46 +0100 Subject: [PATCH] Workaround for bugged BIOS on G14 2024 --- app/AppConfig.cs | 7 +++++- app/AsusACPI.cs | 11 ++++++++-- app/Mode/ModeControl.cs | 47 +++++++++++++++++++++++------------------ app/global.json | 2 +- 4 files changed, 42 insertions(+), 25 deletions(-) diff --git a/app/AppConfig.cs b/app/AppConfig.cs index eea9ea08..6a535827 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -522,9 +522,14 @@ public static class AppConfig } } + public static bool IsResetRequired() + { + return ContainsModel("GA403"); + } + public static bool IsFanRequired() { - return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P"); + return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA403"); } public static bool IsPowerRequired() diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index 0aca9fbd..d77dfd66 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -421,9 +421,16 @@ public class AsusACPI { return null; } - - } + + + public int SetVivoMode(int mode) + { + if (mode == 1) mode = 2; + else if (mode == 2) mode = 1; + return Program.acpi.DeviceSet(VivoBookMode, mode, "VivoMode"); + } + public int SetGPUEco(int eco) { int ecoFlag = DeviceGet(GPUEco); diff --git a/app/Mode/ModeControl.cs b/app/Mode/ModeControl.cs index 913a2685..2fdf2ba4 100644 --- a/app/Mode/ModeControl.cs +++ b/app/Mode/ModeControl.cs @@ -62,39 +62,44 @@ namespace GHelper.Mode if (!Modes.Exists(mode)) mode = 0; - customFans = false; - customPower = 0; - settings.ShowMode(mode); - SetModeLabel(); Modes.SetCurrent(mode); - int status = Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode"); - // Vivobook fallback - if (status != 1) + Task.Run(async () => { - int vivoMode = Modes.GetBase(mode); - if (vivoMode == 1) vivoMode = 2; - else if (vivoMode == 2) vivoMode = 1; - Program.acpi.DeviceSet(AsusACPI.VivoBookMode, vivoMode, "VivoMode"); - } + bool reset = AppConfig.IsResetRequired() && (Modes.GetBase(oldMode) == Modes.GetBase(mode)) && customPower > 0; + + customFans = false; + customPower = 0; + SetModeLabel(); + + // Workaround for not properly resetting limits on G14 2024 + if (reset) + { + Program.acpi.DeviceSet(AsusACPI.PerformanceMode, (Modes.GetBase(oldMode) != 1) ? AsusACPI.PerformanceTurbo : AsusACPI.PerformanceBalanced, "Reset"); + await Task.Delay(TimeSpan.FromMilliseconds(1500)); + } + + int status = Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode"); + // Vivobook fallback + if (status != 1) Program.acpi.SetVivoMode(Modes.GetBase(mode)); + + AutoFans(); + await Task.Delay(TimeSpan.FromMilliseconds(1000)); + AutoPower(); + + + SetGPUClocks(); + }); + if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected()) XGM.Reset(); if (notify) Program.toast.RunToast(Modes.GetCurrentName(), SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online ? ToastIcon.Charger : ToastIcon.Battery); - SetGPUClocks(); - - Task.Run(async () => - { - await Task.Delay(TimeSpan.FromMilliseconds(100)); - AutoFans(); - await Task.Delay(TimeSpan.FromMilliseconds(1000)); - AutoPower(); - }); // Power plan from config or defaulting to balanced diff --git a/app/global.json b/app/global.json index fb34cf6b..cb00d84f 100644 --- a/app/global.json +++ b/app/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "7.0.400" + "version": "7.0.406" } } \ No newline at end of file