Skip to content

CapFrameX v1.8.7 beta

Pre-release
Pre-release

Choose a tag to compare

@DevTechProfile DevTechProfile released this 14 Jun 10:13

Release Notes

⚠️ Pre-release — v1.8.7 Beta. This is a preview build focused on PMC Reader Plugin reliability and overlay frametime accuracy. Please report any issues so they can be addressed before the final v1.8.7 release.

Enhancements & New Features

  • Reworked WinRing0 kernel driver management for the PMC Reader Plugin. CapFrameX now bundles the WinRing0 driver and manages its full lifecycle automatically — extracting and installing the bundled CapFrameX_WinRing0x64.sys, reusing an already-running WinRing0 service, reclaiming a stale CapFrameX driver registration and retrying, and optionally using a user-provided driver. This makes low-level PMC/MSR access considerably more robust across different system configurations.
  • PMC Reader Plugin diagnostics logging is now routed into the CapFrameX application log. Driver extract/install/open/reclaim steps and MSR access failures are reported with actionable messages (e.g. service not installed / disabled / marked for deletion, missing .sys file, driver signature or image-hash rejection, or blocking by Memory Integrity / HVCI / the vulnerable-driver blocklist), making it far easier to understand why PMC sensors show no data.

Bugfixes

  • PMC Reader Plugin failed to load from downloaded builds. When CapFrameX.PmcReader.Plugin.dll was extracted from a downloaded zip or installer, Windows tagged it with the "Mark of the Web" and .NET's Assembly.LoadFrom refused to load it (NotSupportedException, HRESULT 0x80131515). The plugin is now loaded with Assembly.UnsafeLoadFrom, so it works without having to manually unblock the file.
  • Intel "WriteMsr IOCTL FAILED". Fixed a PMC Reader failure when writing performance-counter MSRs on Intel CPUs.
  • Overlay frametime value/graph inconsistency. The overlay frametime text and the frametime value shown next to the frametime graph are now consistent with the displayed FPS value. The frametime is derived from the same windowed framerate (1000 / FPS) instead of the last single-frame sample, so the number, the graph label, and the FPS reading agree. (GitHub issue #394)

Platform & Infrastructure

  • WinRing0 driver lifecycle hardening (extract / install / open / reclaim / cleanup) in the PMC Reader Plugin, with richer failure diagnostics surfaced in the application log.

Runtime Requirements

  • .NET 9 is required for full feature support and optimal stability. Download here.

MCP Server: Setting up Claude Code communication

CapFrameX ships an in-process Model Context Protocol server hosted by CapFrameX.exe. Once registered with Claude Code, the assistant can read captures, compute statistics, query the live system, and diagnose capture issues. Since v1.8.6, the assistant can also control captures (start/stop) and modify the configuration (AppSettings, overlay entries, logged sensors) via dedicated tools. The endpoint exists only while CapFrameX is running.

Setup

  1. Find the port. Open %appdata%/CapFrameX/Configuration/AppSettings.json and read WebservicePort (default 1337; CapFrameX falls back to a free port if it's taken).

  2. Register with Claude Code (one-time, user-scoped):

    claude mcp add -s user capframex --transport http http://localhost:<port>/mcp
  3. Verify:

    claude mcp list

    Expected: capframex: http://localhost:<port>/mcp (HTTP) - ✓ Connected

In an active session, /mcp shows live status and the CapFrameX tools become available to the model.

Troubleshooting

  • Disconnected / connect failure — CapFrameX isn't running, or the port changed since you registered. Re-check WebservicePort, then:
    claude mcp remove capframex
    claude mcp add -s user capframex --transport http http://localhost:<new-port>/mcp
  • Tools missing in the model — start a new Claude Code session; existing sessions don't pick up newly added servers.
  • Disable entirely — set McpEnabled to false in AppSettings.json and restart CapFrameX.

Note: the tool set is no longer read-only — it includes capture control and configuration write tools. The endpoint binds to localhost without auth.

CapFrameX PMC Reader Plugin

The PMC Reader Plugin extends CapFrameX with low-level CPU performance monitoring counters (PMC) by reading Model Specific Registers (MSRs) directly. It exposes CPU cache and memory metrics — such as L3 cache hit rates, DRAM bandwidth, and DRAM latency — that are not accessible through standard OS APIs.

New in v1.8.7 Beta: the WinRing0 kernel driver management has been reworked for greater reliability, the plugin now loads even when Windows marks the downloaded DLL as blocked (no manual "Unblock" needed), and driver/MSR diagnostics are written to the CapFrameX application log to make troubleshooting easier.

Note — who this is for: This is not an everyday tool for typical users. Reading raw CPU performance counters requires a kernel driver, a willingness to adjust Windows security settings, and an understanding of what the metrics actually mean. The plugin is aimed at technically inclined enthusiasts and hardware reviewers who need cache- and memory-level insight — for example to analyze gaming performance, compare CPU architectures, or investigate memory bottlenecks. If you just want frame-time capture, you don't need this plugin.

Supported CPUs

Vendor Architecture
AMD Zen 4, Zen 5
Intel Alder Lake, Raptor Lake (Refresh), Arrow Lake

Sensors

Base Sensors (all supported CPUs)

Sensor Unit Description
CPU L3 Hit Rate % Overall L3 cache hit rate
CPU DRAM Bandwidth GiB/s Total DRAM read + write bandwidth
CPU DRAM Latency ns DRAM access latency

Per-CCX Sensors (AMD multi-CCX CPUs)

Sensor Unit Description
CPU L3 Hit Rate CCX {i} % L3 cache hit rate per CCX
CPU DRAM Latency CCX {i} ns DRAM access latency per CCX

Gaming Sensors — P-Cores (Intel hybrid CPUs)

Sensor Unit Description
CPU P-Core IPC ratio Instructions per clock
CPU P-Core L3 Hitrate % L3 cache hit rate
CPU P-Core L3 Bound % Cycles stalled on L3
CPU P-Core Mem Bound % Cycles stalled on memory
CPU P-Core L3 Miss BW GiB/s L3 miss bandwidth

Gaming Sensors — E-Cores (Intel hybrid CPUs)

Sensor Unit Description
CPU E-Core IPC ratio Instructions per clock
CPU E-Core L3 Hitrate % L3 cache hit rate
CPU E-Core L3 Bound % Cycles stalled on L3
CPU E-Core Mem Bound % Cycles stalled on memory
CPU E-Core L3 Miss BW GiB/s L3 miss bandwidth

Installation

  1. Download CapFrameX.PmcReader.Plugin.dll from the release assets
  2. Copy the DLL into your CapFrameX installation folder
    Default path: C:\Program Files (x86)\CapFrameX
  3. Restart CapFrameX — the plugin sensors will appear automatically

As of v1.8.7 Beta you no longer need to right-click the DLL and choose Unblock — CapFrameX loads it even when Windows marks it as downloaded.

⚠️ Important

This plugin uses the WinRing0 kernel driver to access CPU MSRs. WinRing0 is blacklisted by Microsoft Windows Defender and may be flagged or blocked.
In the worst case, you may need to disable Windows Defender real-time protection for the kernel driver to work properly.
Use this plugin at your own risk.

Checklist — Getting WinRing0 to Actually Read the MSRs

Symptom: the plugin loads and the sensors appear, but they show no data, zeros, or frozen/constant values.

This almost always means the WinRing0 driver itself loaded successfully, but a hypervisor is intercepting and blocking the writes to the performance-counter MSRs at runtime. Work through this checklist before reporting a bug:

  • Disable virtualization-based security / hypervisor features (prime suspect).
    All of the following arm the Hyper-V hypervisor, which controls the PMU and intercepts writes to performance-counter MSRs. Turn off whichever you have enabled:

    • VBS (Virtualization-Based Security)
    • Core Isolation → Memory Integrity (HVCI)
    • Hyper-V
    • WSL2
    • Virtual Machine Platform
    • Windows Sandbox

    This is different from "HVCI blocking the driver from loading" — the driver does load, but the hypervisor forbids the MSR write at runtime.

  • Close hypervisor-based kernel anti-cheat.
    Kernel anti-cheat that runs its own hypervisor (e.g. Riot Vanguard vgk.sys, some EAC/Faceit setups) traps MSR accesses the same way. Fully exit it — note that some anti-cheat drivers load at boot and require a reboot after being disabled.

  • (Rare) Check BIOS/firmware.
    Some BIOS/firmware can disable the performance counters entirely. Make sure no relevant counter/monitoring option is turned off.

Tip: Changes to VBS / Memory Integrity / Virtual Machine Platform only take effect after a reboot, so restart Windows before re-testing.

CapFrameX Portable Mode

CapFrameX supports a portable mode that allows the application to run entirely from a single folder without writing to system directories. This is useful for running from USB drives, network shares, or keeping multiple isolated installations.

Portable mode is activated by placing a portable.json file in the same directory as the CapFrameX executable. See the v1.8.5 release notes for the full configuration reference, requirements, and behavior differences.

Troubleshooting & Known Issues

The following tips address the most common issues reported by users and can help resolve stability, overlay, and capture-related problems efficiently. We recommend working through them in order if you encounter unexpected behavior.

  1. Ensure you are running the latest version
    If you experience application crashes or unstable behavior, verify that you have installed CapFrameX v1.8.7 Beta or newer. Many known issues have been resolved in this build. If you were previously using version 1.7.7, we recommend uninstalling CapFrameX before installing the new version.

  2. Reset application settings
    In some cases, corrupted or outdated configuration files may cause problems. Deleting
    %appdata%/CapFrameX/Configuration/AppSettings.json
    will reset CapFrameX to its default settings and often resolves startup or UI-related issues.

  3. Reset overlay configuration files
    If overlay-related problems persist, try deleting the overlay configuration files located at
    %appdata%/CapFrameX/Configuration/OverlayEntryConfiguration_(0/1/2).json.
    These files will be recreated automatically on the next application start.

  4. Restore missing or zero-value overlay entries
    When overlay entries are missing or display constant zero values, open the Overlay tab and use the Reset button to restore all overlay entries to a valid default state.

  5. Fix incorrect overlay entry order
    If the order of overlay entries appears inconsistent or unintentionally rearranged, use the Sort button in the Overlay tab to restore a clean and logical ordering.

  6. Resolve frametime anomalies after updates
    In rare cases, existing background capture processes can interfere with CapFrameX after an update. If you encounter frametime issues, close all running PresentMon processes before installing or launching CapFrameX v1.8.7 Beta.

  7. Avoid conflicts with other monitoring tools
    Applications such as HWiNFO or AIDA64 that implement their own FPS or frametime metrics may conflict with CapFrameX's capture service, as they also rely on PresentMon-based mechanisms. Disabling overlapping FPS or frametime monitoring features in those tools is strongly recommended when using CapFrameX.

Known Limitations

  • PC latency metric may return invalid values (NaN) under specific conditions.
  • This is a beta build — expect rough edges in the reworked PMC Reader driver management and please report regressions.