#!/bin/bash # defines CPU_DIR="/sys/devices/system/cpu" GPU_DIR="/sys/class/kgsl/kgsl-3d0" # helper functions fileexists() { [ `adb shell "[ -f $1 ] && echo found"` ] } getprop() { if fileexists $1; then echo `adb shell cat $1 | tr -d '\r'` else echo "FILE $1 NOT FOUND" fi } setprop() { if fileexists $1; then adb shell "echo -n $2 > $1" else echo "FILE $1 NOT FOUND" fi } # setup echo if [[ "`adb shell id | tr -d '\r' | awk -F'[()]' '{print $2}'`" != "root" ]]; then adb root adb wait-for-device fi # device name echo Device: `adb shell getprop ro.product.model` echo # collect and count all cores frequency= frequencies= cores=`adb shell ls /sys/devices/system/cpu/ | grep cpu[0-9].* | tr -d '\r'` for core in $cores; do # display cpu echo "$core:" # display current status if fileexists $CPU_DIR/$core/online && [ `getprop $CPU_DIR/$core/online` -eq 0 ]; then echo " Status: OFFLINE" else echo " Status: ONLINE" fi # display available frequencies if fileexists $CPU_DIR/$core/cpufreq/scaling_available_frequencies; then frequencies=(`getprop $CPU_DIR/$core/cpufreq/scaling_available_frequencies`) elif fileexists $CPU_DIR/$core/cpufreq/stats/time_in_state; then frequencies=(`adb shell cat $CPU_DIR/$core/cpufreq/stats/time_in_state | cut -f1 -d " " | tr -d '\r'`) fi frequencies=( `printf "%s\n" "${frequencies[@]}" | sort -n` ) echo " Available Frequencies: ${frequencies[@]} (Hz)" # display current frequency if fileexists $CPU_DIR/$core/cpufreq/scaling_cur_freq; then frequency=`getprop $CPU_DIR/$core/cpufreq/scaling_cur_freq` fi echo " Current Frequency: $frequency (Hz)" done # poll gpu echo echo "GPU:" # get available gpu frequencies in sorted order if fileexists $GPU_DIR/devfreq/available_frequencies; then frequencies=(`getprop $GPU_DIR/devfreq/available_frequencies`) elif fileexists $GPU_DIR/gpu_available_frequencies; then frequencies=(`getprop $GPU_DIR/gpu_available_frequencies`) elif fileexists /d/clock/gbus/possible_rates; then frequencies=(`getprop /d/clock/gbus/possible_rates`) else echo " Unable to find available GPU frequencies" echo exit fi frequencies=( `printf "%s\n" "${frequencies[@]}" | sort -n` ) if [ ${frequencies[0]} == "(kHz)" ]; then frequencies=(`printf "%s000\n" "${frequencies[@]:1}"`) fi echo " Available Frequencies: ${frequencies[@]} (Hz)" # collect and print current gpu frequency if fileexists $GPU_DIR/max_gpuclk; then freq=`getprop $GPU_DIR/max_gpuclk` elif fileexists /d/clock/override.gbus/rate; then freq=`getprop /d/clock/override.gbus/rate` else echo "ERROR: unable to find current GPU frequency" exit fi echo " Current Frequency: $freq (Hz)" echo