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

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages