3 append DRIVERS
"mac80211"
7 [ -d /sys
/class
/ieee80211
/$phy ] && return
11 config_get devpath
"$device" path
12 [ -n "$devpath" ] && {
13 phy
="$(iwinfo nl80211 phyname "path
=$devpath")"
14 [ -n "$phy" ] && return
17 local macaddr
="$(config_get "$device" macaddr | tr 'A-Z' 'a-z')"
18 [ -n "$macaddr" ] && {
19 for _phy
in /sys
/class
/ieee80211
/*; do
20 [ -e "$_phy" ] ||
continue
22 [ "$macaddr" = "$(cat ${_phy}/macaddress)" ] ||
continue
34 config_get phy
"$device" phy
36 [ -n "$phy" -a -d "/sys/class/ieee80211/$phy" ] ||
{
37 echo "PHY for wifi device $1 not found"
40 config_set
"$device" phy
"$phy"
42 config_get macaddr
"$device" macaddr
43 [ -z "$macaddr" ] && {
44 config_set
"$device" macaddr
"$(cat /sys/class/ieee80211/${phy}/macaddress)"
50 check_mac80211_device
() {
51 config_get phy
"$1" phy
53 find_mac80211_phy
"$1" >/dev
/null ||
return 0
54 config_get phy
"$1" phy
56 [ "$phy" = "$dev" ] && found
=1
60 __get_band_defaults
() {
63 ( iw phy
"$phy" info
; echo ) |
awk '
68 ($1 == "Band" || $1 == "") && band {
72 if (vht && band != "1:") mode="VHT80"
74 if (he && band == "1:") mode="HE20"
75 sub("\\[", "", channel)
76 sub("\\]", "", channel)
77 bands = bands band channel ":" mode " "
90 $0 ~ "Capabilities:" {
94 $0 ~ "VHT Capabilities" {
102 $1 == "*" && $3 == "MHz" && $0 !~ /disabled/ && band && !channel {
111 get_band_defaults
() {
114 for c
in $
(__get_band_defaults
"$phy"); do
115 local band
="${c%%:*}"
117 local chan
="${c%%:*}"
119 local mode
="${c%%:*}"
129 [ -n "$band" ] ||
continue
130 [ -n "$mode_band" -a "$band" = "6g" ] && return
142 config_get
type "radio$devidx" type
143 [ -n "$type" ] ||
break
144 devidx
=$
(($devidx + 1))
147 for _dev
in /sys
/class
/ieee80211
/*; do
148 [ -e "$_dev" ] ||
continue
153 config_foreach check_mac80211_device wifi-device
154 [ "$found" -gt 0 ] && continue
161 get_band_defaults
"$dev"
163 path
="$(iwinfo nl80211 path "$dev")"
164 if [ -n "$path" ]; then
165 dev_id
="set wireless.radio${devidx}.path='$path'"
167 dev_id
="set wireless.radio${devidx}.macaddr=$(cat /sys/class/ieee80211/${dev}/macaddress)"
171 set wireless.radio${devidx}=wifi-device
172 set wireless.radio${devidx}.type=mac80211
174 set wireless.radio${devidx}.channel=${channel}
175 set wireless.radio${devidx}.band=${mode_band}
176 set wireless.radio${devidx}.htmode=$htmode
177 set wireless.radio${devidx}.disabled=1
179 set wireless.default_radio${devidx}=wifi-iface
180 set wireless.default_radio${devidx}.device=radio${devidx}
181 set wireless.default_radio${devidx}.network=lan
182 set wireless.default_radio${devidx}.mode=ap
183 set wireless.default_radio${devidx}.ssid=OpenWrt
184 set wireless.default_radio${devidx}.encryption=none
186 uci
-q commit wireless
188 devidx
=$
(($devidx + 1))