local devpath
config_get devpath "$device" path
- [ -n "$devpath" -a -d "/sys/devices/$devpath/ieee80211" ] && {
- phy="$(ls /sys/devices/$devpath/ieee80211 | grep -m 1 phy)"
- [ -n "$phy" ] && return
+ [ -n "$devpath" ] && {
+ for phy in $(ls /sys/class/ieee80211 2>/dev/null); do
+ case "$(readlink -f /sys/class/ieee80211/$phy/device)" in
+ *$devpath) return;;
+ esac
+ done
}
local macaddr="$(config_get "$device" macaddr | tr 'A-Z' 'a-z')"
[ -n "$macaddr" ] && {
- for _phy in $(ls /sys/class/ieee80211 2>/dev/null); do
- [ "$macaddr" = "$(cat /sys/class/ieee80211/${_phy}/macaddress)" ] || continue
- phy="$_phy"
+ for _phy in /sys/class/ieee80211/*; do
+ [ -e "$_phy" ] || continue
+
+ [ "$macaddr" = "$(cat ${_phy}/macaddress)" ] || continue
+ phy="${_phy##*/}"
return
done
}
[ -n "$type" ] || break
devidx=$(($devidx + 1))
done
- for dev in $(ls /sys/class/ieee80211); do
+
+ for _dev in /sys/class/ieee80211/*; do
+ [ -e "$_dev" ] || continue
+
+ dev="${_dev##*/}"
+
found=0
config_foreach check_mac80211_device wifi-device
[ "$found" -gt 0 ] && continue
- mode_11n=""
mode_band="g"
channel="11"
htmode=""
+ ht_capab=""
iw phy "$dev" info | grep -q 'Capabilities:' && htmode=HT20
iw phy "$dev" info | grep -q '2412 MHz' || { mode_band="a"; channel="36"; }
vht_cap=$(iw phy "$dev" info | grep -c 'VHT Capabilities')
- [ "$vht_cap" -gt 0 ] && {
+ cap_5ghz=$(iw phy "$dev" info | grep -c "Band 2")
+ [ "$vht_cap" -gt 0 -a "$cap_5ghz" -gt 0 ] && {
mode_band="a";
channel="36"
htmode="VHT80"
}
- [ -n $htmode ] && append ht_capab " option htmode $htmode" "$N"
+ [ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode"
- if [ -x /usr/bin/readlink ]; then
+ if [ -x /usr/bin/readlink -a -h /sys/class/ieee80211/${dev} ]; then
path="$(readlink -f /sys/class/ieee80211/${dev}/device)"
+ else
+ path=""
+ fi
+ if [ -n "$path" ]; then
path="${path##/sys/devices/}"
- dev_id=" option path '$path'"
+ case "$path" in
+ platform*/pci*) path="${path##platform/}";;
+ esac
+ dev_id="set wireless.radio${devidx}.path='$path'"
else
- dev_id=" option macaddr $(cat /sys/class/ieee80211/${dev}/macaddress)"
+ dev_id="set wireless.radio${devidx}.macaddr=$(cat /sys/class/ieee80211/${dev}/macaddress)"
fi
- cat <<EOF
-config wifi-device radio$devidx
- option type mac80211
- option channel ${channel}
- option hwmode 11${mode_11n}${mode_band}
-$dev_id
-$ht_capab
- # REMOVE THIS LINE TO ENABLE WIFI:
- option disabled 1
-
-config wifi-iface
- option device radio$devidx
- option network lan
- option mode ap
- option ssid OpenWrt
- option encryption none
-
+ uci -q batch <<-EOF
+ set wireless.radio${devidx}=wifi-device
+ set wireless.radio${devidx}.type=mac80211
+ set wireless.radio${devidx}.channel=${channel}
+ set wireless.radio${devidx}.hwmode=11${mode_band}
+ ${dev_id}
+ ${ht_capab}
+ set wireless.radio${devidx}.disabled=1
+
+ set wireless.default_radio${devidx}=wifi-iface
+ set wireless.default_radio${devidx}.device=radio${devidx}
+ set wireless.default_radio${devidx}.network=lan
+ set wireless.default_radio${devidx}.mode=ap
+ set wireless.default_radio${devidx}.ssid=LEDE
+ set wireless.default_radio${devidx}.encryption=none
EOF
- devidx=$(($devidx + 1))
+ uci -q commit wireless
+
+ devidx=$(($devidx + 1))
done
}
-