1#!/bin/sh
2PATH=/usr/bin:/bin:/usr/sbin:/sbin
3
4
5echo "LTE: ### START ###" | logger ;
6nvram set lte_update_status=0
7if [ "`nvram get usb_path1`" != "storage" ] ; then
8	echo "LTE: No USB storage is found !" | logger
9	nvram set lte_update_status=4
10	exit 1;
11fi
12
13path_dev=`nvram get usb_path1_fs_path0`
14mounted_path=`mount |grep $path_dev |awk '{print $3}'`
15
16FOLDER=$mounted_path/4G-AC55U_LTE
17
18if [ ! -d ${FOLDER} ] ; then
19	echo "LTE: Folder /4G-AC55U_LTE/ not found !" | logger
20	nvram set lte_update_status=5
21	exit 1;
22fi
23cd ${FOLDER}
24
25
26if [ ! -f version ] ; then 
27	echo "LTE: ## STOP ### version file not exist !!" | logger ;
28	nvram set lte_update_status=6
29	exit 1 ;
30elif [ ! -f update.zip ] ; then
31	echo "LTE: ### STOP ###   update.zip file not exist !!" | logger ;
32	nvram set lte_update_status=7
33	exit 1 ;
34elif [ ! -f update.md5 ] ; then
35	echo "LTE: ### STOP ###   update.md5 file not exist !!" | logger ;
36	nvram set lte_update_status=8
37	exit 1 ;
38elif [ `md5sum -s -c update.md5` ] ; then
39	echo "LTE: ### STOP ###   md5sum fail" | logger ;
40	nvram set lte_update_status=9
41	exit 1 ;
42elif [ `ATE Get_GobiVersion > /tmp/GobiVer` ] ; then 
43	echo "LTE: Cannot get Gobi Version" | logger ;
44	nvram set lte_update_status=10
45	exit 0 ;
46elif [ `cat /tmp/GobiVer` = `cat version` ] ; then 
47	echo "LTE: Up to date. Exit" | logger ;
48	nvram set lte_update_status=11
49	exit 0 ;
50elif [ "`ATE Get_GobiSimCard`" = "PASS" ] ; then
51	echo "LTE: ### STOP ###   Remove SIM Card and try again" | logger ;
52	nvram set lte_update_status=12
53	exit 1 ;
54else
55	killall wanduck
56	killall lteled
57	insmod cdc_ether.ko
58	sleep 1 ;
59
60	echo "LTE: switch Gobi mode to internal network" | logger ;
61	chat -e '' "at+cfotamode" OK  >> /dev/ttyACM1 < /dev/ttyACM1 ;
62	echo $? | logger ;
63	sleep 3 ;
64
65	echo "LTE: Gobi internal network: ifup" | logger ;
66	ifconfig usb0 up ;
67	echo $? | logger ;
68
69	echo "LTE: Gobi internal network: getting IP" | logger ;
70	udhcpc -i usb0 -p /var/run/udhcpc1.pid -s /tmp/udhcpc -O33 -O249 -q ;
71	echo $? | logger ;
72	sleep 3 ;
73
74	chat -e '' "at+cexecfile=rm -rf /cache/" OK  >> /dev/ttyACM1 < /dev/ttyACM1
75	sleep 1
76
77	echo "LTE: Gobi internal network: uploading update.zip" | logger ;
78#	tftp -p -l update.zip -b 32768 192.168.225.1
79	tftp -p -l update.zip 192.168.225.1
80	echo $? | logger ;
81	sleep 3 ;
82
83	echo "LTE: Gobi internal network: uploading update.md5" | logger ;
84#	tftp -p -l update.md5 -b 32768 192.168.225.1
85	tftp -p -l update.md5 192.168.225.1
86	echo $? | logger ;
87	sleep 1 ;
88
89	echo "LTE: updating from `cat /tmp/GobiVer` to `cat version`" | logger ;
90	chat -e '' "at+cfotaupdate" OK  >> /dev/ttyACM1 < /dev/ttyACM1
91	echo $? | logger ;
92
93	echo "LTE: Waiting for active" | logger ;
94	sleep 180 ;
95
96	actdev=`nvram get usb_modem_act_dev`
97	echo "LTE: ### actdev=$actdev. ###" | logger ;
98	if [ $actdev != "usb0" ] ; then
99		sleep 5;
100	fi
101
102	if [ `grep -q GobiNet /proc/bus/usb/devices` ] ; then
103		echo "LTE: ### FAIL ###" | logger ;
104		nvram set lte_update_status=2
105		#exit 1;
106	#elif [ `ATE Get_GobiVersion` != `cat version` ] ; then
107	#	echo "LTE: ATE Get_GobiVersion = `ATE Get_GobiVersion`" | logger ;
108	#	echo "LTE: cat version = `cat version`" | logger ;
109	#	echo "LTE: ### FAIL version incorrect ###" | logger ;
110	#	nvram set lte_update_status=3
111		#exit 1;
112	else
113		echo "LTE: ### SUCCESS ###" | logger ;
114		nvram set lte_update_status=1
115		if [ `ATE Get_GobiVersion` != `FAIL` ] ; then
116			nvram set usb_modem_act_swver=`ATE Get_GobiVersion`
117		fi
118	fi
119fi
120
121echo "LTE: ### Finish ###" | logger ;
122wanduck &
123echo $? | logger ;
124sleep 1 ;
125lteled &
126echo $? | logger ;
127