68 lines
1.2 KiB
Bash
Executable File
68 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
ssid=$(fw_printenv -n wlanssid || echo OpenIPC)
|
|
pass=$(fw_printenv -n wlanpass || echo 12345678)
|
|
chan=$(fw_printenv -n wlanchan || echo 1)
|
|
[ "$chan" -le 13 ] && mode=g || mode=a
|
|
|
|
set_config() {
|
|
cat << EOF > /tmp/hostapd.conf
|
|
ctrl_interface=/var/run/hostapd
|
|
interface=wlan0
|
|
channel=$chan
|
|
hw_mode=$mode
|
|
ieee80211n=1
|
|
ieee80211ac=1
|
|
wmm_enabled=1
|
|
rsn_pairwise=CCMP
|
|
wpa=2
|
|
ssid=$ssid
|
|
wpa_passphrase=$pass
|
|
EOF
|
|
}
|
|
|
|
case "$1" in
|
|
setup)
|
|
for card in $(lsusb | awk '{print $6}' | uniq); do
|
|
case "$card" in
|
|
"0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101" | "2604:0012")
|
|
driver=88XXau
|
|
;;
|
|
|
|
"0bda:a81a")
|
|
driver=8812eu
|
|
;;
|
|
|
|
"0bda:f72b" | "0bda:b733")
|
|
driver=8733bu
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$driver" ]; then
|
|
echo "Wireless module not detected!"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Detected driver: $driver"
|
|
modprobe "$driver" rtw_tx_pwr_by_rate=0 rtw_tx_pwr_lmt_enable=0
|
|
|
|
[ "$chan" -le 13 ] && rate=0x8D || rate=0xB7
|
|
echo "$rate" > $(ls /proc/net/*/wlan0/rate_ctl)
|
|
;;
|
|
|
|
start)
|
|
set_config
|
|
hostapd /tmp/hostapd.conf -B
|
|
udhcpd -S
|
|
;;
|
|
|
|
stop)
|
|
killall -q udhcpd wpa_supplicant
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 {setup|start|stop}"
|
|
exit 1
|
|
;;
|
|
esac
|