nt9856x/code/lib/source/WiFiIpc/scripts/ap6212a/up.sh
2023-03-28 15:07:53 +08:00

197 lines
5.3 KiB
Bash
Executable File

#!/bin/sh
TRY=0
HOSTAPD=`ps`
AMPK_AP=0
HOSTAPD=`echo $HOSTAPD | grep hostapd`
if [ -n "$HOSTAPD" ]; then
echo "hostapd is running. Try to stop it"
killall -9 hostapd
while [ 1 ]
do
HOSTAPD=`ps`
HOSTAPD=`echo $HOSTAPD | grep hostapd`
if [ -n "$HOSTAPD" ]; then
if [ $TRY -gt 5 ]; then
echo "can't stop hostapd"
exit 255
else
echo "TRY=$TRY"
TRY=$((${TRY}+1))
sleep 1
fi
else
echo "hostapd is stopped"
break
fi
done
fi
TRY=0
WPA=`ps`
WPA=`echo $WPA | grep wpa_supplicant`
if [ -n "$WPA" ]; then
echo "wpa_supplicant is running. Try to stop it"
killall -9 wpa_supplicant
while [ 1 ]
do
WPA=`ps`
WPA=`echo $WPA | grep wpa_supplicant`
if [ -n "$WPA" ]; then
if [ $TRY -gt 5 ]; then
echo "can't stop wpa_supplicant"
exit 255
else
echo "TRY=$TRY"
TRY=$((${TRY}+1))
sleep 1
fi
else
echo "wpa_supplicant is stopped"
break
fi
done
fi
if [ "$1" == "ap" ]; then
if [ "$2" == "0" ]; then
ifconfig wlan0 up
if [ "$3" == "2.4G" ]; then
/usr/local/bin/dhd_priv setband 2
elif [ "$3" == "5G" ]; then
/usr/local/bin/dhd_priv setband 1
else
/usr/local/bin/dhd_priv setband 0
fi
/usr/local/bin/dhd_priv get_best_channels|grep ret > /var/run/ACS.txt
filename="/var/run/ACS.txt"
exec < $filename
read str
channel_acs=$(echo $str | cut -d" " -f 4)
if [ "$3" == "2.4G" ]; then
echo channel=${channel_acs##*2g=} >> /var/run/hostapd.conf
elif [ "$3" == "5G" ]; then
echo channel=${channel_acs##*5g=} >> /var/run/hostapd.conf
else
echo channel=${channel_acs##*2g=} >> /var/run/hostapd.conf
fi
rm /var/run/ACS.txt
else
echo channel=$2 >> /var/run/hostapd.conf
fi
echo driver=nl80211 >> /var/run/hostapd.conf
echo wmm_enabled=1 >> /var/run/hostapd.conf
if [ "$AMPK_AP" == "0" ]; then
/usr/bin/hostapd /var/run/hostapd.conf &
elif [ "$AMPK_AP" == "1" ]; then
SSID=$(grep -w ssid /var/run/hostapd.conf|cut -d"=" -f 2)
CHANNEL=$(grep -w channel /var/run/hostapd.conf|cut -d"=" -f 2)
WPA=$(grep -w wpa /var/run/hostapd.conf|cut -d"=" -f 2)
if [ "$WPA" == "2" ]; then
PSK=$(grep -w wpa_passphrase /var/run/hostapd.conf|cut -d"=" -f 2)
/usr/local/bin/dhd_priv iapsta_init mode ap
/usr/local/bin/dhd_priv iapsta_config ifname wlan0 ssid $SSID chan $CHANNEL amode wpa2psk emode aes key $PSK
/usr/local/bin/dhd_priv iapsta_enable ifname wlan0
else
/usr/local/bin/dhd_priv iapsta_init mode ap
/usr/local/bin/dhd_priv iapsta_config ifname wlan0 ssid $SSID chan $CHANNEL amode open emode none
/usr/local/bin/dhd_priv iapsta_enable ifname wlan0
fi
fi
TRY=0
while [ 1 ]
do
UP=`ifconfig wlan0 | grep UP`
echo "UP=$UP"
if [ -z "$UP" ]; then
echo "TRY=$TRY"
if [ $TRY -gt 5 ]; then
hostapd stop
exit 255
else
TRY=$((${TRY}+1))
sleep 1
fi
else
echo "UP ok"
ifconfig wlan0 192.168.1.254
break
fi
done
udhcpd /etc/udhcpdw.conf
TRY=0
while [ 1 ]
do
DHCP=`ps`
DHCP=`echo $DHCP | grep udhcpd`
echo "DHCP=$DHCP"
if [ -z "$DHCP" ]; then
echo "TRY=$TRY"
if [ $TRY -gt 5 ]; then
echo "Can't run udhcpd"
exit 255
else
TRY=$((${TRY}+1))
sleep 1
fi
else
echo "udhcpd ok"
exit 0
fi
done
elif [ "$1" == "sta" ]; then
wpa_supplicant -Dnl80211 -i wlan0 -c /var/run/wpa_supplicant.conf &
TRY=0
while [ 1 ]
do
UP=`ifconfig wlan0 | grep UP`
echo "UP=$UP"
if [ -z "$UP" ]; then
echo "TRY=$TRY"
if [ $TRY -gt 5 ]; then
hostapd stop
exit 255
else
TRY=$((${TRY}+1))
sleep 1
fi
else
echo "UP ok"
ifconfig wlan0 192.168.1.1
break
fi
done
udhcpc -i wlan0
TRY=0
while [ 1 ]
do
DHCP=`ps`
DHCP=`echo $DHCP | grep udhcpc`
echo "DHCP=$DHCP"
if [ -z "$DHCP" ]; then
echo "TRY=$TRY"
if [ $TRY -gt 5 ]; then
echo "Can't run udhcpc"
exit 255
else
TRY=$((${TRY}+1))
sleep 1
fi
else
echo "udhcpd ok"
exit 0
fi
done
fi
exit 255