mac80211:Update default Wi-Fi ESSID
This commit is contained in:
		
							parent
							
								
									f9ae50ae89
								
							
						
					
					
						commit
						536617e4f2
					
				|  | @ -0,0 +1,121 @@ | |||
| #!/bin/sh | ||||
| . /lib/netifd/mac80211.sh | ||||
| 
 | ||||
| append DRIVERS "mac80211" | ||||
| 
 | ||||
| lookup_phy() { | ||||
| 	[ -n "$phy" ] && { | ||||
| 		[ -d /sys/class/ieee80211/$phy ] && return | ||||
| 	} | ||||
| 
 | ||||
| 	local devpath | ||||
| 	config_get devpath "$device" path | ||||
| 	[ -n "$devpath" ] && { | ||||
| 		phy="$(mac80211_path_to_phy "$devpath")" | ||||
| 		[ -n "$phy" ] && return | ||||
| 	} | ||||
| 
 | ||||
| 	local macaddr="$(config_get "$device" macaddr | tr 'A-Z' 'a-z')" | ||||
| 	[ -n "$macaddr" ] && { | ||||
| 		for _phy in /sys/class/ieee80211/*; do | ||||
| 			[ -e "$_phy" ] || continue | ||||
| 
 | ||||
| 			[ "$macaddr" = "$(cat ${_phy}/macaddress)" ] || continue | ||||
| 			phy="${_phy##*/}" | ||||
| 			return | ||||
| 		done | ||||
| 	} | ||||
| 	phy= | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| find_mac80211_phy() { | ||||
| 	local device="$1" | ||||
| 
 | ||||
| 	config_get phy "$device" phy | ||||
| 	lookup_phy | ||||
| 	[ -n "$phy" -a -d "/sys/class/ieee80211/$phy" ] || { | ||||
| 		echo "PHY for wifi device $1 not found" | ||||
| 		return 1 | ||||
| 	} | ||||
| 	config_set "$device" phy "$phy" | ||||
| 
 | ||||
| 	config_get macaddr "$device" macaddr | ||||
| 	[ -z "$macaddr" ] && { | ||||
| 		config_set "$device" macaddr "$(cat /sys/class/ieee80211/${phy}/macaddress)" | ||||
| 	} | ||||
| 
 | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| check_mac80211_device() { | ||||
| 	config_get phy "$1" phy | ||||
| 	[ -z "$phy" ] && { | ||||
| 		find_mac80211_phy "$1" >/dev/null || return 0 | ||||
| 		config_get phy "$1" phy | ||||
| 	} | ||||
| 	[ "$phy" = "$dev" ] && found=1 | ||||
| } | ||||
| 
 | ||||
| detect_mac80211() { | ||||
| 	devidx=0 | ||||
| 	config_load wireless | ||||
| 	while :; do | ||||
| 		config_get type "radio$devidx" type | ||||
| 		[ -n "$type" ] || break | ||||
| 		devidx=$(($devidx + 1)) | ||||
| 	done | ||||
| 
 | ||||
| 	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_band="g" | ||||
| 		channel="11" | ||||
| 		htmode="" | ||||
| 		ht_capab="" | ||||
| 
 | ||||
| 		iw phy "$dev" info | grep -q 'Capabilities:' && htmode=HT20 | ||||
| 
 | ||||
| 		iw phy "$dev" info | grep -q '5180 MHz' && { | ||||
| 			mode_band="a" | ||||
| 			channel="36" | ||||
| 			iw phy "$dev" info | grep -q 'VHT Capabilities' && htmode="VHT80" | ||||
| 		} | ||||
| 
 | ||||
| 		[ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode" | ||||
| 
 | ||||
| 		path="$(mac80211_phy_to_path "$dev")" | ||||
| 		if [ -n "$path" ]; then | ||||
| 			dev_id="set wireless.radio${devidx}.path='$path'" | ||||
| 		else | ||||
| 			dev_id="set wireless.radio${devidx}.macaddr=$(cat /sys/class/ieee80211/${dev}/macaddress)" | ||||
| 		fi | ||||
| 
 | ||||
| 		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=0 | ||||
| 			set wireless.radio${devidx}.country=US | ||||
| 			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_radio0.ssid=OpenWrt_2.4G | ||||
| 			set wireless.default_radio1.ssid=OpenWrt_5G | ||||
| 			set wireless.default_radio${devidx}.encryption=none | ||||
| EOF | ||||
| 		uci -q commit wireless | ||||
| 
 | ||||
| 		devidx=$(($devidx + 1)) | ||||
| 	done | ||||
| } | ||||
		Loading…
	
		Reference in New Issue