Skip to content

julaub/StreamController-AMDGPUTop

Repository files navigation

AMD GPU Monitor for StreamController

Live graphs of your AMD GPU on a Stream Deck, powered by amdgpu_top.

thumbnail

Features

  • Live sparkline graphs rendered directly on the keys (pure PIL, no matplotlib)
  • Metrics: GFX / Memory / Media activity, Edge / Junction / VRAM temperature, power draw, VRAM & GTT usage, GPU & memory clocks, fan speed
  • Preset actions (GPU Activity, GPU Temperature, VRAM Usage, GPU Power) plus a fully configurable Custom GPU Graph
  • A ready-made "AMD GPU" dashboard page (6 graphs: activity, temperature, VRAM, power, GPU clock, fan) — pick it from StreamController's page dropdown
  • Per-key configuration: metric, GPU index (multi-GPU), time window (10 s – 5 min), line/fill colors, line width, dark background, dynamic or fixed y-axis, labels on/off
  • One shared collector for all keys — a single amdgpu_top process streams JSON once per second; history (10 min) is shared, so newly added keys immediately show past data
  • sysfs fallback: if amdgpu_top is not installed, data is read from /sys/class/drm/card*/device (works even inside the Flatpak sandbox)

Requirements

  • StreamController ≥ 1.5.0-beta.8
  • An AMD GPU using the amdgpu kernel driver
  • amdgpu_top on the host (optional but recommended; the Flatpak reaches it via flatpak-spawn --host)

Installation (manual)

git clone https://github.com/julaub/StreamController-AMDGPUTop.git
ln -s "$(pwd)/StreamController-AMDGPUTop" ~/.var/app/com.core447.StreamController/data/plugins/com_jul_AMDGPUTop

(For a non-Flatpak StreamController, the plugins folder is ~/.local/share/StreamController/plugins/ instead.)

Restart StreamController, then add one of the actions under AMD GPU Monitor to a key, or switch a deck to the bundled AMD GPU page.

How it works

gpu_data.py runs one background thread that streams amdgpu_top -J -s 1000 --no-pc (line-delimited JSON) and stores every metric in shared ring buffers. --no-pc skips the GRBM performance counters so the GPU's power-saving features stay active. If amdgpu_top can't be started, it falls back to polling sysfs/hwmon. graph_render.py draws the sparkline supersampled with PIL and downscales for antialiasing.

License

MIT (same as the StreamController PluginTemplate).

About

AMD GPU Stats for StreamController

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages