slitaz-arm view rpi/tazberry @ rev 61

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