diff --git a/package/gluon-config-mode-outdoor/luasrc/lib/gluon/config-mode/wizard/0250-outdoor.lua b/package/gluon-config-mode-outdoor/luasrc/lib/gluon/config-mode/wizard/0250-outdoor.lua
index c36c1f8f3479ea9efe901ee3376eaa6b789aaea3..3f1f0cbe5d121c2e3b2d0d4a6e714da25ccbdec6 100644
--- a/package/gluon-config-mode-outdoor/luasrc/lib/gluon/config-mode/wizard/0250-outdoor.lua
+++ b/package/gluon-config-mode-outdoor/luasrc/lib/gluon/config-mode/wizard/0250-outdoor.lua
@@ -25,5 +25,5 @@ return function(form, uci)
 		end
 	end
 
-	return {'gluon', 'wireless'}
+	return {'gluon', 'network', 'wireless'}
 end
diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless b/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless
index 5cc43f685432bf70288a1744c4c338c69bd57bf0..f72908a211e36bec59bcc94674d4c9890088b84c 100755
--- a/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless
@@ -162,12 +162,13 @@ local function fixup_wan(radio, index)
 	uci:set('wireless', name, 'macaddr', macaddr)
 end
 
-local function configure_mesh_wireless(radio, index, config)
+local function configure_mesh_wireless(radio, index, config, disabled)
 	local radio_name = radio['.name']
 	local suffix = radio_name:match('^radio(%d+)$')
 
 	configure_mesh(config.mesh(), radio, index, suffix,
 		first_non_nil(
+			disabled,
 			is_disabled('mesh_' .. radio_name),
 			config.mesh.disabled(false)
 		)
@@ -215,7 +216,7 @@ wireless.foreach_radio(uci, function(radio, index, config)
 			util.add_to_set(hostapd_options, 'country3=0x4f')
 			uci:set_list('wireless', radio_name, 'hostapd_options', hostapd_options)
 
-			uci:delete('wireless', 'mesh_' .. radio_name)
+			configure_mesh_wireless(radio, index, config, true)
 		else
 			uci:delete('wireless', radio_name, 'channels')
 
diff --git a/package/gluon-web-wifi-config/luasrc/lib/gluon/config-mode/model/admin/wifi-config.lua b/package/gluon-web-wifi-config/luasrc/lib/gluon/config-mode/model/admin/wifi-config.lua
index 32cdc249032146bf6db091415da28b2b971226c5..98501bd8af3de7f8f0dec7a4f14ac82b8502a024 100644
--- a/package/gluon-web-wifi-config/luasrc/lib/gluon/config-mode/model/admin/wifi-config.lua
+++ b/package/gluon-web-wifi-config/luasrc/lib/gluon/config-mode/model/admin/wifi-config.lua
@@ -47,13 +47,18 @@ f:section(Section, nil, translate(
 ))
 
 
+local mesh_vifs_5ghz = {}
+
+
 uci:foreach('wireless', 'wifi-device', function(config)
 	local radio = config['.name']
 
+	local is_5ghz = false
 	local title
 	if config.hwmode == '11g' or config.hwmode == '11ng' then
 		title = translate("2.4GHz WLAN")
 	elseif config.hwmode == '11a' or config.hwmode == '11na' then
+		is_5ghz = true
 		title = translate("5GHz WLAN")
 	else
 		return
@@ -71,14 +76,13 @@ uci:foreach('wireless', 'wifi-device', function(config)
 		return out
 	end
 
-	local function filter_active_interfaces(interfaces)
-		local out = false
+	local function has_active_interfaces(interfaces)
 		for _, interface in ipairs(interfaces) do
 			if not uci:get_bool('wireless', interface .. '_' .. radio, 'disabled') then
-				out = true
+				return true
 			end
 		end
-		return out
+		return false
 	end
 
 	local function vif_option(name, interfaces, msg)
@@ -89,17 +93,23 @@ uci:foreach('wireless', 'wifi-device', function(config)
 		end
 
 		local o = p:option(Flag, radio .. '_' .. name .. '_enabled', msg)
-		o.default = filter_active_interfaces(existing_interfaces)
+		o.default = has_active_interfaces(existing_interfaces)
 
 		function o:write(data)
 			for _, interface in ipairs(existing_interfaces) do
 				uci:set('wireless', interface .. '_' .. radio, 'disabled', not data)
 			end
 		end
+
+		return o
 	end
 
 	vif_option('client', {'client', 'owe'}, translate('Enable client network (access point)'))
-	vif_option('mesh', {'mesh'}, translate("Enable mesh network (802.11s)"))
+
+	local mesh_vif = vif_option('mesh', {'mesh'}, translate("Enable mesh network (802.11s)"))
+	if is_5ghz then
+		table.insert(mesh_vifs_5ghz, mesh_vif)
+	end
 
 	local phy = wireless.find_phy(config)
 	if not phy then
@@ -143,6 +153,10 @@ if has_5ghz_radio() then
 	local outdoor = r:option(Flag, 'outdoor', translate("Node will be installed outdoors"))
 	outdoor.default = uci:get_bool('gluon', 'wireless', 'outdoor')
 
+	for _, mesh_vif in ipairs(mesh_vifs_5ghz) do
+		mesh_vif:depends(outdoor, false)
+	end
+
 	function outdoor:write(data)
 		uci:set('gluon', 'wireless', 'outdoor', data)
 	end
@@ -181,6 +195,7 @@ end
 function f:write()
 	uci:commit('gluon')
 	os.execute('/lib/gluon/upgrade/200-wireless')
+	uci:commit('network')
 	uci:commit('wireless')
 end