8000
Skip to content

Latest commit

ย 

History

280 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Predator Sense for Linux

๐Ÿ‡ง๐Ÿ‡ท Leia em Portuguรชs

Predator Sense Logo

Unofficial Linux kernel module and GUI for Acer Gaming laptop hardware control
RGB Keyboard Backlighting โ€ข Turbo Mode โ€ข Temperature Monitoring โ€ข Performance Profiles

Rust GTK4 100% Rust userspace License Linux

Created and maintained by Cleyton Alves


Disclaimer

Warning Use at your own risk! This is an unofficial project. Acer was not involved in its development. The kernel module was developed through reverse engineering of the official PredatorSense Windows application. This driver interacts with low-level WMI/ACPI methods that have not been tested on all laptop series. The authors are not responsible for any damage to your hardware.

Note All trademarks, product names, and logos mentioned (Acer, Predator, PredatorSense, Helios, Nitro, AeroBlade, CoolBoost) are the property of their respective owners (Acer Inc.). This project is not affiliated with, endorsed by, or sponsored by Acer Inc. in any way.

Product images The laptop photos under predator-sense-gui/resources/models/ depict official Acer Predator/Nitro products and are used solely to let the app visually identify the model detected on the user's own machine (matched against the product_name reported by the system's DMI/BIOS). These images are not licensed under this project's GPLv3 license โ€” copyright in the underlying product photography belongs to Acer Inc. and/or its original creators. They are included here on a good-faith, non-commercial, purely informational basis (nominative/product-identification use), with no claim of ownership by this project. If you are the rights holder and would like an image removed, please open an issue and it will be taken down promptly.

This application was created for personal use, to get the most out of an Acer gaming laptop on Linux โ€” since Acer does not provide official Linux support for PredatorSense. It is shared freely for anyone who wants the same.

If this app/project helped you and/or you liked it in some way, consider leaving a star, it helps a lot โญ


Screenshots

Dashboard โ€” Laptop photo and full system specs at a glance: CPU, GPU, RAM, storage, network and OS.

Dashboard

Temperatures โ€” Live gauges for CPU, GPU, system, NVMe drives, WiFi and RAM, all in one screen.

Temperatures

Usage โ€” CPU, GPU, memory and storage with top processes, animated bars and click-to-expand details (with a CSS-style fire animation on the temperature gauge).

Usage

Network โ€” Real-time download/upload graphs with peak tracking and automatic interface detection (Wi-Fi or Ethernet).

Network

Lighting โ€” Static per-zone (4 sections) and dynamic RGB keyboard effects (Breathing, Neon, Wave, Shifting, Zoom).

Lighting

Modes โ€” Performance profiles: Quiet, Balanced, Performance and Turbo (CPU governor + Intel EPP + GPU power limit).

Modes

GameSync โ€” Register a game and its profile; the app switches to it automatically while the game is running and restores whatever was active before once it exits.

GameSync

Fan Control โ€” Live RPM with animated spinning fans, CoolBoost toggle and Auto/Max modes.

Fan Control

Battery โ€” Charge percentage, voltage, current, power, cycles, health, manufacturer and 80% charge limit for longevity.

Battery

GPU โ€” NVIDIA dashboard with live graphs, clocks, utilization, VRAM, power draw and PCIe info.

GPU

Graphs โ€” Detailed CPU and GPU history charts with min/max tracking.

Graphs

AI Assistant (beta) โ€” Local AI assistant powered by Ollama: chat, model manager (list installed models, download new ones, pick which one runs), live VRAM/GPU resource usage while it's thinking, and a persistent action log.

AI Assistant

Drivers and manuals โ€” Shows the serial number (with a copy button) and a direct link to Acer's official drivers-and-manuals page, plus an illustration of where to find the serial number sticker on the laptop.

Drivers and manuals

Settings โ€” Minimize to tray, start on boot, auto-apply profile on start, language preferences, and per-model supported-features list.

Settings

Cover logo lighting โ€” Independent RGB control for the logo on the back of the display, on models with a color-capable cover logo (Static/Breathing/Neon). Runtime-detected: the control only appears if the hardware responds to a capability probe, so it stays safely hidden on models without it.

Cover logo lighting

Cover logo lit up green on a Predator PHN16-73

Feature contributed by @jlucaso1, tested on their own Predator PHN16-73. This laptop's cover logo isn't color-capable, so the feature was verified using their hardware.


About

Unofficial Linux kernel module for Acer Gaming laptop RGB keyboard backlighting and Turbo mode (Acer Predator, Acer Helios, Acer Nitro).

Inspired by and based on the acer-predator-turbo-and-rgb-keyboard-linux-module project by JafarAkhondali and contributors. This project extends the existing Linux Acer-WMI kernel module to support Acer gaming functions, and adds a full GUI desktop application built with Rust and GTK4.


Features

Feature Description
Dashboard Laptop photo + complete system specs (CPU, GPU, RAM, storage, network, OS)
Temperatures Live gauges for CPU, GPU, system, NVMe, WiFi and RAM
Usage 4-tab view: CPU / GPU / Memory / Storage with top processes, click-to-expand details and CSS-style fire animation on the temperature gauges
Network Real-time download/upload graphs with peak tracking and auto interface detection
RGB Keyboard Control Static per-zone (4 zones) and dynamic effects (Breathing, Neon, Wave, Shifting, Zoom) over WMI. On hardware without the kernel module, RGB works natively over USB/I2C-HID instead โ€” ENEK5130 chip (4-zone static, Breathing/Neon), 2024+ Sunrex chip (single-zone, full effect list) or Chicony chip (7-color palette, Helios 300) โ€” auto-detected, see Compatibility
RGB Cover Logo Independent power, solid-color, brightness, Breathing and Neon controls for the emblem on the back of the display, with a live vector preview. Exposed only after runtime HID capability detection
Performance Profiles Quiet / Balanced / Performance / Turbo modes (CPU governor + Intel EPP + GPU power limit)
Fan Control Live RPM with animated spinning fans, CoolBoost toggle, Auto/Max modes, plus experimental per-fan PWM control & auto temperature curve (where supported)
Battery Charge stats, cycles, health, manufacturer info and 80% charge limit for longevity
GPU Dashboard NVIDIA metrics: temperature, utilization, VRAM, clocks, power draw, PCIe info with live graphs, plus a power limit (TGP) slider
Graphs Detailed CPU and GPU history charts with min/max tracking
AI Assistant ๐Ÿงช Local, opt-in AI assistant powered by Ollama โ€” reads live hardware state and suggests or applies changes through a fixed, already-validated set of actions (thermal profile, fan mode, CoolBoost, RGB, GPU power limit, battery). Chat, model manager (download/select), live resource/VRAM monitor and a persistent action log. Auto-apply or always-confirm, your choice. Requires Ollama installed separately โ€” see AI Assistant below
Auto capability detection Detects what each model supports and adapts the UI โ€” unsupported features are shown as "not available on this model" instead of erroring. Supported features are listed in Settings
Temperature alerts Desktop notification when CPU/GPU exceed 90ยฐC (works in the tray)
Auto power profile Switches profile automatically on AC/battery change โ€” target profile for each state is configurable in Settings (default: Performance on AC, Balanced on battery)
Debug logging Optional toggle in Settings โ€” logs daemon and app events to ~/.local/share/predator-sense/ (rotated, 5MBร—3) for remote troubleshooting. Off by default
System Tray Minimize to tray with the Predator icon โ€” app stays alive in background
PredatorSense Key Hardware key mapping โ€” the key next to NumLock opens the app
DKMS Kernel modules rebuild automatically across kernel upgrades
Internationalization Automatic English / Portuguese based on system locale
Gaming UI Dark theme with pulsing neon bars, dashed circular gauges, polygon panel borders. Accent color follows the detected brand automatically โ€” cyan on Predator/Helios/Triton, orange/red on Nitro (matching NitroSense) โ€” no setting to toggle

Compatibility

Will this work on my laptop?

Legend: โœ… tested & working ยท ๐ŸŸก implemented, not tested (needs a tester) ยท ๐Ÿงช experimental (needs a tester) ยท โŒ not working ยท - not applicable

Product Name Turbo (Impl.) Turbo (Tested) RGB (Impl.) RGB (Tested) Fan RPM read Fan profiles Fan PWM %
AN16S-61 - - โœ… โœ… โŒ - โŒ
AN515-45 - - โœ… โœ… โŒ - โŒ
AN515-55 - - โœ… โœ… โŒ - โŒ
AN515-56 - - โœ… โœ… โŒ - โŒ
AN515-57 - - โœ… โœ… โŒ - โŒ
AN515-58 โœ… ๐ŸŸก โœ… โœ… ๐ŸŸก ๐ŸŸก ๐Ÿงช
AN517-41 - - โœ… โœ… โŒ - โŒ
PH16-71 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก - โŒ
PH16-72 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก ๐ŸŸก ๐Ÿงช
PH315-52 โœ… โœ… โœ… โœ… ๐ŸŸก - โŒ
PH315-53 โœ… โœ… โœ… โœ… ๐ŸŸก - โŒ
PH315-54 โœ… โœ… โœ… โœ… โœ… โœ… โŒ
PH315-55 โœ… ๐ŸŸก โœ… โŒ ๐ŸŸก - โŒ
PH317-53 โœ… โœ… โœ… โœ… ๐ŸŸก - โŒ
PH317-54 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก - โŒ
PH317-55 - - โœ… ๐ŸŸก โŒ - โŒ
PH317-56 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก - โŒ
PH517-51 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก - โŒ
PH517-52 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก - โŒ
PH517-61 โœ… ๐ŸŸก โœ… โœ… ๐ŸŸก - โŒ
PHN16-71 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก - โŒ
PHN16S-71 โœ… โœ… โœ… โœ… โœ… - โŒ
PHN16-72 โœ… โœ… โœ… โœ… โœ… โœ… ๐Ÿงช
PHN16-73 โœ… โœ… โœ… โœ… โœ… โœ… โœ…
PHN18-71 โœ… โœ… โœ… โœ… ๐ŸŸก - โŒ
PT314-51 โŒ โŒ โœ… โœ… ๐ŸŸก - โŒ
PT314-52s โœ… โœ… โœ… ๐ŸŸก ๐ŸŸก - โŒ
PT315-51 โœ… โœ… โœ… โœ… ๐ŸŸก - โŒ
PT316-51 โœ… โœ… โœ… โœ… ๐ŸŸก - โŒ
PT515-51 โœ… โœ… โœ… โœ… ๐ŸŸก - โŒ
PT516-52s โœ… ๐ŸŸก โœ… โœ… ๐ŸŸก - โŒ
PT917-71 โœ… ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก - โŒ

If your model is not listed, it may still work โ€” the kernel module detects compatible WMI interfaces automatically. If it worked (or didn't) for you, please open an issue mentioning your model so we can update this table.

Fan control โ€” three levels

Level What it does Availability
Fan RPM read Re 8000 ad CPU/GPU fan speed (fan1_input, fan2_input) Most gaming models (auto-detected)
Fan profiles Quiet / Balanced / Performance / Turbo via platform_profile predator_v4 models
Fan PWM % ๐Ÿงช Per-fan speed control (pwm1/pwm2 0โ€“100%) ported from mainline acer-wmi via WMI โ€” kernel โ‰ฅ 6.14 only Subset of models with ACER_CAP_PWM (AN515-58, PHN16-72/73, PH16-72, โ€ฆ)

๐Ÿงช PWM fan control is experimental. It is ported from the upstream Linux kernel acer-wmi driver and uses safe WMI methods (no raw EC writes), but it has not been verified on real hardware by the maintainer (who owns a PH315-54, which has no PWM). If you have a supported model, testing reports are very welcome. Use at your own risk โ€” see the disclaimer at the top.

Alternative: linuwu_sense (unquirked hardware with no working Turbo)

facer's enable_all=1 fallback recognizes any Acer WMI-capable board, but the full predator_v4 profile set (5 profiles including balanced-performance/performance, writable turbo_state) only applies to boards present in its DMI quirk table. On an unquirked board, platform_profile_choices is limited to low-power quiet balanced and turbo_state stays read-only even though the firmware supports more โ€” reported on a PHN16-73 unit (Macan_ARX, BIOS V1.26) in #33.

If that's your case, the community Linuwu-Sense module (loaded with predator_v4=1) exposes the full profile set through the same generic platform_profile/intel_pstate/acer-wmi-battery interfaces this app already reads directly โ€” no facer-specific code path involved. Since v0.2.71-preview the app detects linuwu_sense and skips the "install facer" prompt when it's the driver actually providing those interfaces. RGB and the thermal-profile calibration (both facer-only, see above and below) still need facer itself and stay unavailable under linuwu_sense.

RGB without the kernel module (I2C-HID hardware only)

Some models (confirmed: PHN16S-71, PHN16-73, AN16S-61) route the keyboard's RGB controller through a separate I2C-HID chip (ENEK5130) instead of the facer.ko WMI interface โ€” the app talks to it directly via /dev/hidrawN, so these work even if the kernel module isn't loaded at all:

Feature Status
Static per-zone color, brightness, backlight-off โœ… confirmed working (PHN16S-71, AN16S-61)
Dynamic effects โ€” Breathing, Neon โœ… confirmed working (PHN16S-71, AN16S-61) โ€” native, single HID write, hardware loops the pattern on its own. On the PHN16S-71 unit Breathing ignores the picked color and rainbow-cycles instead; may vary on other hardware
Dynamic effects โ€” Wave, Shifting, Zoom On-screen preview only (no hardware writes) โ€” the effect codes for these were found to mean different things across hardware generations, so they're not wired up yet
RGB cover logo โ€” off, solid color, brightness, Breathing, Neon โœ… confirmed working (PHN16-73)

Cover-logo support is not enabled from a model-name allow-list. The controller must advertise target 0x83 in its A1 target report and return matching, non-empty A3 capabilities before the UI is exposed; the app repeats that check immediately before every write. The hotkey daemon restores only a setting that the app previously applied successfully after login and resume, and skips the logo entirely when there is no saved setting or the target is absent.

An independent report on the AN16S-61 (see also the reporter's own standalone protocol tool) mapped six more native wire modes beyond static/Breathing/Neon/Wave (a hardware off mode, a boot-blink mode the EC itself fires, and four more built-in animations), plus a mode/turbo-key LED target. None of that is wired into the app yet โ€” it needs a defined slot for hardware-native effect codes before it can be, so it's tracked as a future improvement.

The same report also included a decoded HID report descriptor pulled straight off the controller, which settled a real bug: the app was reading the A3 capability report's zone count from the wrong byte (byte[3], a fixed per-target-class constant) instead of the byte the controller's own descriptor declares for it (byte[4]). Fixed in v0.2.69-preview for both the app and the hotkey daemon. This is a protocol-level correction, not a per-model change - the report descriptor field layout comes from the chip's own firmware (same 0CF2:5130 chip across all three confirmed models) - and it changes no wire bytes on hardware already confirmed working, since the previous value was always an over-inclusive superset of the correct one.

RGB on 2024+ hardware (Sunrex/Darfon USB HID)

A newer generation (PH16-72 and other 2024-2026 models sharing the same USB HID chips, see issue #26) moved keyboard and cover-logo RGB off WMI and off the ENEK5130 chip above, onto a different pair of controllers entirely โ€” Sunrex 05af:* for the keyboard, Darfon 0d62:* for the logo. The app detects and drives these directly too, auto-selected over the ENEK5130/WMI paths whenever present:

Feature Status
Keyboard: Off, Static, Breathing, Wave, Snake, Neon, Spot, Star, Rainbow, 5ร— Slash, Zoom, Row Wave, Swiping ๐ŸŸก implemented, awaiting confirmation on real hardware
Cover logo: off, solid color, brightness, Breathing ๐ŸŸก implemented, awaiting confirmation on real hardware

This chip has no independent zones โ€” the whole keyboard takes one color/effect at a time, unlike the 4-zone ENEK5130 controller above. The wire protocol was reverse-engineered byte-for-byte from two decompiled releases of the official Windows app (every fixed byte sequence and checksum formula matched exactly between them), not guessed โ€” but nobody has confirmed it against physical hardware yet, so treat it as untested until a real report comes in.

A third chip (Chicony, Helios 300/PH317-56) uses yet another USB HID protocol, documented by community reverse engineering (NT411/Acer-Predator-Fan-RGB-Controller-Linux) and reimplemented here from that spec โ€” fixed 7-color palette (a hardware/firmware limitation, not arbitrary RGB) across 12 effects. Also ๐ŸŸก, awaiting confirmation.

Already running Linuwu-Sense or DAMX?

Linuwu-Sense (and DAMX, which is built on it) is a separate, unrelated project that also drives Acer Predator/Nitro hardware on Linux. It's not a dependency of this project and none of its code is used here โ€” but its kernel module binds the same WMI GUIDs facer needs, and the kernel won't let two drivers claim the same device at once.

If the installer detects linuwu_sense already loaded or DKMS-installed, it automatically leaves your existing setup alone โ€” it won't blacklist acer_wmi or force-load facer, so it won't fight (or break) a Linuwu-Sense/DAMX install that already works. Keyboard RGB still works through this app over the HID path (see above) regardless of which platform driver is active; fan/thermal control in that case stays with whichever tool you already had managing it.


Installation

Prebuilt Installer (Fastest)

Download the release installer directly and run it:

curl --fail --location https://github.com/cleyton1986/predator-sense/releases/latest/download/predator-sense-installer --output predator-sense-installer
chmod +x predator-sense-installer
sudo ./predator-sense-installer --install

The installer, privileged helper, hotkey listener, and tray service are all provided by the same Rust multicall binary. The installer downloads and configures everything without a shell-script bootstrap.

Interactive Installer (prebuilt binary, no Rust toolchain needed)

Download the predator-sense-installer binary from the Releases page. It's a standalone Rust binary, not a bundle โ€” it still needs internet access to fetch the app's source (for the kernel module) and the matching prebuilt release binary, but it skips installing Rust and compiling the GTK4 app on your machine entirely:

chmod +x predator-sense-installer
sudo ./predator-sense-installer

Select option 1 (Full Installation). The installer will automatically:

  1. Detect your distribution (Debian/Ubuntu/Mint, Fedora, Arch)
  2. Install system dependencies (GTK4, libadwaita, build tools, kernel headers)
  3. Download the matching release's source + prebuilt binary
  4. Compile and load the facer kernel module (this part always compiles locally โ€” kernel modules can't be shipped prebuilt across different kernel versions)
  5. Create desktop menu entry with icon
  6. Map the PredatorSense hardware key (auto-start on login)
  7. Set up system tray support

The prebuilt path doesn't need Rust/cargo on the target machine. The installer is also copied to /opt/predator-sense/ as a standalone management tool for status checks, kernel-module reloads, upgrades, and uninstalling (see Installer Options).

After installation, open the app by:

  • Pressing the PredatorSense key (next to NumLock)
  • Searching "Predator Sense" in your application menu
  • Running /opt/predator-sense/predator-sense in a terminal

Manual Install (Build from source)

Prerequisites

Debian / Ubuntu / Linux Mint
sudo apt install libgtk-4-dev libadwaita-1-dev pkg-config build-essential \
    gcc make dkms curl tar linux-headers-$(uname -r)
Fedora
sudo dnf install gtk4-devel libadwaita-devel pkg-config gcc make \
    dkms curl tar kernel-devel-$(uname -r)
Arch Linux
sudo pacman -S gtk4 libadwaita pkgconf gcc make dkms curl tar linux-headers

Rust (if not installed):

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

Build & Install

# Clone the repository
git clone https://github.com/cleyton1986/predator-sense.git
cd predator-sense/predator-sense-gui

# Build the GUI and the Rust installer/services
cargo build --release
cargo build --release --manifest-path installer/Cargo.toml

# Install the local build and register the existing C kernel sources with DKMS
sudo installer/target/release/predator-sense-installer --install

# Run
/opt/predator-sense/predator-sense

Usage

Keyboard RGB

  1. Go to Lighting in the sidebar
  2. Choose Static (per-zone colors) or Dynamic (effects)
  3. Static mode: adjust R/G/B sliders for each of the 4 keyboard sections
  4. Dynamic mode: select an effect (Breathing, Neon, Wave, Shifting, Zoom) and adjust speed
  5. Click Apply

On I2C-HID-only hardware without the kernel module (see Compatibility), Breathing and Neon animate for real; Wave/Shifting/Zoom show an on-screen preview only, clearly labeled as such โ€” the physical keyboard doesn't change for those yet.

RGB Cover Logo

  1. Go to Lighting and select Cover logo (the selector appears only when the compatible HID target is detected)
  2. Use Lighting to turn the emblem on or off
  3. Choose Static, Breathing or Neon, then adjust the available color, brightness and speed controls while checking the live preview
  4. Click Apply to logo

The last successfully applied state is restored when the user hotkey service starts and after suspend/hibernate. Animated-effect colors are firmware-controlled, so the preview represents their behavior rather than offering a color picker for those modes.

The firmware owns the lighting animation shown before Linux starts the user service. A saved โ€œoffโ€ state is restored after login, but this app cannot suppress the earlier BIOS/boot animation.

Performance Profiles

On active Intel P-State + HWP systems, the CPU side resolves as follows:

Profile HWP policy Intel EPP Min. performance GPU Power Fan Use Case
Quiet powersave power 10% 40Wยณ Auto Silent work
Balanced powersave balance_performance 17% 80Wยณ Auto General use
Performance powersaveยน performance 50% 100Wยณ Max Gaming
Turbo performanceยฒ 0 (kernel-forced) 100% 110Wยณ Max Maximum performance

Selecting any profile also applies its fan mode - no separate step needed. Picking Performance or Turbo pushes the fan to Max (same as the physical Turbo key); Quiet and Balanced leave it on Auto.

ยน Intel P-State's HWP powersave policy is a dynamic scaling algorithm, not the generic minimum-frequency governor. It keeps the model-specific named EPP writable, making Performance a dynamic 50%-to-maximum tier.

ยฒ The HWP performance policy itself forces EPP 0 and restricts the available P-state range to its upper boundary. Predator Sense relies on that kernel behavior rather than requiring numeric EPP writes. The backend is detected from every cpufreq policy, without a CPU model allowlist. Other drivers retain the existing performance + named performance mapping, and systems without EPP skip only that optional control.

ยณ Best-effort via nvidia-smi -pl, same as the GPU Dashboard's power limit slider below - silently skipped if nvidia-smi isn't present, and on some laptops the vBIOS never exposes NVML's power-limit control at all (nvidia-smi -q reports Power Management Object: N/A, every -pl value is rejected regardless of what 6D40 's requested). That's a firmware-level limit, not something this app - or any Linux software - can change; raising it means flashing a different vBIOS with a Windows-only tool like nvflash, a real risk of bricking the GPU and squarely the owner's own call.

Firmware power profiles (measured, not guessed)

Everything in the table above only redistributes an existing power budget between CPU and GPU. The package power limit itself is set by the firmware's own thermal profile, and on some models the firmware boots into its lowest one โ€” so no governor, EPP or min_perf change lifts the ceiling by a single watt.

platform_profile cannot always reach those modes. The kernel driver names them from a fixed table (BALANCED=0, QUIET=1, PERFORMANCE=2, TURBO=3, ECO=4) that does not hold on every firmware. Measured on a Predator PHN16-73 (Arrow Lake, BIOS V1.26), writing each raw index and reading the package limit back:

Firmware index Sustained (PL1) Burst (PL2) Name via platform_profile
6 45 W 50 W (none โ€” unreachable)
0 55 W 160 W balanced
1 70 W 160 W quiet
4 95 W 160 W low-power
5 115 W 160 W (none โ€” unreachable)

The strongest and the weakest modes have no name at all, and the three that do are labelled in the wrong order. Hard-coding a corrected table would just move the problem to the next firmware, so Predator Sense measures instead:

  1. The kernel module exposes the raw index and the firmware's own supported-index bitmask as /sys/devices/platform/acer-wmi/thermal_profile and thermal_profile_supported.
  2. Mode โ†’ Calibrate profiles writes each supported index and reads the resulting package limit from intel-rapl-mmio, then ranks them by sustained power. Takes a few seconds and audibly moves the fans while it runs.
  3. From then on the four tiers above also drive the firmware profile, anchored so Quiet lands on the real weakest and Turbo on the real strongest.

Notes:

  • Machines with no readable RAPL (AMD models, older Intel) cannot be ranked. The profiles are still listed and switchable by hand, but the four tiers deliberately leave the firmware alone rather than guess an order โ€” on the firmware above, guessing by index would put Turbo on the 45 W profile.
  • The firmware forgets the profile on every power cycle, so the boot service reapplies the last one you chose.
  • On models where the firmware ties keyboard lighting to the power mode, every switch โ€” including each step of a calibration โ€” repaints the keyboard. That is the firmware doing it, not this app; reapply your colors from the Lighting page afterwards if it bothers you.
  • The physical mode-switch key cycles through the same measured order; see below.

Physical mode-switch key

Some models have a dedicated key that cycles power modes. It reports only as a raw HID input report on the embedded controller and generates no input-subsystem event whatsoever, which is why it appears dead on Linux while the PredatorSense key (a WMI hotkey) works.

The daemon watches the Acer EC HID device for it. The defaults were captured on a PHN16-73 (1025:174B, report 04 85 ff); other models are expected to differ, so both are overridable without a rebuild:

~/.config/predator-sense/mode_key.json:

{ "product": "0000ABCD", "report": [4, 133, 255] }

(strict JSON โ€” a // comment in that file makes it unparseable, and the daemon falls back to the defaults with a note in its log.)

If your key does nothing, the daemon logs every Acer HID device it found at startup (enable debug_logging in Settings). Find the right one with sudo hexdump -C /dev/hidrawN while pressing the key, then point the file at it โ€” and please open an issue with the values so they can ship as defaults for your model.

The firmware also refuses to switch modes below 40% battery; the daemon reports that instead of letting the key look broken.

Perfil automรกtico por energia / Power-source auto-profile

When enabled in Settings (on by default for new installs), this isn't just a reaction to plugging/unplugging - it's continuously enforced:

  • On AC: always Performance or Turbo. If one of those two is already active, it's left alone - the auto-switcher never fights a manual choice between them.
  • On battery: always Balanced or Quiet, never Performance/Turbo. Below 15% battery, Quiet is forced regardless of the configured target.

GPU Dashboard

Real-time NVIDIA GPU monitoring:

  • Temperature, utilization, VRAM usage, power draw (circular gauges)
  • Live temperature and utilization history graphs (2 min window)
  • Core clock, memory clock, P-State, PCIe link info, VBIOS version

AI Assistant (beta)

An opt-in local AI assistant, powered by Ollama running entirely on your machine โ€” nothing is sent anywhere.

  1. Install Ollama separately by following its official Linux instructions
  2. Go to AI in the sidebar and download a model from the built-in model manager (smollm2:1.7b or larger โ€” smaller models don't reliably support tool-calling)
  3. Enable the assistant in Settings and choose Auto-apply (applies suggestions immediately) or Always confirm (default โ€” every suggested change waits for your approval)

The assistant reads live hardware state (temperature, fan, thermal profile, battery) and can suggest or apply changes through a fixed, already-validated set of actions โ€” it never touches raw hardware/EC access directly, and every action maps 1:1 to a function this app already used before the AI feature existed. The model loads only to run an analysis, then unloads โ€” it doesn't sit idle in memory. All AI activity is recorded in a persistent, reviewable action log on the same page.


Installer Options

The Rust installer provides an interactive TUI:

sudo ./predator-sense-installer              # Interactive menu
sudo ./predator-sense-installer --install    # Direct full install
sudo ./predator-sense-installer --uninstall  # Remove everything
sudo ./predator-sense-installer --reload-module # Rebuild/reload the kernel module
sudo ./predator-sense-installer --status     # Show component status

Uninstall

sudo ./predator-sense-installer  # Select option 2

Or manually:

pkill -f "/opt/predator-sense/predator-sense"
sudo rm -rf /opt/predator-sense
sudo rm -f /usr/share/applications/predator-sense.desktop
sudo rm -f /usr/share/icons/hicolor/128x128/apps/predator-sense.png
rm -f ~/.config/systemd/user/predator-sense-hotkey.service
rm -f ~/.config/autostart/predator-sense-hotkey.desktop
sudo rmmod facer  # Optional: unload kernel module

Troubleshooting

Keyboard RGB not changing / stuck on one effect

The kernel module state may be stuck. Reload it:

sudo rmmod facer
sudo insmod /path/to/kernel/facer.ko
# Or use the installer: sudo ./predator-sense-installer โ†’ Option 4
Module not loading
# Check WMI device exists
ls /sys/bus/wmi/devices/7A4DDFE7-5B5D-40B4-8595-4408E0CC7F56/

# Check kernel logs
sudo dmesg | grep -i facer

# Ensure headers match your kernel
sudo apt install linux-headers-$(uname -r)
PredatorSense key not working
# Check the Rust hotkey service
systemctl --user status predator-sense-hotkey.service
pgrep -af predator-sense-hotkey

# Ensure user is in 'input' group (full logout/login or reboot required after adding)
groups | grep input
sudo usermod -aG input $USER
NVIDIA GPU page shows no data
# Verify nvidia-smi works
nvidia-smi
# If not, install NVIDIA proprietary drivers
My model has no matching quirk (missing profiles/fan-read/PWM)

If your exact model isn't in the compatibility list yet, try forcing every optional predator_v4-family feature on and see what actually works on your hardware:

sudo modprobe facer enable_all=1
# persistent across reboots:
echo "options facer enable_all=1" | sudo tee /etc/modprobe.d/facer-options.conf

This is WMI-only (no raw EC writes), so on hardware that doesn't implement a given feature it's a safe no-op, not a bad write. Please open an issue with your model and what worked/didn't โ€” that's how new quirks get added.


Project Structure

predator-sense-gui/
โ”œโ”€โ”€ kernel/                      # Linux kernel modules (DKMS-managed)
โ”‚   โ”œโ”€โ”€ facer.c                  # ACPI/WMI interface to Acer hardware
โ”‚   โ”œโ”€โ”€ acer-wmi-battery.c       # Battery charge limit support
โ”‚   โ”œโ”€โ”€ acpi_ec.c                # Raw EC access via /dev/ec (from MusiKid/acpi_ec)
โ”‚   โ”œโ”€โ”€ Makefile
โ”‚   โ””โ”€โ”€ dkms.conf                # DKMS auto-rebuild config
โ”œโ”€โ”€ installer/                   # Rust multicall installer and services
โ”‚   โ”œโ”€โ”€ Cargo.toml
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ”œโ”€โ”€ main.rs              # Typed dispatch by installed executable name
โ”‚       โ”œโ”€โ”€ constants.rs         # Central paths, protocol values and hardware constants
โ”‚       โ”œโ”€โ”€ install.rs   
8AD5
        # Installer + DKMS registration
โ”‚       โ”œโ”€โ”€ helper.rs            # Validated privileged hardware operations
โ”‚       โ”œโ”€โ”€ hotkey.rs            # Linux input-event listener
โ”‚       โ”œโ”€โ”€ tray.rs              # StatusNotifierItem service
โ”‚       โ””โ”€โ”€ i18n.rs              # Typed EN/PT messages
โ”œโ”€โ”€ protocol/                    # Shared typed GUI/helper contract
โ”‚   โ”œโ”€โ”€ Cargo.toml
โ”‚   โ””โ”€โ”€ src/lib.rs               # Actions, paths, limits and binary names
โ”œโ”€โ”€ src/                         # Rust GTK4 application
โ”‚   โ”œโ”€โ”€ main.rs
โ”‚   โ”œโ”€โ”€ app_state.rs             # Global window-visibility flag (gates timers)
โ”‚   โ”œโ”€โ”€ i18n.rs                  # EN/PT internationalization
โ”‚   โ”œโ”€โ”€ config.rs                # User preferences (JSON)
โ”‚   โ”œโ”€โ”€ tray.rs                  # Rust tray-service lifecycle
โ”‚   โ”œโ”€โ”€ hardware/
โ”‚   โ”‚   โ”œโ”€โ”€ helper.rs            # Typed privileged-helper client
โ”‚   โ”‚   โ”œโ”€โ”€ rgb.rs               # RGB via /dev/acer-gkbbl-*
โ”‚   โ”‚   โ”œโ”€โ”€ hwmon.rs             # /sys/class/hwmon index (cached OnceLock)
โ”‚   โ”‚   โ”œโ”€โ”€ sensors.rs           # Temps, fans, RAM, network
โ”‚   โ”‚   โ”œโ”€โ”€ gpu.rs               # nvidia-smi parser with TTL cache
โ”‚   โ”‚   โ”œโ”€โ”€ procs.rs             # /proc sampler (CPU per-core, memory, process list)
โ”‚   โ”‚   โ”œโ”€โ”€ storage.rs           # Disk usage via df
โ”‚   โ”‚   โ”œโ”€โ”€ sysinfo.rs           # DMI + CPU + GPU + OS specs
โ”‚   โ”‚   โ”œโ”€โ”€ fan.rs               # Fan mode + CoolBoost
โ”‚   โ”‚   โ”œโ”€โ”€ extras.rs            # Battery limit, LCD overdrive, USB charging, boot anim
โ”‚   โ”‚   โ”œโ”€โ”€ profile.rs           # CPU governor + EPP + GPU power
โ”‚   โ”‚   โ”œโ”€โ”€ ai_assistant.rs      # Ollama tool-calling: fixed allow-list mapped to existing hardware:: setters
โ”‚   โ”‚   โ”œโ”€โ”€ ai_snapshot.rs       # Ephemeral hardware-state snapshot fed to the AI, cleared after each read
โ”‚   โ”‚   โ”œโ”€โ”€ ai_actionlog.rs      # Persistent, reviewable log of everything the AI suggested/applied
โ”‚   โ”‚   โ””โ”€โ”€ setup.rs             # Kernel module management
โ”‚   โ””โ”€โ”€ ui/                      # GTK4 pages (Cairo custom widgets)
โ”‚       โ”œโ”€โ”€ window.rs            # Main window, sidebar, neon bars, hide-to-tray
โ”‚       โ”œโ”€โ”€ dashboard_page.rs    # Hero + system specs
โ”‚       โ”œโ”€โ”€ temperatures_page.rs # All temperature gauges
โ”‚       โ”œโ”€โ”€ usage_page.rs        # CPU/GPU/Mem/Storage with top processes
โ”‚       โ”œโ”€โ”€ network_page.rs      # Download/upload with peak tracking
โ”‚       โ”œโ”€โ”€ rgb_page.rs          # Keyboard RGB with visual zones
โ”‚       โ”œโ”€โ”€ fan_control_page.rs  # Animated fans + CoolBoost
โ”‚       โ”œโ”€โ”€ fan_page.rs          # Performance profiles
โ”‚       โ”œโ”€โ”€ battery_page.rs      # Battery stats + charge limit
โ”‚       โ”œโ”€โ”€ gpu_page.rs          # NVIDIA GPU dashboard
โ”‚       โ”œโ”€โ”€ monitor_page.rs      # Detailed CPU/GPU history graphs
โ”‚       โ”œโ”€โ”€ ai_page.rs           # AI Assistant: chat, model manager, resource monitor, action log
โ”‚       โ”œโ”€โ”€ setup_page.rs        # Kernel module setup wizard
โ”‚       โ””โ”€โ”€ gauge_widget.rs      # Dashed circular gauge widget
โ””โ”€โ”€ resources/
    โ”œโ”€โ”€ style.css                # Gaming dark theme
    โ””โ”€โ”€ predator-icon.svg        # System tray icon

Credits & Acknowledgments

Forking or reusing this project

This project is licensed under GPL-3.0, so you're free to fork, modify and redistribute it under the same license. If you do โ€” especially if you build a derivative app or reuse significant parts of the GUI/kernel module โ€” please keep a visible credit to the original author (a mention of Cleyton Alves / this repo in your README, About screen, or credits section is all that's needed). It's a small ask that goes a long way for an independent, unpaid side project.

Support the Project

If this project was useful to you and you'd like to support its development, consider buying me a coffee:

Donate via PayPal

PIX (Brazil): cleyton1986@gmail.com

Any contribution is voluntary and greatly appreciated! It helps keep the project alive and motivates new features.


License

This project is licensed under the GNU General Public License v3.0 โ€” see the LICENSE file for details.

This is free software: you can redistribute it and/or modify it under the terms of the GNU GPL as published by the Free Software Foundation.

Exception โ€” product images: the GPLv3 license above covers this project's source code only. The Acer Predator/Nitro laptop photos under predator-sense-gui/resources/models/ are third-party product images (see Disclaimer above) and are not covered by the GPLv3 grant; all rights in those images remain with Acer Inc. and/or the original photographers.

This software is provided "as is", without warranty of any kind. The authors are not responsible for any damage that may occur from using this software. By installing and using this software, you acknowledge that you do so at your own risk.

About

๐ŸŽฎ Predator Sense for Linux โ€” Unofficial hardware control for Acer Predator/Helios/Nitro gaming laptops. RGB keyboard, GPU monitoring, performance profiles, fan control. Built with Rust + GTK4.

Topics

Resources

Stars

32 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

0