Skip to content

v0.3 - Add GDDR6 memory temperature monitoring

Choose a tag to compare

@github-actions github-actions released this 13 Sep 12:42
52d9e1c

Add GDDR6 memory temperature monitoring

Adds optional GDDR6 memory temperature monitoring for BC-250, based on pan-Rijovich/bc250-memory-temperature (MIT, see memory/UPSTREAM.md).

How it works: a separate root service (bc250-memory.service) patches SMU at startup and polls all 8 GDDR6 chips every 3s, writing a small snapshot file. The main apu_telemetry daemon validates and folds that snapshot into the existing /run/apu_telemetry.json / /api/telemetry output as a memory object — no JSON parser needed on the daemon side. All SMU/firmware-patching code stays isolated in the separate service; the always-privileged daemon only ever reads a plain text file.

What's included:

  • memory/ — the SMU patch/collector service (Python, stdlib only), with platform/payload validation and a per-boot operation guard against retrying a wedged SMU
  • memory_telemetry.h — parses and validates the collector's snapshot (bounds-checked, degrades to unavailable/stale on any anomaly)
  • Installer: --memory-temp / --no-memory-temp flags + interactive prompt, uninstall cleanup
  • Dashboard v2: memory panel with per-chip readings, board halos, hotspot/average, hidden entirely when the service isn't installed
  • Dashboard v1 (classic): compact GDDR6 row + per-chip grid in "Other sensors"
  • MangoHud / CoolerControl: hotspot + average exposed via /run/bc250/memory_*
  • Tests: tests/test_memory.py (offline, fake SMU/PCI/DMA), tests/test_v2_memory.js

Fully optional and backward-compatible: the memory field is always present in the API; when the collector isn't installed, both dashboards simply hide the panel instead of showing an empty widget.

Full Changelog: v0.2.0...v0.3