102 lines
2.1 KiB
Bash
Executable File
102 lines
2.1 KiB
Bash
Executable File
#!/bin/sh -
|
|
# Copyright (C) 2018, STMicroelectronics - All Rights Reserved
|
|
|
|
#
|
|
# For changing the password and SSID, please populate the file /etc/default/hostapd
|
|
# cat /etc/default/hostapd
|
|
# HOSTAPD_SSID=STExampleNetwork
|
|
# HOSTAPD_PASSWD=stm32mp1
|
|
|
|
|
|
if [ -f /etc/default/hostapd ];
|
|
then
|
|
source /etc/default/hostapd
|
|
else
|
|
HOSTAPD_SSID=STDemoNetwork
|
|
HOSTAPD_PASSWD=stm32mp1
|
|
fi
|
|
|
|
WLAN_INTERFACE=$(/sbin/ip link show wlan0 | head -n 1 | awk '{print $2}' | tr '\n' ' ' | sed "s/://" | sed "s/ //g")
|
|
|
|
network_hotspot_install() {
|
|
# systemd netword hotsopt configuration
|
|
cat > /lib/systemd/network/hostapd.network << EOF
|
|
[Match]
|
|
Name=$WLAN_INTERFACE
|
|
|
|
[Network]
|
|
Address=192.168.72.1/24
|
|
DHCPServer=yes
|
|
IPForward=ipv4
|
|
IPMasquerade=yes
|
|
|
|
[DHCP]
|
|
CriticalConnection=true
|
|
UseTimezone=false
|
|
|
|
[DHCPServer]
|
|
EmitTimezone=no
|
|
EOF
|
|
|
|
# hotapd configuration
|
|
cat > /etc/hostapd.conf << EOF
|
|
interface=$WLAN_INTERFACE
|
|
driver=nl80211
|
|
# mode Wi-Fi (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g)
|
|
hw_mode=g
|
|
ssid=$HOSTAPD_SSID
|
|
channel=7
|
|
wmm_enabled=0
|
|
macaddr_acl=0
|
|
# Wi-Fi closed, need an authentication
|
|
auth_algs=1
|
|
ignore_broadcast_ssid=0
|
|
wpa=2
|
|
wpa_passphrase=$HOSTAPD_PASSWD
|
|
wpa_key_mgmt=WPA-PSK
|
|
wpa_pairwise=TKIP
|
|
rsn_pairwise=CCMP
|
|
EOF
|
|
|
|
}
|
|
network_hotspot_erase() {
|
|
rm -f /lib/systemd/network/hostapd.network
|
|
rm -f /etc/hostapd.conf
|
|
}
|
|
|
|
# -------------------------------------------
|
|
# -------------------------------------------
|
|
if test `ifconfig $WLAN_INTERFACE > /dev/null 2>&1` ;
|
|
then
|
|
echo "No WLAN0 interface available !!!!"
|
|
exit 1
|
|
fi
|
|
|
|
case $1 in
|
|
start)
|
|
#verify if file are present
|
|
if test ! -f /lib/systemd/network/hostapd.network ;
|
|
then
|
|
network_hotspot_install
|
|
fi
|
|
# if not install file
|
|
/sbin/ip link set wlan0 up
|
|
# start service
|
|
systemctl daemon-reload
|
|
systemctl restart systemd-networkd.service
|
|
systemctl restart hostapd
|
|
;;
|
|
stop)
|
|
# stop service
|
|
systemctl stop hostapd
|
|
/sbin/ip link set wlan0 down
|
|
# remove file
|
|
network_hotspot_erase
|
|
systemctl restart systemd-networkd.service
|
|
systemctl daemon-reload
|
|
;;
|
|
*)
|
|
echo "Help: $0 [start|stop]"
|
|
;;
|
|
esac
|