#!/bin/bash | |
# cpustatus | |
# | |
# Prints the current state of the CPU like temperature, voltage and speed. | |
# The temperature is reported in degrees Celsius (C) while | |
# the CPU speed is calculated in megahertz (MHz). | |
function convert_to_MHz { | |
let value=$1/1000 | |
echo "$value" | |
} | |
function calculate_overvolts { | |
# We can safely ignore the integer | |
# part of the decimal argument | |
# since it's not realistic to run the Pi | |
# at voltages higher than 1.99 V | |
let overvolts=${1#*.}-20 | |
echo "$overvolts" | |
} | |
temp=$(vcgencmd measure_temp) | |
temp=${temp:5:4} | |
volts=$(vcgencmd measure_volts) | |
volts=${volts:5:4} | |
if [ $volts != "1.20" ]; then | |
overvolts=$(calculate_overvolts $volts) | |
fi | |
minFreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq) | |
minFreq=$(convert_to_MHz $minFreq) | |
maxFreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq) | |
maxFreq=$(convert_to_MHz $maxFreq) | |
freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) | |
freq=$(convert_to_MHz $freq) | |
governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor) | |
echo "Temperature: $temp C" | |
echo -n "Voltage: $volts V" | |
[ $overvolts ] && echo " (+0.$overvolts overvolt)" || echo -e "\r" | |
echo "Min speed: $minFreq MHz" | |
echo "Max speed: $maxFreq MHz" | |
echo "Current speed: $freq MHz" | |
echo "Governor: $governor" | |
exit 0 |
This comment has been minimized.
This comment has been minimized.
Cool. Thanks for sharing :) |
This comment has been minimized.
This comment has been minimized.
To get it working on my openelec 3.0.6 I had to change function declaration like this convert_to_MHz (){
let value=$1/1000
echo "$value"
}
calculate_overvolts () {
# We can safely ignore the integer
# part of the decimal argument
# since it's not realistic to run the Pi
# at voltages higher than 1.99 V
let overvolts=${1#*.}-20
echo "$overvolts"
} Otherwise I get this openelec:~ # bash -x cpustatus + function convert_to_MHz { cpustatus: line 1: function: not found + let value=/1000 cpustatus: let: line 1: arithmetic syntax error + echo cpustatus: line 11: syntax error: unexpected "}" EDIT: |
This comment has been minimized.
This comment has been minimized.
on ArchLinuxARM vcgencmd executable located in /opt/vc/bin, which is not in PATH by default. i put these lines in .bashrc: PATH=$PATH:/opt/vc/bin and then it works properly. |
This comment has been minimized.
This comment has been minimized.
On a raspberry pi2 I have this error executing this script: |
This comment has been minimized.
This comment has been minimized.
|
This comment has been minimized.
I had to use POSIX syntax to get this to work in OpenElec 3.0.6:
convert_to_MHz () {
let value=$1/1000
echo "$value"
}
calculate_overvolts () {
let overvolts=${1#*.}-20
echo "$overvolts"
}
Handy script though, thanks.