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
GetGamingSysInfoisn't known and we don't probe blindly (a prior probe crashed the target machine). See Roadmap.
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.
- 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.
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.
| 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.
- Download the latest
APGe-Control.exefrom Releases. - Right-click → Run as administrator.
- The header should show a green dot and your machine name. If it shows red, see Troubleshooting.
- 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.
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.
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.
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.
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-ControlRed 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.ps1It 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.
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 perFeature.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
GetCpuOverclockingCapabilityandGetCpuOverclockingProfile, 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
OcDataso 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
OcDatawrites. 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.iniships withOverclocking=0for 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.
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:
- Linuwu-Sense — Linux kernel module covering laptops. Inspired the named-pipe / WMI architecture analysis.
- Div-Acer-Manager-Fan-Controls — Avalonia GUI for Linux. UI design inspiration.
- FanControl.Acer-PO3-640 — direct EC register approach for the sibling PO3-640 model. We rejected that approach in favor of WMI-only (safer) but their work documented the per-fan layout.
- Notebookcheck: Alternatives to NitroSense / PredatorSense — context for why this needed to exist.
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
GetGamingSysInfoinput values for individual sensors. - BIOS-version dumps if your machine reports a different
AcerGamingFunctionmethod 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].
MIT. See LICENSE.
