Compared files  

Left
/fw/dreame.vacuum.p2041o/4.1.2_1107/xout/_root/usr/bin/wifi_start.sh
Last modified2021-04-23 09:59:54
Size3 Kb (121 Lines)
EncodingLatin 1 - ANSI (CP1252) default
Right
/fw/dreame.vacuum.p2041/4.3.2_1108/xout/_root/usr/bin/wifi_start.sh
Last modified2021-11-04 08:52:09
Size13.5 Kb (604 Lines)
EncodingUnicode 8 bits (UTF-8) - without signature autodetected


   Comparison Statistics  

Detailed Statistics

All Changes
 BlocksLines
Unchanged1125
Inserted147
Deleted00
Ignored17
Changed8621




   Comparison Details  

1 1 #!/bin/sh
2 2 #
3 # Date: 2020.06 3 # Date: 2021.08
4 # Version: 0.0.2 4 # Version: 4.3.2_0.0.1
5 # 5 #
6    
7 6 #set -x
8 7  
9 8 source /usr/bin/config
10 9  
11 WIFI_CONF_FILE="/etc/miio/wifi.conf" 10 GATEWAY=192.168.5.1
12 DEVICE_CONFIG_FILE="/etc/miio/device.conf" 11 NETMASK=255.255.255.0
13 WIFI_SETUP_SCRIPT="/usr/bin/do_start_ap.sh"  
14    
15 WIFI_CONF_MONITOR="/usr/bin/wifi_conf_monitor.sh"  
16 12  
17 13 LOG_FILE=/data/log/wifi.log
18   14 WPA_SUPPLICANT_SCRIPT=/etc/init.d/wpa_supplicant.sh
19 wifi_ap_mode() 15 WPA_SUPPLICANT_CONFIG_FILE=${WPA_CONF_FILE}
20 { 16  
21     # AP mode 17 mkdir -p /data/config/wifi
22     MODEL=`cat $DEVICE_CONFIG_FILE | grep -v ^#` 18  
23     MODEL=${MODEL##*model=} 19 if [ x"${AP_IF_NAME}" = x ]; then
24     MODEL=`echo $MODEL | cut -d ' ' -f 1` 20     AP_IF_NAME=wlan1
25     vendor=`echo ${MODEL} | cut -d '.' -f 1` 21 fi
26     product=`echo ${MODEL} | cut -d '.' -f 2` 22  
27     version=`echo ${MODEL} | cut -d '.' -f 3` 23 if [ -z "${CHANNEL}" ]; then
28   24     CHANNEL=6
29     CMD="${WIFI_SETUP_SCRIPT} ${vendor}-${product}-${version}_miap$1 open" 25 fi
  26  
  27 # 支持畅快连一键配网时,设置为1;否则设置为0
  28 if [ "${MIIO_SDK_MJAC}" == "true" ]; then
  29     MIIO_NET_AUTO_PROVISION=0       # 使用安全芯片的产品,不支持一键配网功能
  30 else
  31     MIIO_NET_AUTO_PROVISION=1       # 非安全芯片的产品,默认支持一键配网功能
  32 fi
  33 MIIO_NET_SMART_CONFIG=1         # 支持畅快连改密同步时,设置为1;否则设置为0
  34  
  35 if [ $MIIO_NET_AUTO_PROVISION -eq 1 ]; then
  36     ap_interface=${AP_IF_NAME}
  37 else
  38     ap_interface=${WIFI_NODE}
  39 fi
  40 sta_interface=${WIFI_NODE}
  41  
  42 get_bind_status() {
  43     if [ -f ${WIFI_CONF_FILE} ]; then
  44         bind_status="ok"
  45     else
  46         bind_status=""
  47     fi
  48  
30     log "CMD=${CMD}" 49     log "bind_status: $bind_status"
31     ${CMD} & 50 }
  51  
  52 update_wpa_conf_apsta()
  53 {
  54     cat <<EOF > $WPA_SUPPLICANT_CONFIG_FILE
  55 ctrl_interface=/var/run/wpa_supplicant
  56 update_config=1
  57 network={
  58     key_mgmt=WPA-PSK
  59     proto=WPA WPA2
  60     scan_ssid=1
  61 }
  62 EOF
32 63 }
33 64  
34 wifi_sta_mode() 65 hidden_update()
35 { 66 {
36     SSID="$1" 67     ssid=$1
37     PSK="$2" 68     bssid=$2
38   69  
39     if [ ! -f "${CONFIGNET_FLAG}" ]; then 70     cat <<EOF > $WPA_SUPPLICANT_CONFIG_FILE
40         # One key Wi-Fi encryption function of Mijia router 71 ctrl_interface=/var/run/wpa_supplicant
41         # After modifying the router password on the APP, it will be sent to the robot 72 update_config=1
42         set_wifi_light.sh flash_fast 73 network={
43   74     ssid="$ssid"
  75     bssid=$bssid
  76     key_mgmt=NONE
  77     scan_ssid=1
  78 }
  79 EOF
  80 }
  81  
  82 hidden_insert()
  83 {
  84     ssid=$1
  85     bssid=$2
  86  
  87     cat <<EOF >> $WPA_SUPPLICANT_CONFIG_FILE
  88  
  89 network={
  90     ssid="$ssid"
  91     bssid=$bssid
  92     key_mgmt=NONE
  93     scan_ssid=1
  94 }
  95 EOF
  96 }
  97  
  98 master_update()
  99 {
  100     ssid=$1
  101     passwd=$2
  102  
  103     if [ x"$passwd" = x ]; then
44         echo `date`  "config net by router" >> ${LOG_FILE} 104     cat <<EOF > $WPA_SUPPLICANT_CONFIG_FILE
45         killall -9 wifi_conf_monitor.sh 105 ctrl_interface=/var/run/wpa_supplicant
46         if [ -n "$SSID" ];then 106 update_config=1
47             if [ -n "$PSK" ];then 107 network={
48                 SSID="${SSID}" PSK="${PSK}" ${WIFI_CONF_MONITOR} & 108     ssid="$ssid"
  109     key_mgmt=NONE
  110     scan_ssid=1
  111 }
  112 EOF
  113     else
  114     cat <<EOF > $WPA_SUPPLICANT_CONFIG_FILE
  115 ctrl_interface=/var/run/wpa_supplicant
  116 update_config=1
  117 network={
  118     ssid="$ssid"
  119     psk="$passwd"
  120     key_mgmt=WPA-PSK
  121     proto=WPA WPA2
  122     scan_ssid=1
  123 }
  124 EOF
  125     fi
  126 }
  127  
  128 master_insert()
  129 {
  130     ssid=$1
  131     passwd=$2
  132  
  133     if [ x"$passwd" = x ]; then
  134  
  135     cat <<EOF >> $WPA_SUPPLICANT_CONFIG_FILE
  136  
  137 network={
  138     ssid="$ssid"
  139     key_mgmt=NONE
  140     scan_ssid=1
  141 }
  142 EOF
49             else 143     else
  144     cat <<EOF >> $WPA_SUPPLICANT_CONFIG_FILE
  145  
  146 network={
  147     ssid="$ssid"
50                 SSID="${SSID}" ${WIFI_CONF_MONITOR} & 148     psk="$passwd"
51             fi 149     key_mgmt=WPA-PSK
52         else 150     proto=WPA WPA2
53             echo `date` "ssid is null" >> /tmp/wifi.log 151     scan_ssid=1
54         fi 152 }
  153 EOF
  154     fi
  155 }
  156  
  157 update_wpa_conf_select_hidden()
  158 {
  159     hide_ssid=$1
  160     hide_bssid=$2
  161  
  162     get_master_network
  163     log "miio_ssid:$miio_ssid"
  164     log "miio_passwd:$miio_passwd"
  165     log "miio_ssid_5g:$miio_ssid_5g"
  166     log "miio_passwd_5g:$miio_passwd_5g"
  167  
  168     get_bind_status
  169  
  170     if [ x"$bind_status" != x"ok" ]; then
  171         hidden_update "$hide_ssid" "$hide_bssid"
55 172     else
56         # start wifi station mode 173         hidden_update "$hide_ssid" "$hide_bssid"
57         echo -n "STA" > ${CONFIGNET_FLAG} && sync  
58         # must wait for wifi_manager scan ap and get scan result, so need wait 5s + 3s  
59         sleep 8  
60         rm -f ${AP_FLAG} && sync  
61    
62         if [ -n "$SSID" ];then  
63             if [ -n "$PSK" ];then 174         if [ x"$miio_ssid" != x ]; then
64                 LEN=`echo "${PSK}" | awk '{print length($0)}'` 175             master_insert "$miio_ssid" "$miio_passwd"
65                 echo "SSID=\"${SSID}\" PWD=\"${PSK}\" PWD_LEN=${LEN}" >> /tmp/wifi.log 176         fi
66                 if [ ${LEN} -lt 8 ]; then 177         if [ x"$miio_ssid_5g" != x ]; then
67                     SSID="${SSID}" STATE="PWD_ERROR" /usr/bin/wifi_state.sh &  
68                     log "pwd wrong"  
69                 else  
70                     wifi_cli "${SSID}" "${PSK}"  
71                 fi  
72             else  
73                 wifi_cli "${SSID}" "${PSK}" 178             master_insert "$miio_ssid_5g" "$miio_passwd_5g"
74             fi  
75 179         fi
76 180     fi
77 181 }
78 182  
  183 update_wpa_conf_select_master()
  184 {
  185     miio_ssid=$1
  186     miio_passwd=$2
  187     miio_ssid_5g=$3
  188     miio_passwd_5g=$4
  189     net_added=0
  190  
  191     if [ x"$miio_ssid_5g" != x ]; then
  192         master_update "$miio_ssid_5g" "$miio_passwd_5g"
  193         net_added=1
  194     fi
  195  
  196     if [ x"$miio_ssid" != x ]; then
  197         if [ $net_added -eq 0 ]; then
  198             master_update "$miio_ssid" "$miio_passwd"
  199         else
  200             master_insert "$miio_ssid" "$miio_passwd"
  201         fi
  202     fi
  203 }
  204  
  205 get_mac()
  206 {
  207     macstring=
252 skipped lines
  460  
  461     # clear ip address
  462     ipaddr flush $sta_interface
  463     ipaddr flush $ap_interface
  464  
  465     ifconfig $ap_interface down
  466     ifconfig $sta_interface down
  467  
  468     ifconfig $sta_interface up
  469     #iwconfig $sta_interface mode Managed
  470  
  471     # start wpa_supplicant
  472     ${WPA_SUPPLICANT_SCRIPT} ${sta_interface} ${WPA_SUPPLICANT_CONFIG_FILE}
  473  
  474     # 关闭防火墙
  475     firewall_close
  476  
  477     # start get ip
  478     get_ip
  479  
  480     log `wpa_cli -i $sta_interface list_network`
  481     log "end_time: select master ssid"
  482     echo `date` "finish select master ssid" >> ${LOG_FILE}
  483 }
  484  
79 get_ssid_passwd() 485 get_master_network()
80 { 486 {
81     STRING=`sed -n '/^key_mgmt=/p' $WIFI_CONF_FILE` 487     key_mgmt=`sed -n '/^key_mgmt=/p' ${WIFI_CONF_FILE}`
82     key_mgmt=${STRING##*key_mgmt=} 488     key_mgmt=${key_mgmt##*key_mgmt=}
83    
84 489     if [ $key_mgmt == "NONE" ]; then
85         passwd="" 490         miio_passwd=""
86   491     else
87         STRING=`sed -n '/^ssid=/p' $WIFI_CONF_FILE` 492         miio_passwd=`sed -n '/^psk=/p' ${WIFI_CONF_FILE}`
88         ssid=${STRING#*ssid=\"} 493         miio_passwd=${miio_passwd#*psk=\"}
89         ssid=${ssid%\"*} 494         miio_passwd=${miio_passwd%\"*}
90     else 495     fi
91         STRING=`sed -n '/^ssid=/p' $WIFI_CONF_FILE` 496     miio_ssid=`sed -n '/^ssid=/p' ${WIFI_CONF_FILE}`
92         ssid=${STRING#*ssid=\"} 497     miio_ssid=${miio_ssid#*ssid=\"}
93         ssid=${ssid%\"*} 498     miio_ssid=${miio_ssid%\"*}
94   499  
  500     key_mgmt_5g=`sed -n '/^key_mgmt_5g=/p' ${WIFI_CONF_FILE}`
  501     key_mgmt_5g=${key_mgmt_5g##*key_mgmt_5g=}
  502     if [ $key_mgmt_5g == "NONE" ]; then
  503         miio_passwd_5g=""
  504     else
95         STRING=`sed -n '/^psk=/p' $WIFI_CONF_FILE` 505         miio_passwd_5g=`sed -n '/^psk_5g=/p' ${WIFI_CONF_FILE}`
96         passwd=${STRING#*psk=\"} 506         miio_passwd_5g=${miio_passwd_5g#*psk_5g=\"}
97         passwd=${passwd%\"*} 507         miio_passwd_5g=${miio_passwd_5g%\"*}
98 508     fi
  509     miio_ssid_5g=`sed -n '/^ssid_5g=/p' ${WIFI_CONF_FILE}`
  510     miio_ssid_5g=${miio_ssid_5g#*ssid_5g=\"}
  511     miio_ssid_5g=${miio_ssid_5g%\"*}
  512 }
  513  
  514 # wifi_reconnect(offline time = 15min)
  515 # restart wpa_supplicant dhcp/dns and network
  516 wifi_reconnect()
  517 {
  518     ifconfig $sta_interface down
  519     ifconfig $sta_interface up
  520  
  521     sleep 1
  522     killall -9 wpa_supplicant
  523     ${WPA_SUPPLICANT_SCRIPT} ${sta_interface} ${WPA_SUPPLICANT_CONFIG_FILE}
  524     sleep 1
  525     get_ip
  526     #sleep 1
  527  
  528     # 重启dns,清除dns缓存
  529     #/etc/init.d/network restart
  530  
  531     #sleep 1
  532 }
  533  
  534 # wifi_reload (offline time = 60min)
  535 # reload kernel of wifi
  536 # restart wpa_supplicant dhcp/dns and network
  537 # restart miio_client
  538 wifi_reload()
  539 {
  540     # 重启驱动
  541     ifconfig $sta_interface down
  542     sleep 1
  543     /usr/bin/wifi_act.sh rmmod
  544     sleep 2
  545     /etc/init.d/wifi.sh
  546     sleep 1
  547     ifconfig $sta_interface up
  548     sleep 1
  549  
  550     wifi_reconnect
  551  
  552     # 重启OT
  553     /etc/rc.d/miio.sh stop
  554     sleep 1
  555     /etc/rc.d/miio.sh
99 556 }
100 557  
101 558 start()
102 559 {
  560     get_bind_status
  561  
103     if [ -e $WIFI_CONF_FILE ]; then 562     if [ x"$1" = x"SET_AP_MODE" ]; then
104         get_ssid_passwd 563         wifi_ap_mode
  564     fi
  565     if [ x"$1" = x"SET_APSTA_MODE" ]; then
105         wifi_sta_mode "$ssid" "$passwd" 566         wifi_apsta_mode
106     else 567     fi
107         STRING=`ifconfig wlan0` 568     if [ x"$1" = x"CLOSE_STA_MODE" ]; then
108   569         wifi_close_sta_mode
109         macstring=${STRING##*HWaddr } 570     fi
110         macstring=`echo ${macstring} | cut -d ' ' -f 1` 571  
111   572     if [ x"$1" = x"SELECT_HIDDEN" ]; then
112         mac1=`echo ${macstring} | cut -d ':' -f 5` 573         hide_ssid=$2
113         mac2=`echo ${macstring} | cut -d ':' -f 6` 574         hide_bssid=$3
114         MAC=${mac1}${mac2} 575         select_hidden_ssid "$hide_ssid" "$hide_bssid"
115   576     fi
  577     if [ x"$1" = x"SELECT_MASTER" ]; then
  578         get_master_network
  579         select_master_ssid "$miio_ssid" "$miio_passwd" "$miio_ssid_5g" "$miio_passwd_5g"
  580     fi
  581  
  582     if [ x"$1" = x"WIFI_RECONNECT" ]; then
  583         wifi_reconnect
  584     fi
  585     if [ x"$1" = x"WIFI_RELOAD" ]; then
  586         wifi_reload
  587     fi
  588  
  589     if [ x"$bind_status" = x"ok" ] && [ "$#" = 0 ]; then
  590         get_master_network
  591         select_master_ssid "$miio_ssid" "$miio_passwd" "$miio_ssid_5g" "$miio_passwd_5g"
  592     fi
  593     if [ x"$bind_status" != x"ok" ] && [ "$#" = 0 ]; then
  594         if [ $MIIO_NET_AUTO_PROVISION -eq 1 ]; then
  595             wifi_apsta_mode
  596         else
116         #wifi_ap_mode $MAC 597 #            wifi_ap_mode
  598             wifi_sta_mode
  599         fi
117 600     fi
118 601 }
119 602  
120 start 603 start $1 $2 $3
121 604  

   Text comparison Options  

Syntax colouring language used: Shell
Match character case: yes.
Match line endings: no.
Match spaces

At start of lines: yes,
In middle of lines: yes,
At end of lines: yes.
Blank lines as empty lines: no.
Activate comparison algorithm
At word level: yes,
At character level: no.


   Legend  

Unchanged lineExample of unchanged line
Modified lineExample of modified line
Added lineExample of added line
Removed lineExample of removed line
Ignored lineExample of ignored line