AcerSense, NitroSense and PredatorSense for Linux
One daemon, app and CLI for operating modes, fans, battery, keyboard and sensors, showing only what your laptop's firmware offers.
Independent open-source project, not affiliated with Acer.
Features · Download · Screenshots · Tested models · Compared · GNOME · How it works · Build · License
Acer ships a different Windows-only app per product line. The laptops themselves share the same Acer WMI firmware interfaces (the ones the kernel's acer_wmi driver already uses across product lines), so acerctl covers all three with a single stack: each feature shows up only if the machine's firmware reports it, with no per-brand switch and no hard-coded model list. The app comes in three flavors built from the same code, differing only in name and colors; the installer picks one from the product name.
| App | Instead of | Laptops | Status | |
|---|---|---|---|---|
| Acer Control Center | AcerSense | Aspire, Swift, TravelMate, Extensa | ||
| Nitro Control Center | NitroSense | Nitro | ||
| Predator Control Center | PredatorSense | Predator |
Tip
Your model is not on the list? Run the read-only hardware report and open a Hardware report issue: that is all we need to start supporting it.
| ⚡ Operating modes Eco, Quiet, Balanced, Performance and Turbo, limited to the profiles the firmware supports, with the original app's AC/battery rules and in sync with the desktop's power mode. |
🌀 Fans CPU and GPU fans in auto, max or manual speed. |
| 📊 Monitor Temperatures, usage, clocks, power, fan speed, RAM and network, without waking the discrete GPU when it is powered off. |
🔋 Battery 80 % charge limit (the same switch as GNOME's), calibration, health, cycles, temperature, voltage and current. |
| ⌨️ Keyboard and USB Backlight auto-off timeout; charge USB devices while the laptop is off. |
🎮 Scenarios and App Sync Mode, fans and keyboard saved together and applied when a game or program starts (Wine/Proton too), then undone when it exits. |
| 🔘 Sense key The AcerSense/NitroSense/PredatorSense button opens the app or cycles the modes. |
🔁 Tray, CLI and restore State restored at boot and after suspend; a tray icon and the acerctl CLI next to the app. |
Latest: 0.1.9 (pre-release), ready-built packages for Fedora 44 (Workstation and the Atomic desktops: Silverblue, Kinoite, Bluefin) and Debian 13, Ubuntu 24.04 and 26.04. Pick your laptop's product line below: each one gets the app with its own name and colors, on top of the same daemon and kernel modules. The kernel modules are rebuilt for every new kernel (akmod on Fedora, DKMS on Debian/Ubuntu) and signed with the local key when Secure Boot needs it; the daemon starts by itself when the app or the tray first needs it.
Important
Run the commands on the host, not inside a toolbox or distrobox: there sudo only reaches the container.
Note
The .deb packages are new and so far tested in containers only. Another distribution? See Building from source.
install.sh downloads the release's packages, checks them against its SHA256SUMS and installs them with dnf, rpm-ostree or apt; --no-gui leaves out the app and the tray (the daemon, the CLI and the kernel modules only), and sh install.sh -n shows what it would do without changing anything. Then see After installing. To upgrade, run the same commands again (on Silverblue, Kinoite and Bluefin, then reboot once): it replaces an earlier version and an install made with the scripts.
Aspire, Swift, TravelMate, Extensa and the other non-gaming lines: Acer Control Center. Tested on the Aspire AG15-71P (charge limit, Sense key, app and tray).
Workstation, Silverblue, Kinoite, Bluefin
curl -fLO https://raw.githubusercontent.com/FnnDK/acerctl/main/packaging/install.sh
sudo sh install.sh --acerwget -nv -O install.sh https://raw.githubusercontent.com/FnnDK/acerctl/main/packaging/install.sh
sudo sh install.sh --acerNitro Control Center for the Nitro line. Tested on the Nitro ANV15-52 (modes, fans, sensors, keyboard, USB charging, battery, scenarios).
Workstation, Silverblue, Kinoite, Bluefin
curl -fLO https://raw.githubusercontent.com/FnnDK/acerctl/main/packaging/install.sh
sudo sh install.sh --nitrowget -nv -O install.sh https://raw.githubusercontent.com/FnnDK/acerctl/main/packaging/install.sh
sudo sh install.sh --nitroPredator Control Center for the Predator line. Not tested on a Predator yet: the features come from the firmware, and a hardware report from your machine helps a lot.
Workstation, Silverblue, Kinoite, Bluefin
curl -fLO https://raw.githubusercontent.com/FnnDK/acerctl/main/packaging/install.sh
sudo sh install.sh --predatorwget -nv -O install.sh https://raw.githubusercontent.com/FnnDK/acerctl/main/packaging/install.sh
sudo sh install.sh --predatorOpen the app: on its first start it lists what is still missing and applies it with one password and one restart. That is the acer_wmi option Nitro and Predator models need for operating modes and fans, and, with Secure Boot, enrolling the key that signs the kernel modules (akmods on Fedora, DKMS on Debian/Ubuntu). Without the app (install.sh --no-gui), acerctl setup lists the same steps and acerctl setup apply makes them. acerctl status shows what the daemon found and acerctl help lists the commands.
By hand, the acer_wmi option for the Nitro ANV15-52 is (/etc/modprobe.d/acer-wmi.conf, then reboot):
options acer_wmi predator_v4=1 force_caps=0x1C26
Warning
Before enabling platform-profile, check the tuned/power-profiles-daemon profile: Linux's performance mode maps to Acer's Turbo, which not every model has.
The kernel decides part of it: acer_wmi exposes the operating modes from Linux 6.9 and fan control from 6.19. The companion modules build from 5.15 on.
| Kernel | Operating modes | Fan control |
|---|---|---|
| Fedora 44, Ubuntu 26.04, Ubuntu 24.04 with the HWE kernel | ||
| Debian 13 (6.12) | ||
| Ubuntu 24.04 with its original kernel (6.8) |
To remove everything acerctl put on the machine, for example to try another tool: the packages (dnf, rpm-ostree, apt), an install made with the scripts and the ones under the project's earlier names (nitrod/nitroctl/nitro-tray, nitrosensed). Run it on the host, from the repository or downloaded on its own:
curl -LO https://raw.githubusercontent.com/FnnDK/acerctl/main/packaging/uninstall.sh
sudo sh uninstall.sh # keeps your settings (/var/lib/acerd, ~/.config/acerctl)
sudo sh uninstall.sh --purge # also removes them, the app data and /etc/modprobe.d/acerctl.confdnf and apt ask before removing the packages; on Silverblue, Kinoite and Bluefin they go with the next reboot. Inside a toolbox/distrobox shell sudo only reaches the container, so the script refuses to run there (use distrobox-host-exec sudo sh uninstall.sh). An acer_wmi option you wrote yourself in /etc/modprobe.d is left in place.
The app uses its own dark theme, with an integrated title bar that follows GNOME's button order and icons, and texts in Portuguese and English.
Nitro Control Center (the dashboard is at the top of the page)
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Daemon in simulated mode (acerd --simulate ANV15-52).
Acer Control Center
![]() |
![]() |
![]() |
Aspire AG15-71P, real machine with the daemon in read-only mode (acerd --dry-run). Its firmware has no operating modes, fans or keyboard backlight, so those screens and cards do not show up.
Predator Control Center
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Daemon in simulated mode (acerd --simulate PHN16-72: a Predator with 5 modes, a 4-zone RGB keyboard and an RGB logo, modelled on public reports; no Predator has been tested yet).
On the laptops acerctl has been run on: works,
the laptop has it but acerctl does not handle it yet,
the firmware does not offer it.
¹ Also in GNOME's Power settings ("Preserve Battery Health"). ² The firmware offers it and acerctl exposes it; a full calibration cycle has not been run yet. ³ CPU temperature and the battery sensors; this model has no fan readings and no discrete GPU. ⁴ Nothing for a scenario to set without modes, fans or keyboard backlight.
Both, plus a Predator PH16-71 built from public reports, are also checked automatically on every change: the packages installed in Fedora 44 and Ubuntu 24.04 run against a copy of what each laptop exposes (daemon/README.md, "Known models"). A hardware report from another model is how it gets added.
Projects with the most features first; features covered by the most projects on the left.
| Project | Modes | Fans | Kbd timeout | 80 % limit | Calibration | Sensors | USB charging off | AC/battery rules | GUI | Boot sound | LCD overdrive | RGB | Keeps acer_wmi |
Scenarios | Sense key | Overclock |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Acer NitroSense / PredatorSense Windows only |
||||||||||||||||
| acerctl this project |
||||||||||||||||
| Linuwu-Sense kernel module |
||||||||||||||||
| predator-sense CLI + DKMS on Linuwu-Sense |
||||||||||||||||
| Div-Acer-Manager-Max GUI + daemon on Linuwu-Sense |
||||||||||||||||
acer_wmiin-tree kernel driver |
||||||||||||||||
| acer-wmi-battery kernel module |
¹ Where the model has it. ² Only the profiles the firmware reports, synced with power-profiles-daemon/tuned. ³ Shared with GNOME/UPower. ⁴ A fixed list of 5 profiles, without reading the firmware mask; fan control only with the model quirk or force_caps.
Sensors: CPU/GPU temperatures and fan speed. acerctl also has a CLI, a tray, a monitor that does not wake the dGPU and the state restored at boot and after suspend; RGB, boot sound, LCD overdrive and overclocking are not there yet.
Third-party features as listed in each project's README (October 2026).
acerctl doesn't replace GNOME's own power controls. It stays in sync with them, so you can use either side.
GNOME's power mode menu (quick settings and Settings → Power) talks to power-profiles-daemon or tuned-ppd. acerd keeps that profile in sync with the Acer mode in both directions. The app has 5 modes and GNOME has 3, so the mapping is many-to-one going to GNOME. Coming back, the power source decides the mode. A mode the firmware doesn't report (e.g. Turbo on the ANV15-52) is never picked.
App → GNOME
| App mode | GNOME power mode |
|---|---|
| Eco | Power Saver |
| Quiet | Power Saver |
| Balanced | Balanced |
| Performance | Performance |
| Turbo | Performance |
GNOME → app
| GNOME power mode | On AC | On battery |
|---|---|---|
| Power Saver | Quiet | Eco |
| Balanced | Balanced | Balanced |
| Performance | Turbo when allowed (supported, battery ≥ 40 %), otherwise Performance | Performance (flagged as extra) when battery ≥ 40 %, otherwise Balanced |
When the app changes the mode, it sets the GNOME profile first, waits for tuned to apply it, and then writes the real Acer mode. This avoids loops. Details are in docs/api-dbus.md §11.
acer-wmi-battery exposes the 80 % limit through the standard charge_control_end_threshold attribute (kernel ≥ 6.15). UPower therefore sees it, and GNOME shows its own Settings → Power → Preserve Battery Health switch. That switch and the app's 80 % limit are the same setting:
- Turning on "Preserve Battery Health" in GNOME sets the 80 % limit, and the app shows it on the next refresh.
- The app's limit goes through UPower when it's available, so GNOME's switch follows it and UPower doesn't revert it at startup. Without UPower,
acerdwrites the firmware directly. - The limit is either 80 % or off (100 %). The firmware has no other values and no start threshold.
Tested with UPower 1.91.5 on Fedora 44.
acerctl works by complementing the in-tree acer_wmi driver instead of replacing it: what the kernel lacks comes from small companion modules, a daemon applies the rules, and the app, the tray and the CLI talk to it over D-Bus.
flowchart LR
FW["Acer firmware<br/>(WMI)"] --> K1["acer_wmi<br/>in-tree driver"]
FW --> K2["acer-wmi-extras<br/>acer-wmi-battery"]
K1 --> D["acerd<br/>D-Bus daemon"]
K2 --> D
D <--> APP["Acer / Nitro / Predator<br/>Control Center"]
D <--> TRAY["tray and Sense key"]
D <--> CLI["acerctl CLI"]
D <--> GN["GNOME<br/>power mode, UPower"]
| Directory | What it is |
|---|---|
gui/ |
Acer / Nitro / Predator Control Center (Go + Wails, WebKitGTK): the graphical app, one code in three flavors. Details in gui/README.md. |
daemon/ |
acerd (Go): D-Bus service io.github.fnndk.Acerd1 on the system bus, with polkit; power, fan, lighting, battery, monitor, scenario and App Sync rules. API in docs/api-dbus.md. Includes the acerctl CLI. |
drivers/acer-wmi-extras/ |
Companion module (GPL): keyboard backlight timeout, USB charging while the laptop is off, the thermal profiles the firmware actually supports, battery sensors. |
drivers/acer-wmi-battery/ |
Charge limit (80 %) and calibration, vendored from Frederik Harwath's project with one fix (UPSTREAM.md). |
drivers/acer-wmi-lab/ |
Research module that calls WMI methods through sysfs; only for mapping firmware. |
packaging/ |
systemd units, D-Bus policy, polkit actions and install scripts. |
Mainline layer used: acer_wmi with predator_v4=1 (profiles in platform-profile, fans and temperatures in hwmon) and, until the model's quirk lands upstream, force_caps=0x1C26 to unlock manual fan control.
STATUS.md: project state, what has been done and next steps.docs/firmware-wmi.md: technical reference for the firmware (WMI classes, formats, capabilities).docs/api-dbus.md:acerdD-Bus API.docs/hardware-reports.md: how to send a report from a new model.
For other distributions, or to build from the repository. The scripts install to /usr/local, /etc and /var/lib (writable on Silverblue too); the reference machine is an Acer Nitro ANV15-52 with Fedora Silverblue 44.
Prebuilt binaries for other distributions (glibc ≥ 2.34, x86_64): acerctl-0.1.9-linux-x86_64.tar.gz holds the daemon, CLI, tray and app already built, these scripts and the kernel modules as source; its INSTALL.md has the steps (no Go, Node or Wails needed). The app is picked from the laptop's product name.
From the repository:
# 1. kernel modules (builds; signs with the akmods MOK when Secure Boot/lockdown
# requires signed modules, otherwise they are used unsigned)
sudo sh packaging/build-sign.sh
sudo sh packaging/install-modules.sh # or name the modules, e.g. acer-wmi-battery
# 2. acerd daemon + acerctl CLI
sh packaging/install-daemon.sh build # needs Go
sudo sh packaging/install-daemon.sh install
# 3. the app (Acer, Nitro or Predator Control Center, after the product line)
sh packaging/install-gui.sh build # needs Go, Node, Wails and libwebkit2gtk-4.1-dev
sudo sh packaging/install-gui.sh # FLAVOR=nitro|predator|acer overrides; 'uninstall' removes it
# to remove all of it: sudo sh packaging/uninstall.sh (see Uninstalling)The RPM specs are in packaging/rpm/; acerctl-<version>.tar.gz in each release is the source with vendored Go modules and the built frontend, for building without network.
Building a module by hand
Requires kernel-devel for the running kernel, gcc and make. With Secure Boot, sign with an enrolled MOK (the akmods one on Fedora):
make -C drivers/acer-wmi-extras
sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 \
/etc/pki/akmods/private/private_key.priv /etc/pki/akmods/certs/public_key.der \
drivers/acer-wmi-extras/acer-wmi-extras.ko
sudo insmod drivers/acer-wmi-extras/acer-wmi-extras.ko
ls /sys/devices/platform/acer-wmi-extras/acerctl is free and open-source software under the GNU General Public License:
- Daemon, CLI, tray, GUI and scripts (
daemon/,gui/,packaging/): GPL-3.0-or-later. - Our kernel modules (
drivers/acer-wmi-extras/,drivers/acer-wmi-lab/): GPL-2.0, as required for code that links against the Linux kernel. drivers/acer-wmi-battery/: GPL-2.0-or-later, the license of the upstream project (its LICENSE).
You can use, study, change and redistribute it; modified versions you distribute must stay under the same license and ship their source code.
Note
Independent open-source project, not affiliated with Acer. "Acer", "Aspire", "Nitro", "Predator", "AcerSense", "NitroSense" and "PredatorSense" are trademarks of Acer Inc., mentioned only to identify the hardware.

















