luckfox-pico-sdk/sysdrv/drv_ko/wifi/ssv6x5x/ap_launch.sh
2023-08-08 20:36:47 +08:00

130 lines
3.1 KiB
Bash

#! /bin/bash
BLUE='\e[1;34m'
GREEN='\e[1;32m'
CYAN='\e[1;36m'
RED='\e[1;31m'
PURPLE='\e[1;35m'
YELLOW='\e[1;33m'
# No Color
NC='\e[0m'
#usage......
#./ap_launch.sh [wlanx]
if [ -z "$1" ]; then
echo -e "${RED}Please input the intfeface name${NC}"
echo -e "${RED}Usage:${NC}"
echo -e "${RED} ./ap_launch.sh [wlanx]${NC}"
echo -e ""
echo -e ""
echo -e ""
echo -e "${PURPLE}Please follow this procedure to lauch ap on ubuntu platform${NC}"
echo -e "${PURPLE}1. ./ap_shutdown.sh${NC}"
echo -e "${PURPLE}2. ./load.sh${NC}"
echo -e "${PURPLE}3. Disable ubuntu's network managerment${NC}"
echo -e "${PURPLE}4. rfkill unblock wifi${NC}"
#echo -e "${PURPLE}5. service isc-dhcp-server stop${NC}"
#echo -e "${PURPLE}6. service isc-dhcp-server start${NC}"
echo -e "${PURPLE}5. ps aux | grep dhcp (find the number of dhcp-server)${NC}"
echo -e "${PURPLE}6. kill [number] ${NC}"
echo -e "${PURPLE}7. edit ap.cfg for your requirement. ex:SSID, channel ${NC}"
echo -e "${PURPLE}8. use iwconfig to get your interface name${NC}"
echo -e "${PURPLE}9. ./ap_launch.sh [wlanx]${NC}"
exit
fi
dir=$(pwd)
cd $dir
#echo -e "${YELLOW}Unoad wireless driver...${NC}"
#./unload.sh
#PID=$!
#wait $PID
#sleep 2
#echo -e "${YELLOW}Load wireless driver...${NC}"
#./load.sh
#PID=$!
#wait $PID
#sleep 2
#devName=wlan0
devName=$1
echo "device name=$devName"
echo -e "${YELLOW}Config wireless AP...${NC}"
#rm -rf load_dhcp.sh
#rm -rf hostapd.conf
#relpace wlan@@ to real device name
cp script/template/load_dhcp.sh load_dhcp.sh
#cp script/template/hostapd.conf hostapd.conf
awk 'NF' script/template/hostapd.conf | grep -v '#' > hostapd.conf
awk 'NF' ap.cfg | grep -v '#' >> hostapd.conf
sed -i "s/wlan@@/$devName/" load_dhcp.sh
sed -i "s/wlan@@/$devName/" hostapd.conf
chmod 777 load_dhcp.sh
#move to right position
#mv load_dhcp.sh $HOSTPAD_DIR
#mv hostapd.conf $HOSTPAD_DIR/hostapd/
dhcp_config_file="/etc/default/isc-dhcp-server"
dhcp_config=$(grep "$devName" $dhcp_config_file)
if [ "$dhcp_config" != "$devName" ]; then
echo -en "${YELLOW}Config $dhcp_config_file.....${NC}"
rm -rf tmp
sed '/INTERFACE/d' /etc/default/isc-dhcp-server >>tmp
echo "INTERFACES=\"$devName\"" >>tmp
rm -rf $dhcp_config_file
mv tmp /etc/default/isc-dhcp-server
echo -e "${YELLOW}OK${NC}"
fi
dir=$(pwd)
echo -e "${YELLOW}Wireless Done. ${NC}"
trap handle_stop INT
function version_great() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
nmcli_version=$(nmcli -v | cut -d ' ' -f 4)
chk_nmcli_version=0.9.8.999
function handle_stop() {
# popd
if version_great $nmcli_version $chk_nmcli_version; then
nmcli radio wifi on
else
nmcli nm wifi on
fi
echo -e "${YELLOW}Shutting down AP.${NC}"
./ap_shutdown.sh
}
if version_great $nmcli_version $chk_nmcli_version; then
nmcli radio wifi off
else
nmcli nm wifi off
fi
sudo rfkill unblock wlan
#pushd $HOSTPAD_DIR
#. ./load_ap.sh
#$HOSTPAD_DIR/load_dhcp.sh &
./load_dhcp.sh &
PID=$!
wait $PID
echo -e "${YELLOW}Load AP...${NC}"
echo -e "${GREEN}Launch hostapd.${NC}"
#run hostapd2.0
#$HOSTPAD_DIR/hostapd -t hostapd.conf
hostapd -t hostapd.conf