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 947fa0b4ac..034653fd0e 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 @@ -12,6 +12,11 @@ return function(form, uci) return end + if not wireless.site_supports_outdoor_mode() then + -- Don't show in case the site does not support outdoor-mode + return + end + local pkg_i18n = i18n 'gluon-config-mode-outdoor' local section = form:section(Section, nil, pkg_i18n.translate( diff --git a/package/gluon-core/check_site.lua b/package/gluon-core/check_site.lua index cf72f05fc8..fd6c0ac143 100644 --- a/package/gluon-core/check_site.lua +++ b/package/gluon-core/check_site.lua @@ -46,8 +46,10 @@ for _, config in ipairs({'wifi24', 'wifi5'}) do 120, 122, 124, 126, 128, 132, 134, 136, 138, 140, 142, 144, 149, 151, 153, 155, 157, 159, 161, 165, 169, 173 } need_one_of({config, 'channel'}, channels) - need_chanlist({config, 'outdoor_chanlist'}, channels, false) - need_one_of({config, 'outdoors'}, {true, false, 'preset'}, false) + + local outdoors = need_one_of({config, 'outdoors'}, {true, false, 'preset'}, false) + local outdoor_chanlist_required = (outdoors ~= false) + need_chanlist({config, 'outdoor_chanlist'}, channels, outdoor_chanlist_required) end obsolete({config, 'supported_rates'}, '802.11b rates are disabled by default.') diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/180-outdoors b/package/gluon-core/luasrc/lib/gluon/upgrade/180-outdoors index 59704bffc5..f7818e41e4 100755 --- a/package/gluon-core/luasrc/lib/gluon/upgrade/180-outdoors +++ b/package/gluon-core/luasrc/lib/gluon/upgrade/180-outdoors @@ -18,7 +18,10 @@ local wireless = require 'gluon.wireless' local config = site.wifi5.outdoors('preset') local outdoor -if sysconfig.gluon_version then +if not wireless.site_supports_outdoor_mode() then + -- site does not support outdoor mode + outdoor = false +elseif sysconfig.gluon_version then -- don't enable the outdoor mode after an upgrade outdoor = false elseif config == 'preset' then diff --git a/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua b/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua index a46fc674d9..a4fa53f6db 100644 --- a/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua +++ b/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua @@ -174,4 +174,8 @@ function M.device_uses_11a(uci) return ret end +function M.site_supports_outdoor_mode() + return site.wifi5.outdoor_chanlist() ~= nil +end + return M 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 49009eaf46..c2e075b8f9 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 @@ -129,8 +129,34 @@ uci:foreach('wireless', 'wifi-device', function(config) end end) +local function show_outdoor_mode() + local enabled = uci:get_bool('gluon', 'wireless', 'outdoor') -if wireless.device_uses_11a(uci) and not wireless.preserve_channels(uci) then + -- Don't show if no radio is 5 GHz + if not wireless.device_uses_11a(uci) then + return false + end + + -- Don't show if preserve_channels is enabled + if wireless.preserve_channels(uci) then + return false + end + + -- Show if outdoor mode is enabled regardless if site + -- supports it or not + if not wireless.site_supports_outdoor_mode() then + return true + end + + -- Don't show if site does not support outdoor mode + if not wireless.site_supports_outdoor_mode() then + return false + end + + return true +end + +if show_outdoor_mode() then local r = f:section(Section, translate("Outdoor Installation"), translate( "Configuring the node for outdoor use tunes the 5 GHz radio to a frequency " .. "and transmission power that conforms with the local regulatory requirements. "