Skip to content

Repository files navigation

HP Omen Fan Control (Linux)

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.

Context

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:

  1. HP Omen Max
  2. HP Victus
  3. 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.

Tested Hardware

  • 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)

Installation

Clone the repository

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-control

Dependencies

1. 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-essential

    Note: 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-essential and reboot.

  • CachyOS / Clang Kernels: The Makefile detects if your kernel was built with Clang/LLVM and passes the correct LLVM=1 flags 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
  • Option B: Pip

    pip install -r requirements.txt

Install Driver Patch

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 temporary

Install Background Service

For proper curve control and watchdog operation, install the background service:

sudo python3 omen_cli.py service install

You can also install it from the settings page in the graphical interface.

Usage

GUI

A graphical interface is available for simpler configuration.

sudo python3 omen_gui.py

GUI Fan Curve

Omen Fan Control GUI

CLI

The omen_cli.py script manages everything.

Check Status:

sudo python3 omen_cli.py status

Possible Settings

python omen_cli.py settings --help

Current Settings Configuration

python omen_cli.py settings

Set Settings (Moving Average Window, etc.):

sudo python3 omen_cli.py options --ma-window 10 --curve-interpolation smooth

Manual 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 auto

Using Custom Curves:

sudo python3 omen_cli.py fan-control --curve-csv my_curve.csv

Where 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-save in 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-save

Detailed Information for Commands

Commands provide detailed information when --help is passed with the command

python omen_cli.py fan-control --help

Fan Cleaning

This 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:

Ubuntu / Debian / Pop!_OS

sudo apt update
sudo apt install acpi-call-dkms
sudo modprobe acpi_call

Arch Linux / Manjaro / CachyOS

sudo pacman -S acpi_call-dkms
sudo modprobe acpi_call

Related Projects

This 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.

Uninstallation

To remove the service and restore the original kernel driver:

  1. Remove Service:

    sudo python3 omen_cli.py service remove
  2. Restore Driver:

    sudo python3 omen_cli.py install-patch restore

    This restores the original .ko files from the backups created during installation.

Disclaimer

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:

About

HP Omen Max, Omen & Victus Fan Control CLI & GUI tool for Linux thermal management. Implements upcoming hp-wmi patches directly to allow manual fan controls. Allows reversing fan spin direction for dust cleanup on supported laptops.

Topics

Resources

Stars

37 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages