interface: usb: Add support for USB interface
[platform/core/system/initrd-flash.git] / scripts / flash-init.sh
1 #!/bin/bash
2
3 INFORM_FILE=reboot-param.bin
4 INFORM_MOUNT_PATH=/mnt/inform
5 TMP_PATH=/tmp
6 SYSFS_PATH=/sys
7 CONFIGFS_PATH=/sys/kernel/config
8
9 BLKID="/usr/sbin/blkid"
10 FLASH_MANAGER="/usr/bin/flash-manager"
11 MOUNT="/usr/bin/mount"
12 UMOUNT="/usr/bin/umount"
13 REBOOT="/usr/sbin/reboot"
14 IP="/usr/sbin/ip"
15 IFCONFIG="/usr/sbin/ifconfig"
16 GREP="/usr/bin/grep"
17 SYNC="/usr/bin/sync"
18 COPY="/usr/bin/cp"
19 FIND="/usr/bin/find"
20 INSMOD="/usr/sbin/insmod"
21 DNSMASQ="/usr/bin/dnsmasq"
22 HOSTAPD="/usr/bin/hostapd"
23 LINK="/usr/bin/ln"
24
25 NETIF="eth0"
26 WLANIF="wlan0"
27
28 #------------------------------------------------
29 #       clear_bootmode
30 #------------------------------------------------
31 clear_bootmode() {
32         echo "" > ${INFORM_MOUNT_PATH}/${INFORM_FILE}
33         "$SYNC"
34         "$UMOUNT" ${INFORM_MOUNT_PATH}
35 }
36
37 #------------------------------------------------
38 #       setup_usb
39 #------------------------------------------------
40 setup_usb() {
41         SYSFS=$($MOUNT | $GREP sysfs)
42         if [ -z "$SYSFS" ]; then
43                 $MOUNT -t sysfs none $SYSFS_PATH
44         fi
45
46         CONFIGFS=$($MOUNT | $GREP configfs)
47         if [ -z "$CONFIGFS" ]; then
48                 $MOUNT -t configfs none $CONFIGFS_PATH
49         fi
50 }
51
52
53 #------------------------------------------------
54 # Copy Module and Firmware file
55 #------------------------------------------------
56 setup_wireless() {
57         MODULES_PART=`"$BLKID" --label modules`
58         if [ "$MODULES_PART" != "" ]; then
59                 echo "Module partition is $MODULES_PART"
60                 $MOUNT -t ext4 ${MODULES_PART} ${TMP_PATH}
61
62                 BRCMFMAC=`$FIND ${TMP_PATH} -name brcmfmac.ko`
63                 BRCMUTIL=`$FIND ${TMP_PATH} -name brcmutil.ko`
64                 echo "Module brcmfmac is $BRCMFMAC"
65                 echo "Module brcmutil is $BRCMUTIL"
66                 $LINK -s /usr/share/firmware /lib/firmware
67                 $COPY $BRCMFMAC /lib/firmware/brcm/
68                 $COPY $BRCMUTIL /lib/firmware/brcm/
69                 $SYNC
70                 $UMOUNT ${TMP_PATH}
71                 $INSMOD /lib/firmware/brcm/brcmutil.ko
72                 sleep 1
73                 $INSMOD /lib/firmware/brcm/brcmfmac.ko
74                 sleep 1
75
76                 WLANIP="192.168.43.1"
77                 $IFCONFIG $WLANIF ${WLANIP} up
78
79                 $DNSMASQ -p 0 -9 -C /lib/firmware/brcm/dnsmasq.conf
80                 SSID=`$HOSTAPD -B /lib/firmware/brcm/hostapd.conf | "$GREP" -oP '(?<=ssid\s\")(.*?)(?=\")'`
81         else
82                 echo "There is no module partition"
83                 WLANIP="N/A"
84                 SSID="N/A"
85         fi
86 }
87
88 #------------------------------------------------
89 #       setup_writed_nic()
90 #------------------------------------------------
91 setup_wired_nic() {
92         IPADDR=`"$IP" -4 addr show $NETIF | "$GREP" -oP '(?<=inet\s)\d+(\.\d+){3}'`
93         if [ "z$IPADDR" == "z" ]; then
94                 IPADDR="192.168.0.100"
95
96                 RETRY_MAX=5
97                 RETRY=0
98                 while [ $RETRY -lt $RETRY_MAX ]; do
99                         RESULT=`"$IFCONFIG" $NETIF $IPADDR up 2>&1`
100                         if [ "z$RESULT" == "z" ]; then
101                                 echo "IP address is not set, using default (192.168.0.100)"
102                                 break
103                         fi
104
105                         RETRY=$((RETRY + 1))
106                         echo "Retry to set IP address #${RETRY}"
107                         sleep 1
108                 done
109
110                 if [ $RETRY -eq $RETRY_MAX ]; then
111                         echo "Failed to set IP address, Reboot..."
112                         "$REBOOT"
113                 fi
114         fi
115 }
116
117 #------------------------------------------------
118 #       print_info()
119 #------------------------------------------------
120 print_info() {
121         echo ""
122         echo "Tizen flash manager is ready."
123         echo ""
124         echo "Network Information:"
125         echo "Wired: ${IPADDR}"
126         echo "Wireless: ${WLANIP} [SSID: ${SSID}]"
127 }
128
129 #------------------------------------------------
130 #       do_flash
131 #------------------------------------------------
132 do_flash() {
133         "$FLASH_MANAGER"
134
135         #Control-flow will never reach here, because fm only terminates by rebooting
136
137         echo "flash-manager is terminated by critical reason."
138         echo "Rebooting..."
139         "$REBOOT"
140 }
141
142 #------------------------------------------------
143 #       Main Routine Start
144 #------------------------------------------------
145 setup_wired_nic
146 setup_wireless
147 setup_usb
148 clear_bootmode
149 print_info
150 do_flash