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