#!/bin/bash

# by olke <olke.ok@gmail.com> March 1st 2015
# Thanks to  Andrew Scheller http://www.andrewscheller.co.uk/
# Thanks to the other authors of http://elinux.org/RPI_vcgencmd_usage
# a little script instead of the no-working lm-sensors tool
#
# Commands for vcgencmd in firmware version 7789db485409720b0e523a3d6b86b12ed56fd152  (Pi 2 B)
# vcos, ap_output_control, ap_output_post_processing, pm_set_policy, pm_get_status, pm_show_stats
# pm_start_logging, pm_stop_logging, version, commands, set_vll_dir, led_control, set_backlight, 
# set_logging, get_lcd_info, set_bus_arbiter_mode, cache_flush, otp_dump, test_result, codec_enabled
# get_camera, get_mem, measure_clock, measure_volts, scaling_kernel, measure_temp, get_config,
# hdmi_ntsc_freqs, hdmi_adjust_clock, hdmi_status_show, hvs_update_fields, pwm_speedup, force_audio,
# hdmi_stream_channels, hdmi_channel_map, display_power, read_ring_osc, memtest, get_rsts, render_bar,
# disk_notify, inuse_notify, sus_suspend, sus_status, sus_is_enabled, sus_stop_test_thread, egl_platform_switch,
# mem_validate, mem_oom, mem_reloc_stats, vctest_memmap, vctest_start, vctest_stop, vctest_set, vctest_get
#


echo " This is not sensors from lm-sensors. It's a work-around ;-)"  
echo "Firmware Information"
vcgencmd version

echo
echo -ne "CPU-Temperatur\t"
vcgencmd measure_temp | sed -e 's#temp=##'


echo
echo "Frequenzen"
for src in arm core h264 isp v3d uart ; do echo -en "\t$src=$(vcgencmd measure_clock $src)" | sed -e 's,[:blank:]*frequency.*=,,' -e 's,[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]$,MHz   ,' -e 's,0$, none   ,'  ;done
echo
for src in pwm emmc pixel vec hdmi dpi ; do echo -en "\t$src=$(vcgencmd measure_clock $src)" | sed -e 's,[:blank:]*frequency.*=,,' -e 's,[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]$,MHz   ,'   -e 's,0$, none   ,' ;done

echo
echo "Spannungen"
for id in core sdram_c sdram_i sdram_p ; do  echo -en "\t$id=$(vcgencmd measure_volts $id)"  | sed -e 's,volt=,,'            ;  done

echo
echo "Speicher"
for mem in arm gpu ; do echo -en "\t$(vcgencmd get_mem $mem)" ; done
echo
FreeMem=$(fgrep MemFree /proc/meminfo  | sed -e 's,[[:digit:]][[:digit:]][[:digit:]] kB$,M, ' -e 's,^MemFree:[[:blank:]]*,free=, ')
echo -e "\t$FreeMem"


