Prometheus exporter changelog
v0.3.1 · Oct 19, 2026
Changed
- The process is named
ps5-exporter.elf. Started through an ELF loader's port it showed aspayload.elfin process lists such as pldmgr's and PayLoader's.
v0.3.0 · Oct 18, 2026
Added
- Power per rail.
ps5_power_rail_watts,_voltsand_amperesfor the 8 rails ofsceKernelGetSocPowerConsumption, andps5_power_watts, their sum (the SoC and its memory; not checked against a wall meter). Rail 0 is the GPU core. - Clocks.
ps5_soc_clock_hertz(26 domains; 20 is the GPU) andps5_cpu_core_clock_hertz. - The running game and its FPS.
ps5_game_info{title_id}andps5_fps, from the display's flip counter. - Memory and devices. Swap, wired memory and page tables; address, MAC and MTU per network interface; USB and disc drive power.
- Scrape timing.
ps5_exporter_scrape_secondsandps5_exporter_collect_seconds{group}. - Grafana. Panels for power (total and GPU), FPS, GPU and memory clocks, and power per rail.
- A version marker in the ELF file (
PS5EXPORTER_VER:0.3.0).
Changed
- CPU usage comes from the idle threads, per logical CPU (16).
- Getters beyond the SDK's own samples are looked up on first use. A function a firmware does not export now costs only its metric, instead of stopping the payload at load.
Fixed
- CPU usage was always empty:
sceKernelGetCpuUsageAllanswers0x80020016on 13.60. ps5_soc_power_wattswas never published. It is replaced by the rails;ps5_soc_power_raw_valuestays, deprecated, for readers of 0.2.0.
Notes
- Tested on one console: PS5 Pro (CFI-7121), firmware 13.60. Other firmware: likely, not verified.
- Tools that read only the first word of the power call (shown as "SoC power") show rail 0, the GPU core.
- Thanks to drakmor/ps5-hwinfo (power layout, clocks, CPU load), erickdavestech/ps5-hud-dualsense-overlay (telemetry notes), Common FPS for PS5 (the flip counter) and phantomptr/ps5upload (the call's buffer size).
Files
ps5-exporter.elf: the payload.ps5-exporter-grafana-dashboard.json: the dashboard.SHA256SUMS: checksums.
v0.2.0 · Oct 6, 2026
Fixed
- Buffer overflow when ShadowMount reported more games than fitted in the output buffer: the append helpers counted what they would have written instead of what they did, so the length ran past the capacity and the next collector wrote outside the buffer. All output now goes through one append-only buffer that cannot overflow, confirmed by a test with 900 games under AddressSanitizer.
- Per-core CPU usage printed the wrong value because the core index was missing from the format arguments.
- A slow client could hold the single-threaded server indefinitely: reading a request and writing a response now have wall-clock deadlines.
- An unusable listening socket (which suspending and resuming the console can cause) made the accept loop spin forever instead of rebinding.
- JSON parsing read past the end of the response on truncated escapes and short
true/falsevalues. - Per-process metrics were missing on firmware 13.60: its process records are 1096 bytes while the SDK header describes 1088, so the record size now comes from the kernel instead of the header.
Changed
ps5_fan_duty_percentandps5_cpu_usage_percentare nowps5_fan_duty_ratioandps5_cpu_usage_ratio(0 to 1, the Prometheus convention).ps5_fan_duty_rawis gone,ps5_soc_power_rawis nowps5_soc_power_raw_value.ps5_cpu_usage_rationo longer carries acore="all"sample: an aggregate inside the same family makessum()double-count. Useavg().- Process metrics are aggregated per executable name instead of per pid, which keeps the number of time series bounded. Adds
ps5_process_instances. - The ShadowMount game list is cached for five minutes and all its calls share a four second budget, so a scrape stays inside Prometheus' timeout.
/quitonly answers on loopback.- The version now comes from the Makefile, so the binary and the release tag cannot disagree.
Added
- Dashboard: the game library table now joins the per-title state onto the info metric, so names, platform and source show up; panels for metrics firmware 13.60 refuses say so instead of "No data".
ps5_filesystem_free_bytes,ps5_exporter_collector_success,ps5_shadowmount_games_cache_age_seconds,ps5_process_record_bytes,ps5_process_instances.make test: host tests with sanitizers, no console needed.
Added
- Fan speed (
ps5_fan_duty_percent, raw 0..1024 scale from the kernel). - Per-core CPU usage and the average (
ps5_cpu_usage_percent{core}). - SoC power draw and the lifetime counters: hours powered on and power cycles since new.
- Dashboard: SoC power and lifetime panels; the fan and CPU panels now have data.
- All SoC temperature sensors the kernel answers for (not only 0..3).
- Direct memory pool size and largest free block.
- Per-process CPU time and resident memory from the process table, checked against
ki_structsizeso a different kernel layout only drops them. - Dashboard: fan, CPU usage, top processes by CPU and by memory, direct memory panels (fan and CPU usage fill in once the exporter reports them).
make probe: development build with a/probe/<name>endpoint for working out undocumented kernel calls on hardware (not in releases).
Install: load ps5-exporter.elf with Payload Manager (add it to the autoload list) or send it to elfldr. Metrics on port 9100. Import ps5-exporter-grafana-dashboard.json in Grafana.
Verified on a CFI-7121, firmware 13.60: temperatures (17 sensors), fan speed, filesystems, direct memory, per-process CPU and memory, and the ShadowMountPlus storage and game list all work. Per-core CPU usage, SoC power and the lifetime counters are refused for payloads on this firmware; those metrics are left out and ps5_exporter_collector_success reports 0 for them rather than publishing guessed values.
v0.1.1 · Oct 4, 2026
Added
- Grafana dashboard (
grafana/ps5-exporter.json). ps5_infogets afirmwarelabel from the kernel version;system_version(the spoofable user-space value) stays alongside it.
Install: load ps5-exporter.elf with Payload Manager (add it to the autoload list) or send it to elfldr. Metrics on port 9100. Import grafana/ps5-exporter.json in Grafana.
v0.1.0 · Oct 4, 2026
Added
- Prometheus exporter payload serving
/metricson port 9100. - Temperatures (CPU, SoC sensors), CPU frequency, uptime, boot time, model and system version, filesystems, process count.
- ShadowMountPlus integration over its local JSON API: version, storage overview, game list with mounted/installed/source state.
/healthand/quitendpoints, a start-up notification with the port, and the port configurable by argument orEXPORTER_PORT.
Install: load ps5-exporter.elf with Payload Manager (add it to the autoload list) or send it to elfldr. Metrics on port 9100.
