Modern fork of s-h-a-d-o-w/alfc — rewritten on Bun with native platform bindings, a KDE Plasma 6 widget, and cross-platform service management. Original work by Andreas Opferkuch.
Please note that if you're using Windows 10 and a CPU other than the i7-10875H, you would have to look up and set the PL1 and PL2 values in order not to possibly limit the performance of your CPU - e.g. tech powerup database. (alfc will attempt to set those levels whenever it starts or you change them, using Intel XTU on Windows 10 and constraint_0_power_limit_uw and constraint_1_power_limit_uw on Linux. Windows 11 forbids using Intel XTU, at least for this. As far as I'm aware, there's no danger to setting those values too high, since CPUs won't consume more than a certain maximum, regardless of these values. On the other hand, throttling due to low values is possible!)
Gigabyte-Aorus-Battery-Manager (Windows only - charging threshold control tool)
| Model | Fan control | CPU limits tweaking | GPU boost |
|---|---|---|---|
| Aorus 15G | W10, W11, Linux | W10, Linux | W10, W11, Linux |
| Aorus 15G XC | W10, Linux | W10, Linux | |
| Aorus 15P XD | W10 | W10 | |
| Aorus 15 FSB | W11 | ||
| Aorus 5 SE4 | W11 | ||
| Aero 15 SA | W10, W11, Linux |
Please submit a PR, an issue or send me an e-mail if you can confirm something that's not yet in the table.
GPU boost is likely to not work on models other than the 15G though because the way that is controlled is highly model-dependent.
- Web interface available @
http://localhost:5522 - Ramping up and down doesn't happen immediately, to prevent frequent fluctuations. (Ramping up happens quite quickly while ramping down requires the temperature to be lower for a while.)
- Fans are controlled as if they were one (since most heat pipes are shared). And so whatever is the higher target fan speed gets applied.
- Config is stored in
alfc.config.json. If you prefer not to use the UI, you can edit this and restart the service to apply your changes. - Uses about
0.4%CPU and500 mWpackage power. (Measured in Windows at idle using hwinfo.)
See HERE.
If you want to use this to reduce noise, ensure that "USB Selective Suspend" is always enabled in your power plan! Having it disabled can cause significant CPU power consumption and thus drive temperatures up.
- Download the latest release and extract it to wherever you want to run it.
- Run
install.bat. It takes about 20 seconds, the installer is not frozen. 😉 (In case you need to allow firewall access, you might find it interesting to know that the UI only responds to requests from your local machine.)
You can also simply run run.bat from an admin command prompt to run the fan
control temporarily or to try it out before installing it as a service.
Once you either uninstall the tool or quit after running it using run.bat, it
is recommended to reboot your machine to ensure that control is handed back to
either BIOS or Gigabyte's Control Center.
On Windows, there is a service.log file in the alfc root directory that might contain useful information.
If that is something you're interested in, you need to do this:
- Install Intel XTU
- Extract the Control Center installer and copy
acpimof.dlltoC:\Windows\SysWOW64, create a string value in the Registy atComputer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WmiAcpicalledMofImagePaththat containsC:\Windows\SysWOW64\acpimof.dlland reboot. (For more on this, see here)
If you want to keep using the color profiles:
- Extract the Control Center installer and install the ICM file for the color temperature you
want yourself. Unfortunately, I don't remember how I figured out the model name of the panel in the Aorus 15G (
color\P75\SHP14C5).
Requires Bun 1.3.9+.
sudo bun run start — Frontend at :3000, server at :5522.
In the direction frontend -> server, arguments are not provided as hex strings, since WMI uses named arguments and it is easier to strip this info and convert to a hex string for Linux.
- Lint:
bun run lint— ESLint with TypeScript, React, Prettier integration.no-explicit-anywarns,no-unreachableerrors. - Type-check:
bun run type-check— Strict TypeScript withnoUncheckedIndexedAccessenabled. - Test:
bun run test— Vitest (28 tests across server + frontend). - Full check:
bun run all-checks— Runs lint, type-check, test, and build in sequence. - Pre-commit: Husky + lint-staged runs ESLint, type-check, and Prettier on staged files.
Contributions welcome, as always. 🙂
- Using RGB lighting to highlight caps/num lock. There's something here for the Gigabyte Aero that could potentially be reused. (This should actually probably be a separate tool, like the Gigabyte-Aorus-Battery-Manager.)
- Publish plasmoid to KDE Store for discoverability in KDE Discover.
- Publish AUR package — PKGBUILD ready in
aur/, needs first release tag to submit.
