blob: 562ce1de5e1d6443111ce4898761794abb646978 [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001#!/bin/sh
2
3STA_NET_CONF=/etc/wifi/sta_network.conf
4
5function help()
6{
7 echo "mbtk_wifi.sh ap/sta start/stop"
8}
9
10function wifi_check()
11{
12 if [ ! -f /etc/wifi/aic8800_bsp.ko ];then
13 echo "No found file: /etc/wifi/aic8800_bsp.ko"
14 exit 1
15 fi
16
17 if [ ! -f /etc/wifi/aic8800_fdrv.ko ];then
18 echo "No found file: /etc/wifi/aic8800_fdrv.ko"
19 exit 1
20 fi
21
22 if [ ! -f /etc/wifi/hostapd.conf ];then
23 echo "No found file: /etc/wifi/hostapd.conf"
24 exit 1
25 fi
26
27 if [ ! -f /etc/wifi/wpa_supplicant.conf ];then
28 echo "No found file: /etc/wifi/wpa_supplicant.conf"
29 exit 1
30 fi
31
32 if [ ! -f $STA_NET_CONF ];then
33 echo "No found file: $STA_NET_CONF"
34 exit 1
35 fi
36}
37
38function driver_insmod()
39{
40 cfg80211_insmod=`lsmod | grep cfg80211`
41 if [ -z "$cfg80211_insmod" ];then
42 modprobe cfg80211
43 else
44 echo "cfg80211 has insmod."
45 fi
46
47 aic8800_bsp_insmod=`lsmod | grep aic8800_bsp`
48 if [ -z "$aic8800_bsp_insmod" ];then
49 insmod /etc/wifi/aic8800_bsp.ko sdio_f0=0 sdio_clk=150000000
50 else
51 echo "aic8800_bsp has insmod."
52 fi
53
54 aic8800_fdrv_insmod=`lsmod | grep aic8800_fdrv`
55 if [ -z "$aic8800_fdrv_insmod" ];then
56 insmod /etc/wifi/aic8800_fdrv.ko
57 else
58 echo "aic8800_fdrv has insmod."
59 fi
60}
61
62function driver_rmmod()
63{
64 aic8800_fdrv_insmod=`lsmod | grep aic8800_fdrv`
65 if [ -z "$aic8800_fdrv_insmod" ];then
66 echo "aic8800_fdrv not insmod."
67 else
68 rmmod aic8800_fdrv
69 fi
70
71 aic8800_bsp_insmod=`lsmod | grep aic8800_bsp`
72 if [ -z "$aic8800_bsp_insmod" ];then
73 echo "aic8800_bsp not insmod."
74 else
75 rmmod aic8800_bsp
76 fi
77
78 cfg80211_insmod=`lsmod | grep cfg80211`
79 if [ -z "$cfg80211_insmod" ];then
80 echo "cfg80211 not insmod."
81 else
82 rmmod cfg80211
83 fi
84}
85
zw.wang7797f842025-06-05 18:03:13 +080086function add_wlan0_to_bridge {
87 num=1
88 while [ $num -le 10 ]; do
89 if brctl show | grep -q 'br-lan'; then
90 # 判断 wlan0 是否已在 br-lan 中
91 if brctl show | grep -q 'wlan0'; then
92 return 0
93 else
94 brctl addif br-lan wlan0
95 return 0
96 fi
97 fi
98 sleep 1
99 ((num++))
100 done
101 return 1
102}
103
b.liud440f9f2025-04-18 10:44:31 +0800104function wifi_ap_start()
105{
liuyang2e8014d2025-05-22 13:30:39 +0800106 hostapd -B /etc/wifi/hostapd.conf
b.liud440f9f2025-04-18 10:44:31 +0800107 sleep 5s
108
zw.wang7797f842025-06-05 18:03:13 +0800109 #brctl addif br-lan wlan0
110 add_wlan0_to_bridge
xf.li936f9b12025-06-10 23:03:25 -0700111 #iptables -t nat -A POSTROUTING -o ccinet0 -j MASQUERADE --random
b.liud440f9f2025-04-18 10:44:31 +0800112}
113
114function wifi_ap_stop()
115{
116 killall hostapd
117}
118
119function wifi_sta_start()
120{
hong.liu38f77692025-05-29 00:45:54 -0700121 wpa_supplicant -Dnl80211 -iwlan0-vxd -c/etc/wifi/wpa_supplicant.conf -B
b.liud440f9f2025-04-18 10:44:31 +0800122 sleep 5s
123
124 SSID=`cat $STA_NET_CONF | grep -w 'SSID' | cut -d '=' -f 2`
125 PASSWORD=`cat $STA_NET_CONF | grep -w 'PASSWORD' | cut -d '=' -f 2`
126 prefix=\"
127 subfix=\"
128 str1=$prefix$SSID$subfix
129 str2=$prefix$PASSWORD$subfix
130
131 echo "SSID = $str1"
132 echo "PSK = $str2"
133
134 wpa_cli -p/var/run/wpa_supplicant remove_network 0
135 wpa_cli -p/var/run/wpa_supplicant ap_scan 1
136 wpa_cli -p/var/run/wpa_supplicant add_network
137 wpa_cli -p/var/run/wpa_supplicant set_network 0 ssid $str1
138 wpa_cli -p/var/run/wpa_supplicant set_network 0 key_mgmt WPA-PSK
139 wpa_cli -p/var/run/wpa_supplicant set_network 0 psk $str2
140 wpa_cli -p/var/run/wpa_supplicant select_network 0
141
hong.liu38f77692025-05-29 00:45:54 -0700142 udhcpc -i wlan0-vxd
b.liud440f9f2025-04-18 10:44:31 +0800143}
144
145function wifi_sta_stop()
146{
147 killall wpa_supplicant
148}
149
150wifi_check
151
152if [ -n "$2" ] ;then #有参数
153 case "$1" in
154 ap)
155 case "$2" in
156 start)
157 driver_insmod
158
159 wifi_ap_start
160 ;;
161 stop)
162 wifi_ap_stop
163 ;;
164 *)
165 help
166 ;;
167 esac
168 ;;
169 sta)
170 case "$2" in
171 start)
172 driver_insmod
173
174 wifi_sta_start
175 ;;
176 stop)
177 wifi_sta_stop
178 ;;
179 *)
180 help
181 ;;
182 esac
183 ;;
184 *)
185 help
186 ;;
187 esac
188else
189 help
xf.li936f9b12025-06-10 23:03:25 -0700190fi