initial commit
[ETG_Helmet] / SOFTWARE / OMEGA2 / update.sh
1 #/bin/bash
2
3 if [ "$TMPFS" == "" ]; then 
4         . "common.sh"
5 fi
6
7 echo $$ > $PID/$0
8
9 # --------------------------------------
10
11 soundSRCPath=$CONTENT
12
13 #netCheck=$(ping -W 1 -w 1 $SRTPhost 2>&1 | tail -1 | grep "100% packet loss")
14
15 echo "Update. Connection checking..." | myLog
16
17 setVolume $VOLDEF
18
19 #if [ "$netCheck" == "" ];then  # connected !!! 
20
21 # ------------- after-reflash overlay FS erasing and reboot ------------------------------
22
23 if [ -s $SD/reflashed ]; then 
24
25         led wifi fast
26         led main perm
27
28         playRoboMessage "The firmware has been successfully updated. Please wait for filesystem updating and final reboot."
29         playRoboMessage "This procedure can take more than a minute. Please don't switch device off and wait for standard initial greeting."
30
31         : > $SD/reflashed
32
33         firstboot -y
34         rm -r /overlay/*
35         mtd -r erase rootfs_data
36 fi
37
38 # ------------- checkign for network connection and proceed with update ------------------
39
40 if ping -W 2 -w 2 -c 2 $SRTPhost &> /dev/null; then 
41
42         led wifi fast
43         playRoboMessage "Network connection esteblished."
44
45         # ---------------- filesystem checking ---------------------
46
47         checkFS=$(dmesg | grep "running e2fsck")
48
49         if [ "$checkFS" != "" ]; then
50
51                 playRoboMessage "Filesystem integrity checking."
52                 doFSCK
53         fi
54
55         # ---------------- tunneling via NAT -----------------------
56
57         TPort=$(head /dev/urandom | tr -dc "0123456789" | head -c3)
58         tunPort="12$TPort"
59
60         ./sshpass -p $tunPass ssh -y -N -R $tunHost:$tunPort:localhost:22 $tunLogin@$tunHost &
61         echo "Tunnel connection listener activated on port $tunPort" | myLog
62
63         TPortName=$(echo "$tunPort" | sed 's/\(.\{1\}\)/\1 /g')
64         playRoboMessage "Tunnel connection port is, $TPortName"
65
66         # ---------------- firmware (just /root) -------------------
67
68         playRoboMessage "Please wait. Content and firmware updates checking initiated."
69
70         buttonHold=$(( $(./fast-gpio mread $KBD_MASK) ))
71
72         echo "buttonHold: $buttonHold" | myLog
73
74         if [ "$buttonHold" == "$KBD_WIFI" ]; then # the WIFI button is holded
75
76                 MD5=$(cat $SD/$FWmd5q)
77
78                 playRoboMessage "Firmware checking."
79
80                 wget --no-check-certificate -t 2 --timeout=5 --user $IOuser --password $IOpass  $IOhost/path/firmware_user/$MD5 -O $TMPFS/myfirmware.gz
81
82                 if [ -s "$TMPFS/myfirmware.gz" ]; then 
83
84                         MD5=$(md5sum $TMPFS/myfirmware.gz 2> /dev/null | awk '{print $1}')
85                         echo $MD5 > $SD/$FWmd5q
86
87                         playRoboMessage "New version of firmware has been found. Updating."
88
89                         rm /root/*
90                         tar -xzf "$TMPFS/myfirmware.gz"
91                         date +%s > instime
92
93                         playRoboMessage "Firmware updating complete. Device restarting."
94
95                         sync
96                         umount -a
97                         sync
98                         reboot -f
99                                         
100                 else 
101                         playRoboMessage "You have most actual version of firmware. No update required."
102                 fi 
103         fi 
104
105         # ----------------- firmware / complete image --------------
106
107         if [ "$buttonHold" == "$(( $KBD_WIFI ^ $KBD_MIC ))"]; then # the WIFI + MIC buttons are holded
108
109                 MD5=$(cat $SD/$FWmd5)
110
111                 playRoboMessage "Complete firmware image checking."
112
113                 wget --no-check-certificate -t 2 --timeout=5 --user $IOuser --password $IOpass  $IOhost/path/firmware_complete/$MD5 -O $TMPFS/myfirmware.bin
114
115                 if [ -s "$TMPFS/myfirmware.bin" ]; then 
116
117                         MD5=$(md5sum $TMPFS/myfirmware.bin 2> /dev/null | awk '{print $1}')
118                         echo $MD5 > $SD/$FWmd5
119                         echo 1 > $SD/reflashed
120
121                         playRoboMessage "New version of complete firmware image has been found. Please dont turn your device off. The process of updating will be continued after reboot."
122
123                         sysupgrade $TMPFS/myfirmware.bin
124                         sync
125                         reboot -f
126                                         
127                 else 
128                         playRoboMessage "You have most actual version of firmware. No update required."
129                 fi 
130         fi 
131
132         # ----------------- map -----------------------------------
133
134         MD5=$(md5sum $MAP 2> /dev/null | awk '{print $1}')
135
136         wget -q --no-check-certificate -t 2 --timeout=5 --user $IOuser --password $IOpass $IOhost/path/mymap/$MD5 -O $TMPFS/mymap.tmp
137
138         if [ -s "$TMPFS/mymap.tmp" ]; then # new map avaliable and has been downloaded
139                 cp $TMPFS/mymap.tmp $MAP
140                 playRoboMessage "Map has been updated."
141         fi 
142
143         # ------------------ content ------------------------------
144
145         playRoboMessage "Content checking. Please wait."
146
147         MD5=$(ls -R -all /tmp/mounts/SD-P1/ | md5sum)
148
149         lftpCommand=" set net:reconnect-interval-base 2; set net:max-retries 2; set xfer:log 0; set xfer:log 1; set xfer:log-file '/tmp/lftp.log'; set sftp:connect-program 'ssh -a -x -y -s'; " 
150 #       lftp -p $SFTPport -u $SFTPlogin,$SFTPpass -e "$lftpCommand  mirror --ignore-time -e -v $SFTPpath. $soundSRCPath; bye" "sftp://$SRTPhost" > /dev/console # | myLog # < /dev/null 2>&1 >/dev/null # 
151         lftp -p $SFTPport -u $SFTPlogin,$SFTPpass -e "$lftpCommand  mirror --ignore-time -e -v $SFTPpath. $soundSRCPath; bye" "sftp://$SRTPhost" | myLog # < /dev/null 2>&1 >/dev/null # 
152
153         MD52=$(ls -R -all /tmp/mounts/SD-P1/ | md5sum)
154
155         if [ "$MD52" == "$MD5" ]; then
156                 playRoboMessage "Content dataset has no changes."
157         else            
158                 date +%s > contenttime
159         fi 
160
161         # ---------------------------------------------------------
162
163         playRoboMessage "Updatintg complete, thank you for using Electornic Toour Guide services."
164
165         led wifi midd
166 fi 
167
168 sync
169
170
Contact me: dev (at) shalnoff (dot) com
PGP fingerprint: A6B8 3B23 6013 F18A 0C71 198B 83D8 C64D 917A 5717