Skip to content

OmenMon v1.4.0: Goodbye WinRing0, hello PawnIO

Choose a tag to compare

@seakyy seakyy released this 17 May 11:54
02bde58

The Defender prompt is gone. OmenMon-Reborn no longer ships the WinRing0 kernel driver. The kernel-mode access layer has been replaced with PawnIO, whose Microsoft-signed, HVCI-compatible driver does not trigger Windows Defender.

This is the biggest release since the fork started, with three coordinated goals: kill the AV false positive permanently, fix every regression and user-reported bug from the first week of field testing, and ship a diagnostic toolkit so future bug reports take minutes to triage instead of hours.

⚠️ One-time setup step before upgrading

OmenMon no longer installs its own kernel driver. You need to install PawnIO once:

  1. Download and install PawnIO from https://pawnio.eu/ (signed MSI, no Defender warning, ~10 MB).
  2. Drop the new OmenMon.exe over your existing copy.
  3. Run as Administrator.

That's it — you won't be asked to allow a kernel driver any more, and Windows Defender won't flag the install. Your existing OmenMon.xml, OmenMon-AutoCal.xml, and fan-program XMLs are fully forward-compatible.


✨ What's New & Major Highlights

🔐 PawnIO Migration — Defender flagging is permanently fixed (#1)

WinRing0.sys had a public CVE in older versions and a generic ring-0 surface that triggered Defender heuristics on every install. PawnIO instead ships a single Microsoft-signed driver shared across applications; modules are sandboxed Pawn bytecode that the driver verifies against the maintainer's RSA-2048 key before loading.

  • Result: Install PawnIO once and the Defender prompt is gone forever. HVCI / Memory Integrity compatibility comes for free.

🧪 New Diagnostic Toolkit (Telemetry-Free)

Three coordinated additions to make bug reports vastly easier to triage. Nothing is ever uploaded. No network code anywhere; files sit on disk until you choose to attach them to a GitHub issue.

  • Crash Dumper: Hooks into fatal exceptions at the earliest possible point. Any fatal crash writes an OmenMon-crash-yyyy-mm-dd-HHmmss.log next to the executable containing the full exception chain and diagnostic bundle.
  • OmenMon.exe -Diag: Produces a Markdown bundle with OmenMon version, OS version, PawnIO driver status, resolved model preset, AutoCal sidecar contents, and an EC read/write trace covering the last few minutes.
  • "Copy Diagnostic Info" (Tray Menu): One-click clipboard copy of the diagnostic bundle for easy pasting into GitHub issues.

📋 New Native Model Entries

ProductId Device Issue
8C30 HP Victus 15-fb1000 (2023, AMD) — Includes the firmware-freeze-at-100% guard #32
8D26 HP Omen 16-ap0007ns (2026) #52
88EB HP Victus 16 (2021) — Earliest Victus 16 generation #48

🔧 Bug Fixes & Improvements

Fan Control & Calibration

  • Fan calibration now actually reaches max speed (#40, #41, #52): The Auto-Calibration Wizard's "100% step" was systematically under-driving fans by ~30% on multiple boards because manual mode pins fans at a configured rate ceiling. The wizard now explicitly disengages manual mode immediately before the 100% step to reach true max RPM.
  • Fan programs no longer leave the GPU fan stuck off (#39): On some boards (notably 8D07), a prior SetOff(true) stayed latched in the EC. Hardware/FanProgram.SetFanLevel now correctly clears the fan-off latch before each level write, ensuring custom curves reach both fans reliably.
  • HP Omen 8DD0 no longer reports "50000 RPM" (#33): The heuristic occasionally misfired on this board. Added a built-in AutoCal.Prime mapping for 8DD0 pointing at the canonical 0xB0/0xB2 LE16 tachometers.
  • Stale sidecars from v1.3.x no longer override built-in mappings: AutoCal.Load now discards any sidecar whose offset/mode disagrees with the curated KnownBoards table. Users upgrading from v1.3.x automatically get the correct mapping on first launch.
  • Tray "Max fan" toggle fix: Stayed silently off when the fan-off latch was set. It now clears SetOff(false) before SetMax(true).
  • GUI "Constant speed" fix: Restored the post-write mode-refresh when a user cancels the 100% safety dialog and falls back to safe levels.

App Stability & UI

  • Transcend 14 "BIOS call failed: 4" crash on launch fixed: Benign BIOS return codes (1, 4, 6, and 46) indicating "command not supported on this platform" previously escalated to fatal BiosExceptions. They are now silently ignored, allowing the GUI to open normally on newer hardware.
  • Omen key toggles the main window again (#21): Pressing the Omen key while OmenMon is running fires an IPC message that flips the main window's visibility, restoring the original upstream behavior.
  • Build Error Fixed: Removed a leftover call to a non-existent UpdateFanMode() that prevented compiling on clean checkouts.

🧹 Under the Hood (Developer Notes)

  • EC Read/Write Ring Buffer: Records the last 1024 EC operations (timestamp, register, value, op kind) into a lock-free circular buffer. Surfaces through both the crash log and -Diag to help diagnose intermittent issues (like random fan spikes).
  • Automated CI Testing (#36): CI now runs dotnet test against a new xUnit suite that enumerates every <Model> entry in OmenMon.xml and validates required registers, byte ranges, and semantics.
  • Driver Layer Rewrite: Driver/Ring0.cs was rewritten to delegate to PawnIO while keeping its full public API byte-compatible with v1.3.x. Hardware/Ec.cs and every other caller compile and run unchanged.
  • New Documentation: * docs/DEV_NOTES_v1.4.0.md covers the architecture of the PawnIO migration.
    • Resources/PAWN_BUILD.md details operational docs for the embedded PawnIO module.

🙏 Thanks to the contributors

Bug reports and field-test data from:
@ShaqibK (#1), @eyzinox (#28), @NotDarkn (#32), @DreamStare0 (#33), @Byteme-dot (#37), @ghend-oss (#39, #40), @MartinSalg818 (#41), @deadpoolstark (#48), @ethernetme (#52), and the Transcend 14 user on Discord.

A separate thanks to namazso — author of PawnIO and the signed LpcACPIEC module that makes the whole migration possible.


Security Verification (SHA256):
9AA57EDF4138318BD48F835893D6F895C8C762A41E5776256EADD60DC63A773D