Ohman talks to the HP BIOS mailbox (hpqBIntM), which every OMEN and Victus laptop exposes. What differs
between models is which commands the firmware answers and which bytes each performance mode wants. That is
the only model-specific thing in the app, and it lives in one table: src/Platform.cs.
Every OMEN and Victus laptop is supported, and there is no "unsupported" list. A board nobody has ever seen still runs: Ohman reads the firmware's own system-design data, works out which generation it is, and drives it with the mode bytes documented for that generation. Power, GPU and lighting appear only where the firmware answers for them. If it answers with nothing usable, Ohman stays read-only and says so in the window.
A model becomes verified once somebody has run the checklist below on that exact board and every control did what it says. Its settings are then fixed rather than worked out at run time.
One table per firmware generation, because the generation is what decides the mode bytes. Marketing names are approximate: HP reuses a board across several SKUs, so the board id is the only thing that identifies a machine exactly.
A ✓ marks a board an owner has confirmed. Everything else still runs, Ohman reads the firmware's own system-design data and drives the board with the bytes for its generation, it has simply not been confirmed by a person yet. See Verifying your laptop, it takes five minutes.
8C58 is the reference machine: Core Ultra 9 185H + RTX 4070, checked byte for byte against OMEN Gaming Hub
1101.2608, which is where the mode bytes, the fan curve and the GPU payloads in src/Platform.cs come from.
| Model | Board ids |
|---|---|
| OMEN Transcend 14 (2024) | 8C58 ✓ |
| OMEN Transcend 14 (2025) | 8E41 |
| OMEN Transcend 16 (2023–2025) | 8BB3 ✓, 8C3B, 8C4D |
| Model | Board ids |
|---|---|
| OMEN 16 (2021–2022) | 8A42, 8A43, 8A44, 8A4C ✓, 8A4D |
| OMEN 16 (2023–2025) | 8BA9, 8BAA, 8BAB ✓, 8BCA ✓, 8BCD ✓, 8C76 ✓, 8C77, 8C78, 8D24, 8D26, 8D2F ✓, 8E35 ✓ |
| OMEN MAX 16 (2025) | 8D41, 8D87 ✓, 8D88 |
Other boards hp-wmi lists as OMEN |
8DD6 |
| Model | Board ids |
|---|---|
| OMEN 15 (2019, 15-dc / 15-dh) | 8574, 8600 |
| OMEN 17 (2019, 17-cb0) | 8603 |
| OMEN 15 (2020) | 8A15 |
| OMEN 15 / 17 (2021) | 8BAD ✓ |
| OMEN 17 (17-db1xxx) | 8E10 ✓ |
| HyperX OMEN 15-gb0xxx (2026) | 8EEC ✓ |
| OMEN 15 / 17, 2018–2021 generations | 84DA, 84DB, 84DC, 8572, 8573, 8575, 8601, 8602, 8604, 8605, 8606, 8607, 860A, 8746, 8747, 8748 ✓, 8749, 874A, 8786, 8787 ✓, 8788, 878A, 878B, 878C, 87B5, 886B, 886C, 88C8, 88CB, 88D1, 88D2 ✓, 88F4, 88F5, 88F6, 88F7, 88FD, 88FE, 88FF, 8900, 8901, 8902, 8912 ✓, 8917, 8918, 8949, 894A, 89EB |
Victus firmware uses different mode bytes from OMEN: 0x00 default, 0x01 performance, 0x03 quiet. Ohman
writes those bytes only for the boards the Linux hp-wmi driver names, because that is the only place they
are written down:
| Model | Board ids | Mode bytes |
|---|---|---|
| Victus 16 (2021–2023) | 88F8, 8A25 ✓ |
from hp-wmi |
| Victus 15-fb0xxx | 8A3D |
from hp-wmi, no quiet mode |
| Victus 16-r0xxx | 8BC2 ✓ |
OMEN bytes; hp-wmi lists it as OMEN despite the name |
| Victus 16 S / R (2023–2024) | 8B2F, 8BBE ✓, 8BD4, 8BD5 ✓, 8C99, 8C9C ✓ |
from hp-wmi, no quiet mode |
| Victus 15 and 16, other models | 88D9, 88DA, 88EE ✓, 8A26 ✓, 8A3E, 8BB1 ✓, 8C2F, 8C30, 8C3F, 8D07, 8DCD, 8DCF ✓, 8E5C ✓, 8E5E |
from the firmware |
"from the firmware" is the same path every unlisted OMEN takes: Ohman asks the board which firmware generation
it is and drives it with that generation's bytes. On a v0 Victus that includes the quiet byte 0x03 for Eco:
OMEN Gaming Hub sends it on 8DCD, and on 8E5C (Victus 15-fa2xxx, 2025) the owner found Eco, Balanced and
Performance each change the fans. The kernel's own Victus 16-r0xxx entry takes OMEN bytes despite the
name, so the badge on the lid does not decide this, only a readback from the machine does.
On the Victus S boards Eco and Balanced send the same byte, 0x00, which is what hp-wmi does too: the kernel
tells its low-power and balanced profiles apart only by GPU power (cTGP off and PPAB off, against PPAB on). Ohman
does the same when GPU power is left on Auto, which follows the mode. On 8C9C (Victus 16-s1xxx, 2024) the owner
confirmed Max, Manual, Curve, Auto, power gain and GPU power; its keyboard is white-only.
8A3D is the exception and shows how this gets settled: it is a Victus 15-fb0xxx, and it reached hp-wmi
in July 2026 because one owner ran the fan table query on theirs and sent the readback to the kernel list.
Board 8C2F is reported to be shared between the 15" and 16" chassis, so even a board id is not always one
machine.
The v0 byte set has one default (0x00), one performance (0x01) and one cool (0x02), there is no
separate low-power byte, so Eco and Balanced are the same byte and only Performance behaves differently.
This is how the firmware is documented, not a bug, and hp-wmi maps low power to default on these boards for
the same reason. Turning on quieter Eco in Settings makes Eco send 0x02 instead, which does differ.
Board 8EEC is a 2026 machine that still reports v0, so this is not only an old-laptop concern.
Open Ohman and look at the top right of Settings, or run:
(Get-CimInstance Win32_BaseBoard).Product
This takes about five minutes and it is the most useful thing you can contribute.
- Modes. Switch Eco → Balanced → Performance. The fans should audibly change within a few seconds, and the chassis reading on the Home page should drift. If nothing changes on any mode, say so.
- Fans. Try Max (both fans should go loud), then Manual (set 50%, the reading should land near half of your maximum), then Curve (drag a point up, the fans should follow within one ramp delay), then Auto.
- Power gain. If the row is there, move it to +15 W and check that nothing throttles or resets.
- GPU power. If the row is there, try each of Base / Boost / Max.
- Graphics. If your machine offers Discrete or iGPU only, do not switch it unless you are willing to restart. If you do, confirm it comes back correctly.
- Lighting. If your keyboard lights, check that the zones in the app match the zones on the keyboard, and that Static, Breathe, Cycle and Wave all do something.
- Driver (optional, but the most useful single thing on a new board). Settings → Driver → Install. Then run
tools\drivertest.cmd. It says whether the CPU's own registers answer on your chip, and whether your embedded controller is laid out the way the map expects, the line to look for isec fan rpmbesidemailbox 0x2D, which should agree within a few percent. Attachtools\drivertest.txttoo. Nothing is written to your EC either way; the check is read-only. - Exit. Close Ohman and confirm the fans return to the firmware's own behaviour within two minutes and nothing is stuck.
Then run:
tools\support-info.cmd
and open a Verify my laptop issue
with tools\support-info.txt attached and a line per step above. The file contains the model, board id, BIOS
version, the firmware's system-design bytes, the fan table and the OMEN key event id. No personal data, no
serial numbers.
HP's firmware lighting interface answers on these boards and drives nothing at all, so Ohman uses the keyboard's own HID lighting interface instead. That part is written against a published standard but is unverified: nobody working on Ohman has a per-key machine. Run this, which writes nothing and changes nothing:
Ohman.exe --lamps
and open an issue with what it prints. It reports how many lamps your keyboard has, where each one is, and which key each one lights. That is everything needed to confirm the feature works.
Open a New laptop support issue with the same file, what OMEN Gaming Hub shows for the same control, and, if you can get it, OGH's own background 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, and it is the fastest route to an exact profile for any other model.
A laptop is one entry in Platforms.Known 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 (fan ranges, mode bytes, which features exist) either has a sane default on
PlatformProfile or is read from the firmware at run time. Override only what the evidence says is
different, and put the evidence in Notes.