Skip to content

daeora/apge-control

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

APGe-Control

A small Windows app that gives back fan, power, and overclocking control on Acer Predator Orion 5000 (PO5-650) desktops after Acer discontinued PredatorSense for them.

It talks directly to the AcerGamingFunction WMI provider — the same firmware interface PredatorSense's backend service used — and adds Windows power-plan presets on top. The goal is to cover both directions of tuning:

  • Tune down for stability and heat (caps for Raptor Lake's known voltage-step issues, fan-mode boosts when something is loud)
  • Tune up for performance (named OC profile switching on chips where Acer left the firmware unlocked — work in progress)

Status: fan-mode set is wired against verified WMI signatures and the byte-perfect encoding extracted from PredatorSense.exe. Live sensor readout (CPU/GPU temp, fan RPM) is not implemented yet — the input-word encoding for GetGamingSysInfo isn't known and we don't probe blindly (a prior probe crashed the target machine). See Roadmap.


⚠️ Disclaimer

Not affiliated with Acer. Not endorsed by Acer. "Predator" and "PredatorSense" are trademarks of Acer Inc.

This tool invokes WMI methods that live in your machine's BIOS firmware. Those methods are intended to be called only by Acer's own software; the parameters here come from reverse-engineering of the PredatorSense binary plus a live discovery dump on a real PO5-650. You run it at your own risk. It's been tested on one specific BIOS revision (R01-B3); other revisions may accept different encodings or reject these calls outright.

If anything goes sideways, click Auto (the safest fan mode) or apply the Default power preset to revert.


Features

  • Fan mode: Auto / Max / Custom (0–100%) — same three modes PredatorSense exposed.
  • CPU power presets (one-click combined boost + max-frequency):
    • Cool — boost off (clock floors ~1.7 GHz). Slow but bulletproof.
    • Safe Gaming — boost Efficient-Enabled, freq capped at 3800 MHz. Stays below the Raptor Lake V/F voltage step around 4.1 GHz.
    • Default — boost Aggressive, no cap. Stock Windows behavior.
  • Manual power tuning — boost mode (Off/Standard/Aggressive) and max CPU frequency slider (1000–5500 MHz), if you want to dial in your own values.
  • CPU OC probe (read-only) — manual Detect button that asks the firmware whether OC is unlocked on your BIOS, and which profile is currently active. Profile switching is planned for a follow-up release (see Roadmap).
  • Tray icon with current mode letter (A / M / C) and right-click quick-switch menu.
  • No installer, no kernel driver, no Acer software required. The WMI provider lives in the BIOS ACPI tables and works even with all Acer drivers/services uninstalled.

Screenshots

Main window

Placeholder screenshot taken on a non-Acer dev machine — shows the layout but the status dot is red ("No Acer WMI provider") and sensor tiles are blank. The current build also adds three quick-preset buttons at the top of the CPU POWER panel (Cool / Safe Gaming / Default). Will be replaced with a real PO5-650 capture after live testing.

Compatibility

Status System Notes
✅ Tested Acer Predator Orion 5000 PO5-650, BIOS R01-B3 The development target.
🤞 Probable Other PO5 desktops (PO5-640, PO5-615S) Share the same AcerGamingFunction shape per Acer's per-model INI configs, but the exact fan mode encoding has only been validated on PO5-650.
❌ Won't work Laptops (PH16-71, Helios, Nitro, …) Different fan-group encoding. Use Linuwu-Sense instead.
❓ Unknown Non-Acer machines The app will refuse to act and show a red "No Acer WMI provider" status.

Requirements:

  • Windows 10 or Windows 11 (x64)
  • Administrator privileges (WMI provider methods require it)
  • .NET 8 runtime is NOT required — release builds are self-contained.

Quick start

  1. Download the latest APGe-Control.exe from Releases.
  2. Right-click → Run as administrator.
  3. The header should show a green dot and your machine name. If it shows red, see Troubleshooting.
  4. Recommended first-touch sequence:
    • Apply the Cool power preset (totally safe — only touches the Windows power plan, no firmware calls).
    • Click the Auto fan-mode button. Fans should adjust within ~3 seconds.
    • Then try Max, then Custom @ 50%, then back to Auto.

Closing the window leaves the app running in the tray. Right-click the tray icon for quick mode-switching; "Exit" actually quits.

How it works

Fan mode

The app calls AcerGamingFunction.SetGamingSysConfig(UInt64 input) twice per mode change — once for each fan group — with a packed 64-bit payload:

HH HH HH HH MM SS SS 04
│           │           │
│           │           └─ fan subsystem ID (0x04, constant)
│           └────────────── mode byte (0xFF=Auto, 0xFD=Max, else=speed %)
└────────────────────────── fan group (0x100=front, 0x200=rear)

Concrete examples:

Auto, group 1:    0x100FF000004
Auto, group 2:    0x200FF000004
Max, group 1:     0x100FD000004
Custom 70%, g.1:  0x10046000004     (0x46 = 70 decimal)

See FanModeEncoding.cs for the implementation. Encoding is byte-perfect against the values embedded in PredatorSense's own binary.

CPU power plan

Pure powercfg.exe wrappers — no kernel-level voodoo. The app shells out to:

  • powercfg /attributes SUB_PROCESSOR <setting-guid> -ATTRIB_HIDE (unhides hidden settings, idempotent)
  • powercfg /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR <setting-guid> <value>
  • powercfg /getactivescheme + powercfg /setactive <guid> (to make the change take effect)

Two GUIDs are touched: be337238-0d82-4146-a960-4f3749d470c7 (PERFBOOSTMODE) and 75b0ae3f-bce0-45a7-8c89-c9611c25e100 (maximum processor frequency). Both standard Windows settings; nothing Acer-specific.

Why no driver?

The WMI provider is firmware-resident — instance path ACPI\PNP0C14\APGe_0, where PNP0C14 is the ACPI standard "WMI device". It works even when AcerHID.sys, AcerWmiDeviceProvider.sys, and PredatorSenseService are all absent (which is exactly the state on a machine where PredatorSense was uninstalled or never ran). That's a big deal: it means we don't have to convince anyone to reinstall partially- broken Acer software.

Build from source

Requires .NET 8 SDK. global.json pins it to 8.0.421.

git clone https://github.com/<you>/apge-control.git
cd apge-control
dotnet build APGeControl.sln -c Debug

# Run the WPF app (needs admin):
dotnet run --project src\APGeControl.App

# Or the CLI diagnostic (also needs admin for full output):
dotnet run --project src\APGeControl.Discovery

# Publish a single-file self-contained release exe:
dotnet publish src\APGeControl.App -c Release -r win-x64 `
  --self-contained true -p:PublishSingleFile=true `
  -o publish\APGe-Control

Troubleshooting

Red dot, "No Acer WMI provider on this machine"

The root\WMI:AcerGamingFunction class wasn't found. Run the discovery script and look at the output:

Unblock-File .\scripts\discover-predator-wmi.ps1
Set-ExecutionPolicy -Scope Process Bypass -Force
.\scripts\discover-predator-wmi.ps1

It produces predator-wmi-dump.txt. If your machine doesn't list AcerGamingFunction under any namespace, the firmware doesn't expose this provider — either you're not on a supported Predator model, or your BIOS is too old/new.

Yellow dot, "WMI surface partial"

The class exists but doesn't look quite right. Open an issue with the dump output attached.

Fan-mode click does nothing visible

Check the status text at the top of the app. If it says "Set X rejected by provider", the WMI method returned a non-zero status — likely a slightly different encoding is needed for your BIOS revision. Open an issue with the status text + your BIOS version.

Boost-mode change had no effect

Some power schemes ignore PERFBOOSTMODE. Try switching to the Balanced power plan first (in Windows Settings → Power), then apply the preset.

Roadmap

Things known to work and exposed by the app:

  • ✅ Fan mode (Auto / Max / Custom 0–100%)
  • ✅ CPU boost mode + max frequency
  • ✅ Combined power presets

Things known to exist in the WMI surface but not wired up (yet):

  • Live sensor read (GetGamingSysInfo) — needs the per-sensor UInt32 input word, which we don't have. Safest path is to capture PredatorSense's pipe traffic on a working machine.
  • RGB lighting (SetGamingLedBehavior / SetGamingRgbSetting). PO5-650 only has a motherboard LED zone per Feature.ini, so this would be limited.

CPU overclocking — active investigation, phased rollout:

The Set/Get/CapabilityCpuOverclockingProfile methods exist on every PO5/PO7/PO9 BIOS we've seen. Whether they actually accept writes depends on the SKU — Acer locks OC at the firmware level on some models (notably non-K Predator desktops) and leaves it open on others. We want to support both groups:

  • Phase 1 (shipping in v0.2.0): read-only "Detect" button in the UI. Probes GetCpuOverclockingCapability and GetCpuOverclockingProfile, surfaces the firmware's actual answer, and reports whether OC is unlocked on your specific BIOS. Doesn't write anything. Manual trigger only (no auto-probe — unknown method inputs warrant caution).
  • 🔬 Phase 2 (in development): named-profile switcher (Normal / Faster / Turbo) gated behind a confirmation dialog. Sends an empty OcData so the firmware applies its own validated tuning per slot — safer than writing custom bytes. Will ship as soon as we have test reports from a user on an OC-unlocked SKU showing the Set calls return success.
  • 🔬 Phase 3 (investigating): custom OcData writes. Would need someone to RE the 512-byte payload layout from PredatorSense's OC dialog. Higher risk; if it lands, it'll be behind an extra-loud "advanced" toggle.

PO5-650 note: Acer's per-SKU Feature.ini ships with Overclocking=0 for this model, so the Detect button will likely report "OC methods present but reads failed" — that's the firmware declining, not a bug. Other Predator owners with K-series CPUs or different SKUs may see a different result; if you do, please open an issue with your Detect output so we can prioritise Phase 2.

Deliberately out of scope:

  • ❌ BIOS configuration (AcerBiosConfigurationTool) — password-gated.
  • ❌ Laptop support — different fan-group encoding; see Linuwu-Sense.

Reverse-engineering credits and references

The fan-mode encoding and named-pipe architecture were derived from direct disassembly of PredatorSense.appxbundle. The WMI method signatures were confirmed against a live PO5-650 (BIOS R01-B3) via the included discovery script.

Prior art that shaped the design:

Contributing

PRs welcome. Especially valuable:

  • Test reports on other PO5 / PO3 desktop models (does the fan-mode encoding work on PO5-640? PO3-650?)
  • Captured PredatorSense pipe traffic showing the GetGamingSysInfo input values for individual sensors.
  • BIOS-version dumps if your machine reports a different AcerGamingFunction method set.

Run scripts\discover-predator-wmi.ps1 on your machine and attach the output to a GitHub issue with the title [model: PO5-XXX, BIOS: yyy].

License

MIT. See LICENSE.

About

Replacement for Predator-Sense that has been discontinued on many systems.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors