slitaz-arm annotate rpi/tazberry @ rev 58
Bunch og new stuff: more doc, st fixes, tazberry
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sat Mar 15 14:54:17 2014 +0100 (2014-03-15) |
parents | b946dc4f933a |
children | 45169f4d9df0 |
rev | line source |
---|---|
pankso@44 | 1 #!/bin/sh |
pankso@44 | 2 # |
pankso@44 | 3 # TazBerry - SliTaz Raspberry Pi Config Tool |
pankso@44 | 4 # |
pankso@44 | 5 # Copyright (C) 2014 SliTaz ARM - BSD License |
pankso@44 | 6 # Author: Christophe Lincoln <pankso@slitaz.org> |
pankso@44 | 7 # |
pankso@44 | 8 . /lib/libtaz.sh |
pankso@44 | 9 |
pankso@44 | 10 title="{ TazBerry }" |
pankso@44 | 11 config="/boot/config.txt" |
pankso@44 | 12 tmpdir="/tmp/tazberry" |
pankso@44 | 13 tmp="$tmpdir/$$" |
pankso@44 | 14 height="20" |
pankso@44 | 15 width="72" |
pankso@44 | 16 |
pankso@44 | 17 # Use a tmp directory |
pankso@44 | 18 mkdir -p ${tmpdir} |
pankso@44 | 19 |
pankso@44 | 20 # Small built-in help |
pankso@44 | 21 help() { |
pankso@44 | 22 cat << EOT |
pankso@44 | 23 |
pankso@44 | 24 $(boldify "$(gettext 'Usage:')") $(basename $0) [command|rpi_function] |
pankso@44 | 25 |
pankso@44 | 26 $(boldify "$(gettext 'Commands:')") |
pankso@44 | 27 oclock $(gettext 'Display overclocking information') |
pankso@44 | 28 ls-functions $(gettext 'List TazBerry functions') |
pankso@44 | 29 testsuite $(gettext 'Run TazBerry testsuite') |
pankso@44 | 30 |
pankso@44 | 31 EOT |
pankso@44 | 32 } |
pankso@44 | 33 |
pankso@44 | 34 # |
pankso@44 | 35 # RPi functions |
pankso@44 | 36 # |
pankso@44 | 37 |
pankso@58 | 38 # This could move to /usr/bin/slitaz-??? or some thing since it's not |
pankso@58 | 39 # ARM specific |
pankso@44 | 40 rpi_stats() { |
pankso@58 | 41 ip=$(ifconfig | fgrep -A 1 "encap:Ethernet" | fgrep "inet" | cut -d ":" -f 2) |
pankso@58 | 42 mem_total=$(free -m | fgrep "Mem:" | awk '{print $2}') |
pankso@58 | 43 mem_used=$(free -m | fgrep "Mem:" | awk '{print $3}') |
pankso@58 | 44 mem_used_pct=$(( ( ${mem_used} * 100) / ${mem_total} )) |
pankso@44 | 45 cat << EOT |
pankso@58 | 46 $(gettext 'Kernel') : $(uname -snrm) |
pankso@58 | 47 $(gettext 'Uptime') : $(uptime | awk '{print $3}' | sed s"/:/h /" | sed s"/,/min/") |
pankso@58 | 48 $(gettext 'Network IP') : $(echo $ip | awk '{print $1}') |
pankso@58 | 49 $(gettext 'CPU heat') : $(awk '{printf "%3.1f C\n", $1/1000}' /sys/class/thermal/thermal_zone0/temp) |
pankso@58 | 50 $(gettext 'Processes') : $(ps | wc -l) |
pankso@58 | 51 Memory usage : ${mem_used_pct}% |
pankso@44 | 52 EOT |
pankso@44 | 53 } |
pankso@44 | 54 |
pankso@44 | 55 rpi_turbo() { |
pankso@44 | 56 if ! fgrep -q 'force_turbo=1' ${config}; then |
pankso@44 | 57 gettext "Enabling Raspberry Pi force turbo..." |
pankso@44 | 58 echo "force_turbo=1" >> ${config}; status |
pankso@44 | 59 else |
pankso@44 | 60 gettext "Disabling Raspberry Pi force turbo..." |
pankso@44 | 61 sed -i '/force_turbo=1/'d ${config}; status |
pankso@44 | 62 fi |
pankso@44 | 63 } |
pankso@44 | 64 |
pankso@44 | 65 # RPi Overclocking |
pankso@44 | 66 rpi_oclock() { |
pankso@44 | 67 cat << EOT |
pankso@44 | 68 none 700MHz ARM 250MHz core 400MHz SDRAM 0 overvolt |
pankso@44 | 69 modest 800MHz ARM 300MHz core 400MHz SDRAM 0 overvolt |
pankso@44 | 70 medium 900MHz ARM 333MHz core 450MHz SDRAM 2 overvolt |
pankso@44 | 71 high 950MHz ARM 450MHz core 450MHz SDRAM 6 overvolt |
pankso@44 | 72 turbo 1000MHz ARM 500MHz core 500MHz SDRAM 6 overvolt |
pankso@44 | 73 EOT |
pankso@44 | 74 } |
pankso@44 | 75 |
pankso@44 | 76 # |
pankso@44 | 77 # GUI Functions |
pankso@44 | 78 # |
pankso@44 | 79 |
pankso@44 | 80 # Usage: msg_box "title" "message" |
pankso@44 | 81 msg_box() { |
pankso@44 | 82 dialog --title "{ $1 }" --cr-wrap \ |
pankso@44 | 83 --ok-label "TazBerry" --msgbox "\n$2" ${height} ${width} |
pankso@44 | 84 } |
pankso@44 | 85 |
pankso@44 | 86 # Usage: text_box "file" |
pankso@44 | 87 text_box() { |
pankso@44 | 88 local file="$1" |
pankso@44 | 89 if [ -f "$file" ]; then |
pankso@44 | 90 dialog --cr-wrap \ |
pankso@44 | 91 --title " $(gettext 'Viewing file:') $file " \ |
pankso@44 | 92 --extra-button \ |
pankso@44 | 93 --extra-label "Edit file" \ |
pankso@44 | 94 --ok-label "TazBerry" \ |
pankso@44 | 95 --textbox ${file} ${height} ${width} |
pankso@44 | 96 else |
pankso@44 | 97 dialog --title "$title" \ |
pankso@44 | 98 --msgbox "\nERROR: $file does not exist" 10 ${width} |
pankso@44 | 99 fi |
pankso@44 | 100 # Handle options |
pankso@44 | 101 case "$?" in |
pankso@44 | 102 3) nano ${file} ;; |
pankso@44 | 103 esac |
pankso@44 | 104 } |
pankso@44 | 105 |
pankso@44 | 106 # Usage: tail_box "file" |
pankso@44 | 107 tail_box() { |
pankso@44 | 108 dialog --title " $(gettext 'Watching file:') $2 " \ |
pankso@44 | 109 --tailbox "$1" ${height} ${width} |
pankso@44 | 110 } |
pankso@44 | 111 |
pankso@44 | 112 # Packages info and spk-up button |
pankso@44 | 113 pkgs_box() { |
pankso@44 | 114 out="$tmpdir/spk-info.txt" |
pankso@44 | 115 spk info --output=raw > ${out} |
pankso@44 | 116 dialog --cr-wrap \ |
pankso@44 | 117 --title "{ $(gettext 'Packages') }" \ |
pankso@44 | 118 --extra-button \ |
pankso@44 | 119 --extra-label "$(gettext 'Upgrade')" \ |
pankso@44 | 120 --ok-label "TazBerry" \ |
pankso@44 | 121 --textbox "$out" ${height} ${width} |
pankso@44 | 122 # Handle options |
pankso@44 | 123 case "$?" in |
pankso@44 | 124 3) spk-up && gettext "Press ENTER to go back to TazBerry"; read ;; |
pankso@44 | 125 esac |
pankso@44 | 126 } |
pankso@44 | 127 |
pankso@44 | 128 oclock_box() { |
pankso@44 | 129 out="$tmpdir/overclocking.txt" |
pankso@44 | 130 cat > ${out} << EOT |
pankso@44 | 131 |
pankso@44 | 132 Overclocking modes: |
pankso@44 | 133 ------------------- |
pankso@44 | 134 $(rpi_oclock) |
pankso@44 | 135 |
pankso@44 | 136 Current /boot/config.txt |
pankso@44 | 137 ------------------------ |
pankso@44 | 138 $(cat $config) |
pankso@44 | 139 |
pankso@44 | 140 EOT |
pankso@44 | 141 dialog --cr-wrap \ |
pankso@44 | 142 --title "$title" \ |
pankso@44 | 143 --ok-label "TazBerry" \ |
pankso@44 | 144 --textbox "$out" ${height} ${width} |
pankso@44 | 145 } |
pankso@44 | 146 |
pankso@44 | 147 # Main Dialog menu |
pankso@44 | 148 main_box() { |
pankso@44 | 149 dialog \ |
pankso@44 | 150 --clear \ |
pankso@44 | 151 --title "$title" \ |
pankso@44 | 152 --ok-label "Exec" \ |
pankso@44 | 153 --cancel-label "Quit" \ |
pankso@44 | 154 --menu "" ${height} ${width} 14 \ |
pankso@44 | 155 "rpi-stats" "$(gettext 'Show some RPi system stats')" \ |
pankso@44 | 156 "cmdline.txt" "$(gettext 'View boot args /boot/cmdline.txt')" \ |
pankso@44 | 157 "config.txt" "$(gettext 'View config file /boot/config.txt')" \ |
pankso@44 | 158 "rpi-turbo" "$(gettext 'Enable or disable RPi turbo on next boot')" \ |
pankso@44 | 159 "oclock" "$(gettext 'Overclocking information and config')" \ |
pankso@44 | 160 "packages" "$(gettext 'Packages info and upgrade (spk)')" \ |
pankso@44 | 161 "keyboard" "$(gettext 'System keyboard setting')" \ |
pankso@44 | 162 "reboot" "$(gettext 'Reboot SliTaz')" \ |
pankso@44 | 163 "halt" "$(gettext 'Halt the Raspberry Pi')" \ |
pankso@44 | 164 "quit" "$(gettext 'Exit from TazBerry tool')" 2>${tmp} |
pankso@44 | 165 |
pankso@44 | 166 # Handle options |
pankso@44 | 167 opt=${?} |
pankso@44 | 168 case "$opt" in |
pankso@46 | 169 1|255) rm -rf ${tmpdir} && exit 0 ;; |
pankso@44 | 170 esac |
pankso@44 | 171 |
pankso@44 | 172 # Handle actions |
pankso@44 | 173 action=$(cat $tmp) |
pankso@44 | 174 case "$action" in |
pankso@44 | 175 rpi-stats) |
pankso@44 | 176 msg_box "RPi Stats" "$(rpi_stats)" ;; |
pankso@44 | 177 cmdline.txt) |
pankso@44 | 178 text_box /boot/cmdline.txt ;; |
pankso@44 | 179 config.txt) |
pankso@44 | 180 text_box ${config} ;; |
pankso@44 | 181 rpi-turbo) |
pankso@44 | 182 rpi_turbo && newline |
pankso@44 | 183 gettext "Press ENTER to go back to TazBerry"; read ;; |
pankso@44 | 184 oclock) |
pankso@44 | 185 oclock_box ;; |
pankso@44 | 186 packages) |
pankso@44 | 187 pkgs_box ;; |
pankso@44 | 188 keyboard) |
pankso@44 | 189 tazkeymap ;; |
pankso@44 | 190 reboot) |
pankso@44 | 191 reboot ;; |
pankso@44 | 192 halt) |
pankso@44 | 193 halt ;; |
pankso@44 | 194 quit) |
pankso@44 | 195 rm -rf ${tmpdir} && exit 0 ;; |
pankso@44 | 196 esac |
pankso@44 | 197 } |
pankso@44 | 198 |
pankso@44 | 199 # Progress bar testsuite |
pankso@44 | 200 gauge_box() { |
pankso@44 | 201 { for i in $(seq 1 100); do |
pankso@44 | 202 echo $i |
pankso@44 | 203 sleep 0.01 |
pankso@44 | 204 done |
pankso@44 | 205 echo 100; } | dialog --title "{ TazBerry }" \ |
pankso@44 | 206 --gauge "Work in progress..." 6 ${width} 0 |
pankso@44 | 207 } |
pankso@44 | 208 |
pankso@44 | 209 # |
pankso@44 | 210 # Handle commands |
pankso@44 | 211 # |
pankso@44 | 212 |
pankso@44 | 213 case "$1" in |
pankso@44 | 214 oclock) |
pankso@44 | 215 newline |
pankso@44 | 216 boldify "Overclocking modes:" |
pankso@44 | 217 rpi_oclock |
pankso@44 | 218 boldify "Current config.txt:" |
pankso@44 | 219 cat ${config} |
pankso@44 | 220 newline ;; |
pankso@44 | 221 |
pankso@44 | 222 ls-functions) |
pankso@44 | 223 newline |
pankso@44 | 224 boldify "$(gettext 'TazBerry functions list')" |
pankso@44 | 225 separator |
pankso@44 | 226 grep "^rpi_*" $0 | awk '{print " ", $1}' |
pankso@44 | 227 newline ;; |
pankso@44 | 228 |
pankso@44 | 229 testsuite) |
pankso@44 | 230 gauge_box |
pankso@44 | 231 msg_box "Testsuite" "Test message" |
pankso@44 | 232 rpi_stats |
pankso@44 | 233 newline ;; |
pankso@44 | 234 |
pankso@44 | 235 rpi_*) |
pankso@44 | 236 # Execute functions |
pankso@44 | 237 $@ ;; |
pankso@44 | 238 |
pankso@44 | 239 "") |
pankso@44 | 240 # No args: display Ncurses dialog |
pankso@44 | 241 while true; do |
pankso@44 | 242 main_box |
pankso@44 | 243 done ;; |
pankso@44 | 244 |
pankso@44 | 245 *|*help|-h) |
pankso@44 | 246 # Display help |
pankso@44 | 247 help ;; |
pankso@44 | 248 esac |
pankso@44 | 249 |
pankso@44 | 250 # Clean exit |
pankso@44 | 251 rm -rf ${tmpdir} |
pankso@44 | 252 exit 0 |