Don't you love paying $2,500 for a laptop and still having ads pushed down your throat by mandatory software with no alternative? Ohman is the alternative. Modes, fan curves, power, graphics switching and keyboard lighting in one 1.3 MB executable, replacing OMEN Gaming Hub and OMEN Light Studio and speaking the same firmware interface, without any ads, services, or accounts.
| Modes | Eco · Balanced · Performance, one click, the OMEN key, or a hotkey. Each mode remembers its own fans, power gain and GPU choice, and the whole window takes that mode's colour. |
| Fans | Auto (this model's own curve), Max, Manual per fan, or your own curve: seven points you drag, a floor, a ramp delay, and a separate GPU curve if you unlink it. The live reading rides the curve. |
| Max fan | Full speed with a way back: it returns to Auto once the chips are below 60° for two minutes, or after 15, 30 or 60 minutes. |
| Power gain | OGH's "Smart Performance Gain": +0 to +15 W on the CPU+GPU budget NVIDIA Dynamic Boost draws from. |
| GPU power | Base · Boost · Max, or follow the mode. |
| Graphics | Hybrid, Discrete (the MUX) or iGPU only, whichever the firmware offers, with the restart it needs. |
| Lighting | The keyboard drawn as it actually lights. Select a key, a row, a zone or the whole board, then pick a hue and a shade; or Breathe, Cycle, Wave, or hand it to Windows Dynamic Lighting. One zone, four zones or per key, whichever your keyboard has. |
| Display | Refresh rate, and the lowest rate on battery if you want it. |
| Live | CPU and GPU temperature, CPU package watts, fan speeds, load, clocks, chassis sensor, battery. CPU temperature on the tray icon. |
| Tray | Modes, fan mode, the backlight, refresh rate and graphics, without opening the window. |
| OMEN key | Opens the panel, cycles modes, toggles max fan, or runs a command of your choice. OGH's key handler is stopped, reversibly. Shift+F11 cycles modes; Ctrl+Alt+E/B/P/M/O for the rest. |
| Safety | A thermal guard forces max fan on a hot CPU, a hot chassis or stalled fans. It can be switched off, with a warning. Levels between 1 and 1800 rpm are refused, because no fan holds them; 0 is allowed, and stops them. |
| Updates | A newer build is fetched in the background and waits. Restart into it when it suits you, from Settings or the rail. Nothing is installed behind your back. |
| Driver | Optional. One click in Settings installs PawnIO, the signed driver FanControl and LibreHardwareMonitor use. With it Ohman reads the CPU's own die temperature, power limits and throttle reasons, and on boards whose firmware refuses fan levels it sets them through the embedded controller instead. Without it, Ohman is exactly what it was. |
| Extras | Starts with Windows without a UAC prompt, Eco on battery, Windows power-mode sync, and an on-screen flash when a key changes something. |
Settings live in ohman.state, everything the app does goes to ohman.log. Both sit beside the executable.
To remove it: Uninstall in Settings. That undoes everything Ohman changed on the laptop, hands the fans and the keyboard back, re-enables OMEN Gaming Hub's tasks, deletes its own settings and log, and quits. Delete the folder afterwards and nothing of it is left.
Download Ohman.exe from Releases and run it. It asks for administrator rights,
because the firmware interface needs them. It starts with Windows from then on, which you can turn off in
Settings.
Or build it with the compiler that already ships inside Windows. No SDK, no NuGet, no toolchain:
build.cmd
preview\Ohman.exe is the same UI on simulated hardware and needs no administrator rights.
Every OMEN and Victus laptop is supported. Ohman asks the firmware what generation it is and drives it accordingly. Controls your firmware does not offer are hidden rather than broken.
OMEN 15, 16 and 17 · OMEN MAX 16 · OMEN Transcend 14 and 16 · Victus 15 and 16, including the S and R.
Note: Ohman was built and checked byte for byte against OMEN Gaming Hub on one machine, an HP OMEN Transcend 14 (2024, board 8C58). Owners have since run the checklist on their own boards and confirmed them; every model and its board ids are in docs/laptops.md.
Five minutes: run the checklist and
tools\support-info.cmd, then open a Verify my laptop issue with the file it writes. Everybody with that board then gets a profile that has been tested on a real machine instead of worked out from the firmware.
If a control is wrong on your model, open a New laptop support issue with the same file and, if you can get
it, OGH's own log from a session where you clicked every mode:
%LOCALAPPDATA%\Packages\AD2F1837.OMENCommandCenter_v10z8vjag6ke6\LocalCache\Local\HPOMEN\. That log is what
made the Transcend 14 profile exact.
HP exposes a BIOS mailbox as the WMI class hpqBIntM. Ohman uses the commands OGH uses: performance mode
(0x1A), max fan (0x27), fan levels (0x2E), CPU+GPU power budget (0x29), GPU power (0x22), graphics
mode (0x52), keyboard lighting (0x20009), plus read-only queries. The OMEN key arrives as a WMI event
(hpqBEvnt). Every byte and every measured firmware behaviour is written down in
docs/research.md, including the things that are not safe to do and why.
- The firmware forgets a user-defined fan state after about 120 seconds, so Ohman keeps renewing it. That is why it has to stay running to hold a curve. It never writes a level between 1 and 1800 rpm, because no fan holds one; 0 it will write, because that is off and HP's own tables ask for it.
- The thermal guard runs on its own ten-second timer and forces maximum fan whatever mode you picked.
- With the optional driver, the EC's own registers are reachable: the same map OmenMon and omen-fan use. Nothing is written to a controller until it has recognised its own registers on your machine, its control register holding a fan-control state, its temperature agreeing with the CPU's own sensor, its tachometers agreeing with the firmware. The 2025 OMEN MAX is never touched at all, because there the registers are somewhere else and writing these corrupts EC state. docs/research.md §12 has the registers and the reasons.
A verified laptop is one entry in src/Platform.cs:
new PlatformProfile {
Name = "HP OMEN 16 (2023, 16-wf0xxx)",
Boards = new[] { "8BAA" },
Notes = "Verified 2026-09-10 against OGH 1101.x logs."
}Everything else either has a default or is read from the firmware at run time. Override only what the evidence
says is different, and put the evidence in Notes. A support issue becomes exactly that entry and a pull
request; see CONTRIBUTING.md.
tools\support-info.cmd |
data for a support request |
tools\verify.cmd |
read-only check of every query the app uses, plus a key-event capture |
tools\lighttest.cmd |
read-only: every lighting device on the machine and which ones are switched on |
tools\drivertest.cmd |
read-only: why the driver is or is not working, and what it reads next to what Ohman had without it |
tools\powertest.ps1 |
A/B the power-gain slider on GPU watts and clocks |
tools\fantest.cmd |
holds the fans at zero for 60 s, then aborts on its own. Run it on a cool, idle machine |
tools\fanwatch.cmd |
writes a fan level every 5 s for 15 minutes and records what the firmware answered. For fans that stop responding during a game |
tools\modetest.cmd |
sends every known mode byte and watches the fans, for laptops where the modes do nothing |
tools\omenprobe.exe |
CLI for raw BIOS calls |
src\Platform.cs platform profiles: the only model-specific file
src\Hardware.cs the WMI/BIOS mailbox + simulated hardware
src\Lighting.cs keyboard lighting (0x20009) + the Windows Dynamic Lighting hand-over
src\Driver.cs the PawnIO driver: find, install, open, load a signed module, call it
src\Ec.cs the embedded controller through it: handshake, per-generation register map, fan hold
src\Cpu.cs the CPU's registers through it: die temperature, power limits, throttle reasons
src\Engine.cs settings, apply logic, keep-alive, thermal guard, OMEN key, OGH takeover
src\Sensors.cs perf counters + nvidia-smi
src\Curve.cs the fan-curve graph
src\Keyboard.cs the keyboard drawing
src\Ui.xaml, .cs window, pages, tray, hotkeys, on-screen flash
src\Program.cs entry point
fonts\ IBM Plex, embedded in the exe (OFL, see fonts\OFL.txt)
Pushing a v* tag builds on a Windows runner and attaches the binaries to a release.
- Configurable hotkeys, instead of the fixed set.
- A thermal guard you can set: the speed it goes to, next to the switch that turns it on, so it can be a rescue rather than always full fans.
- Benchmarking tab: run a short load and record clocks, watts, temperatures and throttling.
- Fan curve import/export so a verified model's curve can be shared as a file.
Ideas and issues are welcome.
While this has been tested extensively, it is still sending commands to your laptop's firmware. Use at your own risk.
Fable 5.1 was used for in-depth research on laptop models and their manuals so I can add extensive device support to Ohman. It also assisted in code-writing. The code has been independently verified and security reviewed. Feel free to review it on your own terms and suggest improvements if any.
GPL-3.0-or-later for the code. OFL 1.1 for the Font. LGPL-2.1 for the PawnIO modules embedded in the exe
(third_party\PawnIO.Modules, unmodified signed binaries from their author).
OMEN is a trademark of HP Inc. This project is not affiliated with HP.
