Unofficial Linux kernel module for Acer Predator / Nitro gaming laptops β RGB keyboard backlight, turbo mode, fan control, battery limiter, and more, reverse-engineered from the official PredatorSense app.
The code base is still evolving. It's a bit messy in places, but contributions to structure and organize it further are welcome.
Inspired by acer-predator-turbo, which has a similar goal, this project was born out of my own challenges. I faced issues detecting the Turbo key and ended up using acer_wmi, but it lacked key features like RGB, custom fan support, battery limiter, and more. As a result, I decided to implement these missing features in my own project.
β οΈ Use at your own risk. This driver is independently developed through reverse engineering the official PredatorSense app, without any involvement from Acer. It interacts with low-level WMI methods, which may not be tested across all models.
Requirements: Linux headers matching your running kernel, and dkms. Tested on kernel versions 6.12, 6.13 (previous code base), and 6.14 (zen).
Identify your current kernel version:
uname -rInstall headers and dkms:
# Arch Linux
sudo pacman -S linux-headers dkms
# Debian / Ubuntu
sudo apt install linux-headers-$(uname -r) dkmsClone the repository and build/install the module:
git clone https://github.com/0x7375646F/Linuwu-Sense.git
cd Linuwu-Sense
sudo make installmake install will:
- Blacklist the in-kernel
acer_wmimodule (which otherwise conflicts with this driver). - Register
linuwu_sensewith DKMS and build/install it for your running kernel. - Load the module and configure it to auto-load on every boot.
- Set up a
linuwu_sensegroup and sysfs permissions so you don't needsudofor everyday use.
Because the module is registered with DKMS, it is automatically rebuilt whenever your kernel is upgraded β you do not need to re-run make install after every kernel update. Verify at any time with:
dkms statusTo uninstall:
sudo make uninstallThermal profiles can be switched with a single click. For battery mode, choose between Eco and Balanced; when plugged into AC, choose Quiet, Balanced, Performance, or Turbo. Each profile is remembered separately for battery and AC power, and the thermal/fan settings adjust automatically based on your current power source.
For Predator laptops, the following path is used: /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense
For Nitro laptops, the following path is used: /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/nitro_sense
predator_sense includes all features except the custom boot logo. four_zoned_kb provides RGB support for four-zone keyboards (no per-key RGB support). Here's how to interact with the sysfs files in these directories:
Some Acer Nitro laptops don't have a thermal profile switch button, so it must be set manually:
To probe the current thermal profile:
cat /sys/firmware/acpi/platform_profileTo check the supported thermal profiles:
cat /sys/firmware/acpi/platform_profile_choicesTo switch the platform profile (replace balanced with a supported profile):
echo balanced | sudo tee /sys/firmware/acpi/platform_profileTurns off the keyboard RGB after 30 seconds of idle mode.
| Value | Meaning |
|---|---|
0 |
Disabled |
1 |
Enabled |
# Check
cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/backlight_timeout
# Set
echo 1 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/backlight_timeoutCalibrates your battery to provide a more accurate percentage reading: charges to 100%, drains to 0%, then recharges to 100%. Do not unplug the laptop from AC power during calibration.
| Value | Meaning |
|---|---|
1 |
Start calibration |
0 |
Stop calibration |
# Check
cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/battery_calibration
# Set
echo 1 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/battery_calibrationLimits battery charging to 80%, preserving battery health for laptops primarily used while plugged into AC power.
| Value | Meaning |
|---|---|
1 |
Enabled |
0 |
Disabled |
# Check
cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/battery_limiter
# Set
echo 1 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/battery_limiterEnables or disables the custom boot animation and sound.
| Value | Meaning |
|---|---|
1 |
Enabled |
0 |
Disabled |
# Check
cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/boot_animation_sound
# Set
echo 0 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/boot_animation_soundControls the CPU and GPU fan speeds.
| Value | Meaning |
|---|---|
0 |
Auto |
1 |
Minimum fan speed (not recommended) |
100 |
Maximum fan speed |
| other | Any value in between, e.g. 50, 55, 70 |
Example (set CPU to 50 and GPU to 70):
echo 50,70 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/fan_speedReduces LCD latency and minimizes ghosting.
| Value | Meaning |
|---|---|
1 |
Enabled |
0 |
Disabled |
# Check
cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/lcd_override
# Set
echo 1 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/lcd_overrideAllows the USB charging port to provide power even when the laptop is off.
| Value | Meaning |
|---|---|
0 |
Disabled |
10 |
Provides power until battery reaches 10% |
20 |
Provides power until battery reaches 20% |
30 |
Provides power until battery reaches 30% |
# Check
cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/usb_charging
# Set
echo 20 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/predator_sense/usb_chargingRead-only attribute exposing the current turbo hotkey state, for laptops that use the turbo-toggle fan mechanism (e.g. Predator PH315-53 / PH315-52) instead of the predator_sense / nitro_sense thermal-profile interface.
| Value | Meaning |
|---|---|
0 |
Auto fan mode |
1 |
Turbo fan mode |
cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/turbo_sense/turbo_stateThe driver calls sysfs_notify() on this file every time the turbo hotkey is toggled, so userspace can poll() on it instead of polling in a loop. This is what powers the Turbo OSD popup below.
osd/linuwu_turbo_osd.py is a small GTK3 script that shows a transient grey/green popup at the top of the screen for 3 seconds whenever turbo mode is toggled on or off. It blocks on turbo_state rather than polling, so it uses no CPU while idle.
Requirements: python3-gi with GTK 3 (sudo apt install python3-gi gir1.2-gtk-3.0 on Debian/Ubuntu/Mint) β install this before sudo make install so the popup can start immediately.
On hardware where turbo_sense exists (e.g. PH315-53 / PH315-52), sudo make install automatically installs linuwu_turbo_osd.py to ~/.local/share/linuwu-sense/, installs the systemd --user unit to ~/.config/systemd/user/, and runs systemctl --user enable --now linuwu-turbo-osd.service for you β no manual steps needed.
Check it's running with systemctl --user status linuwu-turbo-osd.service. If it shows as enabled but not started, log out and back in (there was no active graphical session at install time) or start it manually:
systemctl --user start linuwu-turbo-osd.serviceTo try the popup directly without the service:
python3 osd/linuwu_turbo_osd.pyThe four_zoned_kb directory contains two sysfs files that control the RGB backlight behavior of the four-zone keyboard:
four_zone_modeper_zone_mode
Sets a specific RGB color for each of the four keyboard zones individually. Each zone is an RGB value in hex (e.g. 4287f5, where 42 is Red, 87 is Green, f5 is Blue).
- The file accepts four color parameters (one per zone) plus a brightness value, all comma-separated.
- Each color parameter is in the format
RRGGBB.
Set all four zones to the same color and full brightness:
echo 4287f5,4287f5,4287f5,4287f5,100 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/four_zoned_kb/per_zone_modeSet each zone to a unique color:
echo 4287f5,ff5733,33ff57,ff33a6,100 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/four_zoned_kb/per_zone_modeReading (cat) the file returns the current values in the same format: 4287f5,4287f5,4287f5,4287f5,100.
Controls advanced RGB effects for the keyboard. Takes seven comma-separated parameters:
| Parameter | Range | Meaning |
|---|---|---|
| Mode | 0β7 | Lighting effect type (see table below) |
| Speed | 0β9 | Speed of the effect (if applicable) |
| Brightness | 0β100 | Intensity of the lighting effect |
| Direction | 1β2 | 1 = right to left, 2 = left to right |
| Red | 0β255 | |
| Green | 0β255 | |
| Blue | 0β255 |
Modes:
| Mode | Name | Notes |
|---|---|---|
| 0 | Static | Fixed color, no animation |
| 1 | Breathing | Color fades in and out |
| 2 | Neon | Fixed neon glow (black), direction ignored |
| 3 | Wave | Color transitions across the keyboard |
| 4 | Shifting | Full control over speed, direction, and color |
| 5 | Zoom | Direction ignored |
| 6 | Meteor | Direction ignored |
| 7 | Twinkling | Direction ignored |
Example β Neon Mode, speed 1, full brightness, top-to-bottom:
echo 3,1,100,2,0,0,0 | sudo tee /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/four_zoned_kb/four_zone_mode3 Neon Mode Β· 1 Speed Β· 100 Full brightness Β· 2 Direction (top to bottom) Β· 0,0,0 Black (ignored by Neon)
Thermal and fan profiles are saved and reloaded on every reboot, so your settings persist across restarts.
On some newer Acer laptops the keyboard RGB is no longer wired to the WMI interface this module uses. On these machines both per_zone_mode and four_zone_mode accept your writes without any error, but the LEDs never change and the keyboard stays on its firmware default wave. Confirmed affected so far: Predator Helios Neo 16S AI (PHN16S-71) and Nitro ANV16S-41. On the Predator Helios Neo 16 (PHN16-73) the dynamic effects still work over WMI but static colors do not.
The RGB on these models is handled by a separate ENE KB5130 controller on i2c-HID. You can check whether your laptop has it:
grep -l ENEK5130 /sys/class/hidraw/*/device/ueventIf that prints a path, keyboard RGB on your machine works through HID feature reports on that hidraw device instead of this module. The protocol and a standalone userspace tool are documented at kbrgb (see its PROTOCOL.md). Everything else in Linuwu-Sense (fans, thermal profiles, battery limiter and so on) still works normally on these models, so the two can be used side by side.
- Div Acer Manager Max by PXDiv
- GUI LinuwuSense by KumarVivek
- RuSense by r3nv-dev β Rust TUI + GUI (Tauri)
Turbo/hotkeys stopped working after a reboot, or nothing under /sys/module/linuwu_sense exists anymore.
This almost always means the kernel was upgraded and the module was never rebuilt for the new kernel. Check what's actually loaded:
uname -r # kernel you're running now
dkms status # should list linuwu_sense as "installed" for that kernel
lsmod | grep linuwu_senseIf dkms status doesn't show your current kernel, DKMS wasn't able to rebuild it automatically (e.g. it was installed before this project switched to DKMS, or the rebuild failed). Re-run sudo make install from the repo to fix it, then confirm dkms status lists your running kernel next time.
Pressing the turbo key does nothing, and dmesg shows nothing either.
Confirm the module is actually loaded and receiving the key (sudo dmesg | grep -i turbo while pressing the key should print pressed turbo button - N). If a press is logged but nothing happens, check dmesg for a linuwu_sense: Failed to ... error β the driver logs a pr_err whenever the underlying WMI call to read or set the turbo LED fails, so a firmware/EC-level failure will now show up there instead of failing silently.
The Turbo OSD popup never appears.
sudo make install installs and enables linuwu-turbo-osd.service automatically on hardware with turbo_sense. Check whether it's actually running:
systemctl --user status linuwu-turbo-osd.serviceIf the unit isn't found, either your hardware wasn't detected as turbo-capable at install time, or python3-gi/GTK 3 wasn't installed yet (see Turbo OSD popup) β re-run sudo make install after installing it. If it's enabled but not running, there was no active graphical session at install time; log back in or run systemctl --user start linuwu-turbo-osd.service. If it's running but still silent, confirm the sysfs file it watches exists and updates: cat /sys/module/linuwu_sense/drivers/platform:acer-wmi/acer-wmi/turbo_sense/turbo_state should flip between 0/1 as you press the key.
- GUI for keyboard RGB controls to make it noob-friendly.
- Module persistence after reboot (via DKMS, surviving kernel upgrades too).
- Custom boot logo feature support.
- More device support β currently only PHN16-71 is fully supported.
GNU General Public License v3
Donations are completely optional but show your love for open-source development and motivate me to add more features to this project!
USDT (BEP20 - BNB Smart Chain): 0xDA7aa42B9Fc3041F20f4Ec828A70E9bDD54A6822