Initial Commit
This commit is contained in:
commit
ff6f5394ac
3 changed files with 229 additions and 0 deletions
68
amd-monitor.sh
Executable file
68
amd-monitor.sh
Executable file
|
|
@ -0,0 +1,68 @@
|
|||
#!/bin/bash
|
||||
# AMD Laptop APU + GPU Live Monitor for ASUS TUF (Debian 13)
|
||||
# Author: MarkMental
|
||||
|
||||
# --- Configuration ---
|
||||
APU_HWMON="/sys/class/hwmon/hwmon5" # APU sensor
|
||||
GPU_HWMON="/sys/class/drm/card0/device/hwmon/hwmon4" # dGPU sensor
|
||||
INTERVAL=1 # seconds between refreshes
|
||||
LOGFILE="power_log.csv" # CSV output file
|
||||
MAX_LINES=500 # limit to last 500 lines
|
||||
|
||||
# --- Helpers ---
|
||||
read_watts() {
|
||||
local file=$1
|
||||
if [ -f "$file" ]; then
|
||||
awk '{printf "%.2f", $1/1000000}' "$file"
|
||||
else
|
||||
echo "0.00"
|
||||
fi
|
||||
}
|
||||
|
||||
read_temp() {
|
||||
local file=$1
|
||||
if [ -f "$file" ]; then
|
||||
awk '{printf "%.1f", $1/1000}' "$file"
|
||||
else
|
||||
echo "N/A"
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Ensure CSV exists and has header ---
|
||||
if [ ! -f "$LOGFILE" ]; then
|
||||
echo "timestamp,apu_w,gpu_w,total_w,apu_temp,gpu_temp" > "$LOGFILE"
|
||||
fi
|
||||
|
||||
# --- Main loop ---
|
||||
clear
|
||||
echo "🧠 AMD APU / GPU Live Power Monitor (Debian 13 TUF)"
|
||||
echo "--------------------------------------------------"
|
||||
|
||||
while true; do
|
||||
APU_PWR=$(read_watts "$APU_HWMON/power1_input")
|
||||
GPU_PWR=$(read_watts "$GPU_HWMON/power1_average")
|
||||
APU_TEMP=$(read_temp "$APU_HWMON/temp1_input")
|
||||
GPU_TEMP=$(read_temp "$GPU_HWMON/temp1_input")
|
||||
TOTAL=$(awk -v a="$APU_PWR" -v g="$GPU_PWR" 'BEGIN {printf "%.2f", a+g}')
|
||||
TIME=$(date -Iseconds)
|
||||
|
||||
# --- Print live readout ---
|
||||
tput cup 2 0
|
||||
echo "APU Power: ${APU_PWR} W | Temp: ${APU_TEMP} °C "
|
||||
echo "GPU Power: ${GPU_PWR} W | Temp: ${GPU_TEMP} °C "
|
||||
echo "-----------------------------------------------"
|
||||
echo "Total Power: ${TOTAL} W"
|
||||
echo "Press Ctrl+C to exit"
|
||||
|
||||
# --- Append to CSV ---
|
||||
echo "$TIME,$APU_PWR,$GPU_PWR,$TOTAL,$APU_TEMP,$GPU_TEMP" >> "$LOGFILE"
|
||||
|
||||
# --- Keep only last $MAX_LINES lines ---
|
||||
LINES=$(wc -l < "$LOGFILE")
|
||||
if (( LINES > MAX_LINES )); then
|
||||
tail -n $MAX_LINES "$LOGFILE" > "${LOGFILE}.tmp" && mv "${LOGFILE}.tmp" "$LOGFILE"
|
||||
fi
|
||||
|
||||
sleep $INTERVAL
|
||||
done
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue