This tool provides fan control for HP Omen Max, Victus and Omen laptops on Linux. It includes installer for a kernel driver patch (hp-wmi) to expose PWM controls and a userspace utility to manage fan curves, create watchdog that sets the fan configuration periodically and a simple stress test tool to see the fan curve in effect. It also allows periodically reversing the fan spin direction on supported boards to expel dust.
This tool includes a backported hp-wmi driver patch from the latest Linux kernel, which introduces native fan control support for many devices from the following models:
- HP Omen Max
- HP Victus
- HP Omen
The patch can be installed on versions before 6.20 as well.
Reference Kernel Commit: platform/x86: hp-wmi: add manual fan control for Victus S models
This program also includes a modification that sets the max speed according to calibration if the query to get the Max RPM fails for your device.
- Models: HP OMEN MAX 16-AH0xxxNT (8D41), HP OMEN Transcend 16-u1xxx (8C4D), OMEN by HP Gaming Laptop 16-xf0xxx (8BCA), HP Victus 16 s1xxx (8C9C), HP OMEN Transcend 16-u0xxx (8BB3)
- OS: Arch Linux 6.18, 6.19, 7.0, 7.1; Ubuntu 24.04 (HWE 7.0)
Would you like to add your model here? Create an issue with the "Tested Hardware" label and include these after successfully installing the patch and using the tool:
- Your laptop's board id (you can find it in /sys/class/dmi/id/board_name)
- Your kernel version (you can find it in /proc/version)
Clone the repository or download the latest source code from the Releases page.
git clone https://github.com/arfelious/omen-fan-control.git
cd omen-fan-control1. System Dependencies You must install kernel headers and build tools for the driver patch to compile.
-
Arch:
pacman -S linux-headers base-devel -
Debian/Ubuntu/Pop!_OS:
apt install linux-headers-$(uname -r) linux-headers-$(uname -r | sed 's/-[^-]*$/-common/') "linux-kbuild-$(uname -r | cut -d. -f1,2,3 | cut -d+ -f1)*" build-essentialNote: Debian and Ubuntu split kernel headers into multiple packages: an arch-specific one (
linux-headers-<version>-amd64), a common one (linux-headers-<version>-common), and a build scripts package (linux-kbuild-<version>). All must be installed for the module build to succeed.If you get a similar after installing the headers, try
sudo apt reinstall linux-headers-$(uname -r) linux-headers-$(uname -r | sed 's/-[^-]*$/-common/') "linux-kbuild-$(uname -r | cut -d. -f1,2,3 | cut -d+ -f1)*" build-essentialand reboot. -
CachyOS / Clang Kernels: The Makefile detects if your kernel was built with Clang/LLVM and passes the correct
LLVM=1flags to the build system. No extra configuration is needed.
2. Python Dependencies
You can install the required Python packages (click, PyQt6) via your package manager OR pip, preferably with a virtual environment.
-
Option A: Package Manager
- Arch:
pacman -S python-click python-pyqt6 - Debian/Ubuntu:
apt install python3-click python3-pyqt6
- Arch:
-
Option B: Pip
pip install -r requirements.txt
You can install the modified driver temporarily (current session) or permanently (DKMS-style patch).
# Permanent Installation (Recommended)
sudo python3 omen_cli.py install-patch permanent
# Temporary Installation (Until Reboot)
sudo python3 omen_cli.py install-patch temporaryFor proper curve control and watchdog operation, install the background service:
sudo python3 omen_cli.py service installYou can also install it from the settings page in the graphical interface.
A graphical interface is available for simpler configuration.
sudo python3 omen_gui.pyGUI Fan Curve
![]() |
|---|
The omen_cli.py script manages everything.
Check Status:
sudo python3 omen_cli.py statusPossible Settings
python omen_cli.py settings --helpCurrent Settings Configuration
python omen_cli.py settingsSet Settings (Moving Average Window, etc.):
sudo python3 omen_cli.py options --ma-window 10 --curve-interpolation smoothManual Fan Control:
# Set specific speed
sudo python3 omen_cli.py fan-control --mode manual --value 80%
# Set Curve Mode (requires service)
sudo python3 omen_cli.py fan-control --mode curve
# Set Auto (Default)
sudo python3 omen_cli.py fan-control --mode autoUsing Custom Curves:
sudo python3 omen_cli.py fan-control --curve-csv my_curve.csvWhere the csv file has values in temp, percent order
Temporary Settings (--no-save):
Use the --no-save flag to apply settings to the current session only. This prevents the utility from updating your persistent configuration file and is useful for one-off manual adjustments, hooks or scripts.
When using
--no-savein Manual or Auto modes, the utility will automatically stop the background service to prevent it from overwriting your temporary setting. However, in Curve mode, the service is kept running as it is required to process the temperature data and apply the fan curve.
sudo python3 omen_cli.py fan-control --mode manual --value 100% --no-saveDetailed Information for Commands
Commands provide detailed information when --help is passed with the command
python omen_cli.py fan-control --helpThis is currently the only Linux utility capable of recreating the fan cleaning routine. On supported laptops, it reverses fan spin direction to dislodge accumulated dust. The cleaning interval, manual cleanup, and further configuration can be done using the Fan Cleaner page. The page is not visible on unsupported hardware to prevent unexpected behavior.
Fan cleaning feature requires "acpi_call" module to be loaded. You can load it by running sudo modprobe acpi_call.
If you don't have the module installed:
sudo apt update
sudo apt install acpi-call-dkms
sudo modprobe acpi_callsudo pacman -S acpi_call-dkms
sudo modprobe acpi_callThis utility is part of an ongoing effort to bring more OMEN Gaming Hub features to Linux, you might also want to check this project out:
Omen RGB Linux: Per-key RGB lighting controller with GUI and SDK for OMEN laptops on Linux.
To remove the service and restore the original kernel driver:
-
Remove Service:
sudo python3 omen_cli.py service remove
-
Restore Driver:
sudo python3 omen_cli.py install-patch restore
This restores the original
.kofiles from the backups created during installation.
USE AT YOUR OWN RISK.
Modifying kernel drivers and manipulating thermal control systems can potentially damage your hardware or cause instability. This software is provided "as is" without warranty of any kind. This was tested on my personal hardware, and the used hp-wmi.c is a patched and modified version of the one in the Linux kernel, so your mileage may vary.
Acknowledgements
Probes:
Linux 6.20 Kernel HP-WMI Driver:
