From 2f3b2774f9fa78e1ed57731c2823e806aa8d682b Mon Sep 17 00:00:00 2001 From: Calin Crisan Date: Wed, 1 Nov 2017 23:26:21 +0200 Subject: [PATCH] raspberrypi (all): replace brownout script with proper throttle watcher --- .../overlay/etc/init.d/S11brownout | 38 ----------- .../overlay/etc/init.d/S11throttlewatch | 64 +++++++++++++++++++ .../overlay/etc/init.d/S11brownout | 38 ----------- .../overlay/etc/init.d/S11throttlewatch | 64 +++++++++++++++++++ .../overlay/etc/init.d/S11brownout | 38 ----------- .../overlay/etc/init.d/S11throttlewatch | 64 +++++++++++++++++++ 6 files changed, 192 insertions(+), 114 deletions(-) delete mode 100755 board/raspberrypi/overlay/etc/init.d/S11brownout create mode 100755 board/raspberrypi/overlay/etc/init.d/S11throttlewatch delete mode 100755 board/raspberrypi2/overlay/etc/init.d/S11brownout create mode 100755 board/raspberrypi2/overlay/etc/init.d/S11throttlewatch delete mode 100755 board/raspberrypi3/overlay/etc/init.d/S11brownout create mode 100755 board/raspberrypi3/overlay/etc/init.d/S11throttlewatch diff --git a/board/raspberrypi/overlay/etc/init.d/S11brownout b/board/raspberrypi/overlay/etc/init.d/S11brownout deleted file mode 100755 index 80a256d157..0000000000 --- a/board/raspberrypi/overlay/etc/init.d/S11brownout +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -check_interval=30 -readv=/sys/class/leds/led1/brightness - -test -e "$readv" || exit 0 - -test -n "$os_version" || source /etc/init.d/base - -watch() { - while true; do - if [ "$(cat $readv)" == "0" ]; then - logger -t brownout -s "low power supply voltage detected" - fi - sleep $check_interval - done -} - -case "$1" in - start) - msg_begin "Starting brownout detector" - watch & - test $? == 0 && msg_done || msg_fail - ;; - - stop) - msg_begin "Stopping brownout detector" - ps | grep brownout | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill - test $? == 0 && msg_done || msg_fail - ;; - - *) - echo $"Usage: $0 {start|stop}" - exit 1 -esac - -exit $? - diff --git a/board/raspberrypi/overlay/etc/init.d/S11throttlewatch b/board/raspberrypi/overlay/etc/init.d/S11throttlewatch new file mode 100755 index 0000000000..128da273bc --- /dev/null +++ b/board/raspberrypi/overlay/etc/init.d/S11throttlewatch @@ -0,0 +1,64 @@ +#!/bin/bash + +check_interval=30 + +test -n "$os_version" || source /etc/init.d/base + +get_throttled_now() { + t=$(vcgencmd get_throttled | cut -d '=' -f 2) + test $((t & 1)) -ne 0 && echo -n "under-voltage " + test $((t & 2)) -ne 0 && echo -n "arm-frequency-capped " + test $((t & 4)) -ne 0 && echo -n "throttled " +} + +get_throttled_since_boot() { + t=$(vcgencmd get_throttled | cut -d '=' -f 2) + test $((t & 65536)) -ne 0 && echo -n "under-voltage " + test $((t & 131072)) -ne 0 && echo -n "arm-frequency-capped " + test $((t & 262144)) -ne 0 && echo -n "throttled " +} + +watch_now() { + while true; do + t=$(get_throttled_now) + if [ -n "$t" ]; then + logger -t throttlewatch -s "currently: $t" + fi + + sleep $check_interval + done +} + +watch_since_boot() { + while true; do + t=$(get_throttled_since_boot) + if [ -n "$t" ]; then + logger -t throttlewatch -s "since boot: $t" + break + fi + + sleep $check_interval + done +} + +case "$1" in + start) + msg_begin "Starting throttle watcher" + watch_now & + watch_since_boot & +10 test $? == 0 && msg_done || msg_fail + ;; + + stop) + msg_begin "Stopping throttle watcher" + ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill + test $? == 0 && msg_done || msg_fail + ;; + + *) + echo $"Usage: $0 {start|stop}" + exit 1 +esac + +exit $? + diff --git a/board/raspberrypi2/overlay/etc/init.d/S11brownout b/board/raspberrypi2/overlay/etc/init.d/S11brownout deleted file mode 100755 index 80a256d157..0000000000 --- a/board/raspberrypi2/overlay/etc/init.d/S11brownout +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -check_interval=30 -readv=/sys/class/leds/led1/brightness - -test -e "$readv" || exit 0 - -test -n "$os_version" || source /etc/init.d/base - -watch() { - while true; do - if [ "$(cat $readv)" == "0" ]; then - logger -t brownout -s "low power supply voltage detected" - fi - sleep $check_interval - done -} - -case "$1" in - start) - msg_begin "Starting brownout detector" - watch & - test $? == 0 && msg_done || msg_fail - ;; - - stop) - msg_begin "Stopping brownout detector" - ps | grep brownout | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill - test $? == 0 && msg_done || msg_fail - ;; - - *) - echo $"Usage: $0 {start|stop}" - exit 1 -esac - -exit $? - diff --git a/board/raspberrypi2/overlay/etc/init.d/S11throttlewatch b/board/raspberrypi2/overlay/etc/init.d/S11throttlewatch new file mode 100755 index 0000000000..128da273bc --- /dev/null +++ b/board/raspberrypi2/overlay/etc/init.d/S11throttlewatch @@ -0,0 +1,64 @@ +#!/bin/bash + +check_interval=30 + +test -n "$os_version" || source /etc/init.d/base + +get_throttled_now() { + t=$(vcgencmd get_throttled | cut -d '=' -f 2) + test $((t & 1)) -ne 0 && echo -n "under-voltage " + test $((t & 2)) -ne 0 && echo -n "arm-frequency-capped " + test $((t & 4)) -ne 0 && echo -n "throttled " +} + +get_throttled_since_boot() { + t=$(vcgencmd get_throttled | cut -d '=' -f 2) + test $((t & 65536)) -ne 0 && echo -n "under-voltage " + test $((t & 131072)) -ne 0 && echo -n "arm-frequency-capped " + test $((t & 262144)) -ne 0 && echo -n "throttled " +} + +watch_now() { + while true; do + t=$(get_throttled_now) + if [ -n "$t" ]; then + logger -t throttlewatch -s "currently: $t" + fi + + sleep $check_interval + done +} + +watch_since_boot() { + while true; do + t=$(get_throttled_since_boot) + if [ -n "$t" ]; then + logger -t throttlewatch -s "since boot: $t" + break + fi + + sleep $check_interval + done +} + +case "$1" in + start) + msg_begin "Starting throttle watcher" + watch_now & + watch_since_boot & +10 test $? == 0 && msg_done || msg_fail + ;; + + stop) + msg_begin "Stopping throttle watcher" + ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill + test $? == 0 && msg_done || msg_fail + ;; + + *) + echo $"Usage: $0 {start|stop}" + exit 1 +esac + +exit $? + diff --git a/board/raspberrypi3/overlay/etc/init.d/S11brownout b/board/raspberrypi3/overlay/etc/init.d/S11brownout deleted file mode 100755 index 80a256d157..0000000000 --- a/board/raspberrypi3/overlay/etc/init.d/S11brownout +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -check_interval=30 -readv=/sys/class/leds/led1/brightness - -test -e "$readv" || exit 0 - -test -n "$os_version" || source /etc/init.d/base - -watch() { - while true; do - if [ "$(cat $readv)" == "0" ]; then - logger -t brownout -s "low power supply voltage detected" - fi - sleep $check_interval - done -} - -case "$1" in - start) - msg_begin "Starting brownout detector" - watch & - test $? == 0 && msg_done || msg_fail - ;; - - stop) - msg_begin "Stopping brownout detector" - ps | grep brownout | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill - test $? == 0 && msg_done || msg_fail - ;; - - *) - echo $"Usage: $0 {start|stop}" - exit 1 -esac - -exit $? - diff --git a/board/raspberrypi3/overlay/etc/init.d/S11throttlewatch b/board/raspberrypi3/overlay/etc/init.d/S11throttlewatch new file mode 100755 index 0000000000..128da273bc --- /dev/null +++ b/board/raspberrypi3/overlay/etc/init.d/S11throttlewatch @@ -0,0 +1,64 @@ +#!/bin/bash + +check_interval=30 + +test -n "$os_version" || source /etc/init.d/base + +get_throttled_now() { + t=$(vcgencmd get_throttled | cut -d '=' -f 2) + test $((t & 1)) -ne 0 && echo -n "under-voltage " + test $((t & 2)) -ne 0 && echo -n "arm-frequency-capped " + test $((t & 4)) -ne 0 && echo -n "throttled " +} + +get_throttled_since_boot() { + t=$(vcgencmd get_throttled | cut -d '=' -f 2) + test $((t & 65536)) -ne 0 && echo -n "under-voltage " + test $((t & 131072)) -ne 0 && echo -n "arm-frequency-capped " + test $((t & 262144)) -ne 0 && echo -n "throttled " +} + +watch_now() { + while true; do + t=$(get_throttled_now) + if [ -n "$t" ]; then + logger -t throttlewatch -s "currently: $t" + fi + + sleep $check_interval + done +} + +watch_since_boot() { + while true; do + t=$(get_throttled_since_boot) + if [ -n "$t" ]; then + logger -t throttlewatch -s "since boot: $t" + break + fi + + sleep $check_interval + done +} + +case "$1" in + start) + msg_begin "Starting throttle watcher" + watch_now & + watch_since_boot & +10 test $? == 0 && msg_done || msg_fail + ;; + + stop) + msg_begin "Stopping throttle watcher" + ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill + test $? == 0 && msg_done || msg_fail + ;; + + *) + echo $"Usage: $0 {start|stop}" + exit 1 +esac + +exit $? +