Compare commits

...

9 Commits

11 changed files with 178 additions and 53 deletions

View File

@@ -345,7 +345,7 @@ public static class AppConfig
public static bool IsSingleColor()
{
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13");
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU");
}
public static bool IsStrix()
@@ -355,7 +355,7 @@ public static class AppConfig
public static bool IsStrixLimitedRGB()
{
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513RS") || ContainsModel("G513RM") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G513QM") || ContainsModel("G713RC");
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G513QM") || ContainsModel("G713RC");
}
public static bool IsStrixNumpad()
@@ -386,7 +386,7 @@ public static class AppConfig
public static bool NoAutoUltimate()
{
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513");
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617");
}

View File

@@ -536,6 +536,7 @@ public class AsusACPI
public bool IsAllAmdPPT()
{
//return false;
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
}

View File

@@ -293,7 +293,7 @@ namespace GHelper
}
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB())
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB() || AppConfig.IsARCNM())
{
labelBacklightLid.Visible = false;
checkAwakeLid.Visible = false;

127
app/Fans.Designer.cs generated
View File

@@ -31,14 +31,14 @@ namespace GHelper
/// </summary>
private void InitializeComponent()
{
ChartArea chartArea1 = new ChartArea();
Title title1 = new Title();
ChartArea chartArea2 = new ChartArea();
Title title2 = new Title();
ChartArea chartArea3 = new ChartArea();
Title title3 = new Title();
ChartArea chartArea4 = new ChartArea();
Title title4 = new Title();
ChartArea chartArea17 = new ChartArea();
Title title17 = new Title();
ChartArea chartArea18 = new ChartArea();
Title title18 = new Title();
ChartArea chartArea19 = new ChartArea();
Title title19 = new Title();
ChartArea chartArea20 = new ChartArea();
Title title20 = new Title();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
panelFans = new Panel();
labelTip = new Label();
@@ -141,6 +141,10 @@ namespace GHelper
buttonAdvanced = new RButton();
buttonGPU = new RButton();
buttonCPU = new RButton();
panelA3 = new Panel();
labelA3 = new Label();
labelLeftA3 = new Label();
trackA3 = new TrackBar();
panelFans.SuspendLayout();
tableFanCharts.SuspendLayout();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
@@ -195,6 +199,8 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
panelNav.SuspendLayout();
tableNav.SuspendLayout();
panelA3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackA3).BeginInit();
SuspendLayout();
//
// panelFans
@@ -251,8 +257,8 @@ namespace GHelper
//
// chartGPU
//
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartArea17.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea17);
chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(12, 493);
chartGPU.Margin = new Padding(2, 10, 2, 10);
@@ -260,13 +266,13 @@ namespace GHelper
chartGPU.Size = new Size(782, 463);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
chartGPU.Titles.Add(title1);
title17.Name = "Title1";
chartGPU.Titles.Add(title17);
//
// chartCPU
//
chartArea2.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2);
chartArea18.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea18);
chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
@@ -274,13 +280,13 @@ namespace GHelper
chartCPU.Size = new Size(782, 463);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
chartCPU.Titles.Add(title2);
title18.Name = "Title1";
chartCPU.Titles.Add(title18);
//
// chartXGM
//
chartArea3.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea3);
chartArea19.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea19);
chartXGM.Dock = DockStyle.Fill;
chartXGM.Location = new Point(12, 1459);
chartXGM.Margin = new Padding(2, 10, 2, 10);
@@ -288,14 +294,14 @@ namespace GHelper
chartXGM.Size = new Size(782, 463);
chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM";
title3.Name = "Title4";
chartXGM.Titles.Add(title3);
title19.Name = "Title4";
chartXGM.Titles.Add(title19);
chartXGM.Visible = false;
//
// chartMid
//
chartArea4.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea4);
chartArea20.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea20);
chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(12, 976);
chartMid.Margin = new Padding(2, 10, 2, 10);
@@ -303,8 +309,8 @@ namespace GHelper
chartMid.Size = new Size(782, 463);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title4.Name = "Title3";
chartMid.Titles.Add(title4);
title20.Name = "Title3";
chartMid.Titles.Add(title20);
chartMid.Visible = false;
//
// panelTitleFans
@@ -523,7 +529,7 @@ namespace GHelper
panelAdvanced.Controls.Add(panelTemperature);
panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1520);
panelAdvanced.Location = new Point(10, 1644);
panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 888);
panelAdvanced.TabIndex = 14;
@@ -814,6 +820,7 @@ namespace GHelper
panelPower.Controls.Add(panelApplyPower);
panelPower.Controls.Add(panelB0);
panelPower.Controls.Add(panelC1);
panelPower.Controls.Add(panelA3);
panelPower.Controls.Add(panelA0);
panelPower.Controls.Add(panelTitleCPU);
panelPower.Controls.Add(panelBoost);
@@ -824,7 +831,7 @@ namespace GHelper
panelPower.Location = new Point(10, 764);
panelPower.Margin = new Padding(4);
panelPower.Name = "panelPower";
panelPower.Size = new Size(520, 756);
panelPower.Size = new Size(520, 880);
panelPower.TabIndex = 43;
//
// panelApplyPower
@@ -832,7 +839,7 @@ namespace GHelper
panelApplyPower.AutoSize = true;
panelApplyPower.Controls.Add(checkApplyPower);
panelApplyPower.Dock = DockStyle.Top;
panelApplyPower.Location = new Point(0, 680);
panelApplyPower.Location = new Point(0, 804);
panelApplyPower.Name = "panelApplyPower";
panelApplyPower.Padding = new Padding(15);
panelApplyPower.Size = new Size(520, 76);
@@ -859,7 +866,7 @@ namespace GHelper
panelB0.Controls.Add(labelLeftB0);
panelB0.Controls.Add(trackB0);
panelB0.Dock = DockStyle.Top;
panelB0.Location = new Point(0, 556);
panelB0.Location = new Point(0, 680);
panelB0.Margin = new Padding(4);
panelB0.MaximumSize = new Size(0, 124);
panelB0.Name = "panelB0";
@@ -908,7 +915,7 @@ namespace GHelper
panelC1.Controls.Add(labelLeftC1);
panelC1.Controls.Add(trackC1);
panelC1.Dock = DockStyle.Top;
panelC1.Location = new Point(0, 432);
panelC1.Location = new Point(0, 556);
panelC1.Margin = new Padding(4);
panelC1.MaximumSize = new Size(0, 124);
panelC1.Name = "panelC1";
@@ -972,7 +979,7 @@ namespace GHelper
labelA0.Name = "labelA0";
labelA0.Size = new Size(116, 32);
labelA0.TabIndex = 12;
labelA0.Text = "SPPT";
labelA0.Text = "SPL";
labelA0.TextAlign = ContentAlignment.TopRight;
//
// labelLeftA0
@@ -981,9 +988,9 @@ namespace GHelper
labelLeftA0.Location = new Point(10, 10);
labelLeftA0.Margin = new Padding(4, 0, 4, 0);
labelLeftA0.Name = "labelLeftA0";
labelLeftA0.Size = new Size(66, 32);
labelLeftA0.Size = new Size(51, 32);
labelLeftA0.TabIndex = 11;
labelLeftA0.Text = "SPPT";
labelLeftA0.Text = "SPL";
//
// trackA0
//
@@ -1527,6 +1534,55 @@ namespace GHelper
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonCPU.UseVisualStyleBackColor = false;
//
// panelA3
//
panelA3.AutoSize = true;
panelA3.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelA3.Controls.Add(labelA3);
panelA3.Controls.Add(labelLeftA3);
panelA3.Controls.Add(trackA3);
panelA3.Dock = DockStyle.Top;
panelA3.Location = new Point(0, 432);
panelA3.Margin = new Padding(4);
panelA3.MaximumSize = new Size(0, 124);
panelA3.Name = "panelA3";
panelA3.Size = new Size(520, 124);
panelA3.TabIndex = 51;
//
// labelA3
//
labelA3.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelA3.Location = new Point(396, 10);
labelA3.Margin = new Padding(4, 0, 4, 0);
labelA3.Name = "labelA3";
labelA3.Size = new Size(116, 32);
labelA3.TabIndex = 12;
labelA3.Text = "SPPT";
labelA3.TextAlign = ContentAlignment.TopRight;
//
// labelLeftA3
//
labelLeftA3.AutoSize = true;
labelLeftA3.Location = new Point(10, 10);
labelLeftA3.Margin = new Padding(4, 0, 4, 0);
labelLeftA3.Name = "labelLeftA3";
labelLeftA3.Size = new Size(66, 32);
labelLeftA3.TabIndex = 11;
labelLeftA3.Text = "SPPT";
//
// trackA3
//
trackA3.Location = new Point(6, 48);
trackA3.Margin = new Padding(4, 2, 4, 2);
trackA3.Maximum = 180;
trackA3.Minimum = 10;
trackA3.Name = "trackA3";
trackA3.Size = new Size(508, 90);
trackA3.TabIndex = 10;
trackA3.TickFrequency = 5;
trackA3.TickStyle = TickStyle.TopLeft;
trackA3.Value = 125;
//
// Fans
//
AutoScaleDimensions = new SizeF(192F, 192F);
@@ -1623,6 +1679,9 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
panelNav.ResumeLayout(false);
tableNav.ResumeLayout(false);
panelA3.ResumeLayout(false);
panelA3.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackA3).EndInit();
ResumeLayout(false);
PerformLayout();
}
@@ -1730,5 +1789,9 @@ namespace GHelper
private TrackBar trackGPUClockLimit;
private Label labelGPUClockLimitTitle;
private RButton buttonCalibrate;
private Panel panelA3;
private Label labelA3;
private Label labelLeftA3;
private TrackBar trackA3;
}
}

View File

@@ -106,6 +106,9 @@ namespace GHelper
trackA0.Maximum = AsusACPI.MaxTotal;
trackA0.Minimum = AsusACPI.MinTotal;
trackA3.Maximum = AsusACPI.MaxTotal;
trackA3.Minimum = AsusACPI.MinTotal;
trackB0.Maximum = AsusACPI.MaxCPU;
trackB0.Minimum = AsusACPI.MinCPU;
@@ -115,10 +118,12 @@ namespace GHelper
trackC1.Scroll += TrackPower_Scroll;
trackB0.Scroll += TrackPower_Scroll;
trackA0.Scroll += TrackPower_Scroll;
trackA3.Scroll += TrackPower_Scroll;
trackC1.MouseUp += TrackPower_MouseUp;
trackB0.MouseUp += TrackPower_MouseUp;
trackA0.MouseUp += TrackPower_MouseUp;
trackA3.MouseUp += TrackPower_MouseUp;
checkApplyFans.Click += CheckApplyFans_Click;
checkApplyPower.Click += CheckApplyPower_Click;
@@ -800,19 +805,28 @@ namespace GHelper
labelLeftA0.Text = "Platform (CPU + GPU)";
labelLeftB0.Text = "CPU";
panelC1.Visible = false;
panelA3.Visible = false;
}
else
{
if (RyzenControl.IsAMD())
labelLeftA0.Text = "CPU Slow (SPL + sPPT)";
{
labelLeftA0.Text = "CPU Sustained (SPL)";
labelLeftA3.Text = "CPU Slow (sPPT)";
labelLeftC1.Text = "CPU Fast (fPPT)";
panelC1.Visible = modeC1;
}
else
labelLeftA0.Text = "CPU (PL1 + PL2)";
{
labelLeftA0.Text = "CPU Slow (PL1)";
labelLeftA3.Text = "CPU Fast (PL2)";
panelC1.Visible = false;
}
labelLeftC1.Text = "CPU Fast (fPPT)";
panelC1.Visible = modeC1;
}
int limit_total;
int limit_slow;
int limit_cpu;
int limit_fast;
@@ -821,12 +835,14 @@ namespace GHelper
if (changed)
{
limit_total = trackA0.Value;
limit_slow = trackA3.Value;
limit_cpu = trackB0.Value;
limit_fast = trackC1.Value;
}
else
{
limit_total = AppConfig.GetMode("limit_total");
limit_slow = AppConfig.GetMode("limit_slow");
limit_cpu = AppConfig.GetMode("limit_cpu");
limit_fast = AppConfig.GetMode("limit_fast");
}
@@ -840,21 +856,28 @@ namespace GHelper
if (limit_cpu < AsusACPI.MinCPU) limit_cpu = AsusACPI.MinCPU;
if (limit_cpu > limit_total) limit_cpu = limit_total;
if (limit_slow < 0) limit_slow = limit_total;
if (limit_slow > AsusACPI.MaxTotal) limit_slow = AsusACPI.MaxTotal;
if (limit_slow < AsusACPI.MinTotal) limit_slow = AsusACPI.MinTotal;
if (limit_fast < 0) limit_fast = AsusACPI.DefaultTotal;
if (limit_fast > AsusACPI.MaxTotal) limit_fast = AsusACPI.MaxTotal;
if (limit_fast < AsusACPI.MinTotal) limit_fast = AsusACPI.MinTotal;
trackA0.Value = limit_total;
trackA3.Value = limit_slow;
trackB0.Value = limit_cpu;
trackC1.Value = limit_fast;
checkApplyPower.Checked = apply;
labelA0.Text = trackA0.Value.ToString() + "W";
labelA3.Text = trackA3.Value.ToString() + "W";
labelB0.Text = trackB0.Value.ToString() + "W";
labelC1.Text = trackC1.Value.ToString() + "W";
AppConfig.SetMode("limit_total", limit_total);
AppConfig.SetMode("limit_slow", limit_slow);
AppConfig.SetMode("limit_cpu", limit_cpu);
AppConfig.SetMode("limit_fast", limit_fast);

View File

@@ -15,7 +15,7 @@
<PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.137</AssemblyVersion>
<AssemblyVersion>0.138</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -26,6 +26,38 @@ namespace GHelper.Helpers
(color1.B + color2.B) / 2);
}
public static Color GetDominantColor(Bitmap bmp)
{
//Used for tally
int r = 0;
int g = 0;
int b = 0;
int total = 0;
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
Color clr = bmp.GetPixel(x, y);
r += clr.R;
g += clr.G;
b += clr.B;
total++;
}
}
//Calculate average
r /= total;
g /= total;
b /= total;
return Color.FromArgb(r, g, b);
}
public class HSV
{
public double Hue { get; set; }

View File

@@ -239,10 +239,15 @@ namespace GHelper.Mode
public void SetPower(bool launchAsAdmin = false)
{
bool allAMD = Program.acpi.IsAllAmdPPT();
int limit_total = AppConfig.GetMode("limit_total");
int limit_cpu = AppConfig.GetMode("limit_cpu");
int limit_slow = AppConfig.GetMode("limit_slow");
int limit_fast = AppConfig.GetMode("limit_fast");
if (limit_slow < 0 || allAMD) limit_slow = limit_total;
if (limit_total > AsusACPI.MaxTotal) return;
if (limit_total < AsusACPI.MinTotal) return;
@@ -252,11 +257,14 @@ namespace GHelper.Mode
if (limit_fast > AsusACPI.MaxTotal) return;
if (limit_fast < AsusACPI.MinTotal) return;
// SPL + SPPT togeher in one slider
if (limit_slow > AsusACPI.MaxTotal) return;
if (limit_slow < AsusACPI.MinTotal) return;
// SPL and SPPT
if (Program.acpi.DeviceGet(AsusACPI.PPT_TotalA0) >= 0)
{
Program.acpi.DeviceSet(AsusACPI.PPT_TotalA0, limit_total, "PowerLimit A0");
Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_total, "PowerLimit A3");
Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_slow, "PowerLimit A3");
customPower = limit_total;
}
else if (RyzenControl.IsAMD())

View File

@@ -39,9 +39,9 @@
"mode_base",
"mode_name",
"limit_total",
"limit_slow",
"limit_fast",
"limit_cpu",
"limit_total",
"fan_profile_cpu",
"fan_profile_gpu",
"fan_profile_mid",

View File

@@ -130,14 +130,13 @@ namespace GHelper.USB
timer.Elapsed += Timer_Elapsed;
isSingleColor = AppConfig.IsSingleColor(); // Mono Color
if (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N") || AppConfig.ContainsModel("GA503R"))
if (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N"))
{
var device = AsusHid.FindDevices(AsusHid.AURA_ID).FirstOrDefault();
if (device is null) return;
Logger.WriteLine($"USB Version: {device.ReleaseNumberBcd} {device.ReleaseNumber}");
if (device.ReleaseNumberBcd >= 22 && device.ReleaseNumberBcd <= 25) isSingleColor = true;
if (AppConfig.ContainsModel("GA503R") && device.ReleaseNumberBcd == 3) isSingleColor = true;
}
}
@@ -634,14 +633,13 @@ namespace GHelper.USB
bound.Y += bound.Height / 3;
bound.Height -= (int)Math.Round(bound.Height * (0.33f + 0.022f)); // cut 1/3 of the top screen + windows panel
Bitmap screen_low = screen_low = AmbientData.CamptureScreen(bound, 512, 288); //quality decreases greatly if it is less 512 ;
Bitmap screeb_pxl;
Bitmap screen_low = AmbientData.CamptureScreen(bound, 512, 288); //quality decreases greatly if it is less 512 ;
Bitmap screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar;
int zones = AURA_ZONES;
if (isStrix) // laptop with lightbar
{
screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar
var mid_left = ColorUtils.GetMidColor(screeb_pxl.GetPixel(0, 1), screeb_pxl.GetPixel(1, 1));
var mid_right = ColorUtils.GetMidColor(screeb_pxl.GetPixel(2, 1), screeb_pxl.GetPixel(3, 1));
@@ -656,12 +654,12 @@ namespace GHelper.USB
else
{
zones = 1;
screeb_pxl = AmbientData.ResizeImage(screen_low, 1, 1);
AmbientData.Colors[0].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(0, 0), (float)0.3);
AmbientData.Colors[0].RGB = ColorUtils.HSV.UpSaturation(ColorUtils.GetDominantColor(screeb_pxl), (float)0.3);
}
//screen_low.Save("big.jpg", ImageFormat.Jpeg);
//screeb_pxl.Save("small.jpg", ImageFormat.Jpeg);
//screeb_pxl.Save("test.jpg", ImageFormat.Jpeg);
screen_low.Dispose();
screeb_pxl.Dispose();

View File

@@ -97,7 +97,7 @@ Stop ``ArmouryCrateControlInterface`` service under windows Services app or you
#### Battery charge limiter is not working
It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in the Asus Services section (under Extra).
Please note: For some devices not every charge limit % may be working. Try to set standard **80%** to be sure.
Please note: For some devices not every charge limit % may be working. Some models support only 80% limit, so try to set standard **80%** to be sure.
#### I don't see GPU modes section
Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden