small-packages/my-default-settings/files/sbin/mywifi
2026-05-10 09:48:30 +08:00

56 lines
1.9 KiB
Bash

#!/bin/sh
board_name() {
[ -e /tmp/sysinfo/board_name ] && cat /tmp/sysinfo/board_name || echo "generic"
}
wifi_setup_radio(){
local radio=$1
htmode="$(uci -q get wireless.${radio}.htmode)"
if uci -q get wireless.${radio} >/dev/null; then
uci -q del wireless.${radio}.disabled
uci -q set wireless.${radio}.country='CN'
if [ "$(uci -q get wireless.${radio}.band)" = "5g" ]; then
uci -q set wireless.default_${radio}.ssid="${SSID}_5G"
if [[ "$DISTRIB_TARGET" == *ipq60xx ]]; then
uci set wireless.${radio}.htmode='HE80'
fi
elif [ "$(uci -q get wireless.${radio}.band)" = "2g" ]; then
uci -q set wireless.default_${radio}.ssid="${SSID}_2.4G"
fi
uci -q set wireless.default_${radio}.device="${radio}"
SSID_PASSWD="${SSID_PASSWD:-$(uci -q get wireless.default_${radio}.key)}"
if [ "${SSID_PASSWD}" ]; then
uci -q set wireless.default_${radio}.encryption='psk2'
uci -q set wireless.default_${radio}.key="${SSID_PASSWD}"
else
uci -q set wireless.default_${radio}.encryption='none'
fi
fi
}
for i in $(seq 1 10); do
[[ "$(uci -q get base_config.@status[0].inited)" == 1 && "$(cat /etc/config/wireless)" ]] && break
[ "$(cat /etc/config/wireless)" ] || /sbin/wifi config
sleep 1s
done
if [[ "$(cat /etc/config/wireless)" ]]; then
. /etc/openwrt_release
SSID="$(uci -q get wizard.default.wifi_ssid || uci -q get system.@system[0].hostname || echo Kwrt)"
SSID_PASSWD="$(uci -q get wizard.default.wifi_key)"
sed -i '/option disabled/d' /etc/config/wireless
[ "$(uci -q get wireless.radio1.band)" == "5g" ] && uci -q set wireless.radio0.band="2g"
widx=0
while uci rename wireless.@wifi-iface[$widx]=default_radio$widx >/dev/null 2>&1; do widx=$((widx+1)); done
for radio in radio0 radio1 radio2 radio3; do
wifi_setup_radio ${radio}
done
uci commit wireless
uci -q set base_config.@status[0].wifi=1
uci commit base_config
/sbin/wifi reload
fi