blob: c208c7ed02808e2a7afaecb8fce69fe46a8b580c [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
86function wifi_ap_start()
87{
liuyang2e8014d2025-05-22 13:30:39 +080088 hostapd -B /etc/wifi/hostapd.conf
b.liud440f9f2025-04-18 10:44:31 +080089 sleep 5s
90
91 brctl addif br-lan wlan0
92 iptables -t nat -A POSTROUTING -o ccinet0 -j MASQUERADE --random
93}
94
95function wifi_ap_stop()
96{
97 killall hostapd
98}
99
100function wifi_sta_start()
101{
hong.liu38f77692025-05-29 00:45:54 -0700102 wpa_supplicant -Dnl80211 -iwlan0-vxd -c/etc/wifi/wpa_supplicant.conf -B
b.liud440f9f2025-04-18 10:44:31 +0800103 sleep 5s
104
105 SSID=`cat $STA_NET_CONF | grep -w 'SSID' | cut -d '=' -f 2`
106 PASSWORD=`cat $STA_NET_CONF | grep -w 'PASSWORD' | cut -d '=' -f 2`
107 prefix=\"
108 subfix=\"
109 str1=$prefix$SSID$subfix
110 str2=$prefix$PASSWORD$subfix
111
112 echo "SSID = $str1"
113 echo "PSK = $str2"
114
115 wpa_cli -p/var/run/wpa_supplicant remove_network 0
116 wpa_cli -p/var/run/wpa_supplicant ap_scan 1
117 wpa_cli -p/var/run/wpa_supplicant add_network
118 wpa_cli -p/var/run/wpa_supplicant set_network 0 ssid $str1
119 wpa_cli -p/var/run/wpa_supplicant set_network 0 key_mgmt WPA-PSK
120 wpa_cli -p/var/run/wpa_supplicant set_network 0 psk $str2
121 wpa_cli -p/var/run/wpa_supplicant select_network 0
122
hong.liu38f77692025-05-29 00:45:54 -0700123 udhcpc -i wlan0-vxd
b.liud440f9f2025-04-18 10:44:31 +0800124}
125
126function wifi_sta_stop()
127{
128 killall wpa_supplicant
129}
130
131wifi_check
132
133if [ -n "$2" ] ;then #有参数
134 case "$1" in
135 ap)
136 case "$2" in
137 start)
138 driver_insmod
139
140 wifi_ap_start
141 ;;
142 stop)
143 wifi_ap_stop
144 ;;
145 *)
146 help
147 ;;
148 esac
149 ;;
150 sta)
151 case "$2" in
152 start)
153 driver_insmod
154
155 wifi_sta_start
156 ;;
157 stop)
158 wifi_sta_stop
159 ;;
160 *)
161 help
162 ;;
163 esac
164 ;;
165 *)
166 help
167 ;;
168 esac
169else
170 help
171fi