diff --git a/docs/user/site.rst b/docs/user/site.rst
index 1f56b3b714406adc127de85d59b13e80575c2611..7094cb8386bb7ea2236a227b4e61fb1bf11f1fda 100644
--- a/docs/user/site.rst
+++ b/docs/user/site.rst
@@ -119,6 +119,10 @@ regdom \: optional
 wifi24 \: optional
     WLAN configuration for 2.4 GHz devices.
     ``channel`` must be set to a valid wireless channel for your radio.
+    ``beacon_interval`` can be specified to set a custom beacon interval in
+    time units (TU). A time unit is equivalent to 1024 microseconds.
+    If not set, the default value of 100 TU (=102.4 ms) is used.
+
 
     There are currently two interface types available. You may choose to
     configure any subset of them:
diff --git a/package/gluon-core/check_site.lua b/package/gluon-core/check_site.lua
index 7a4cd060e4550ea63a1640a7dbffd59ca2449aaf..3966592d4c66fd0c87bf294c00c7845711b1f231 100644
--- a/package/gluon-core/check_site.lua
+++ b/package/gluon-core/check_site.lua
@@ -32,6 +32,7 @@ local supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000}
 for _, config in ipairs({'wifi24', 'wifi5'}) do
 	if need_table({config}, nil, false) then
 		need_string(in_site({'regdom'})) -- regdom is only required when wifi24 or wifi5 is configured
+		need_number({config, 'beacon_interval'}, false)
 
 		if config == "wifi24" then
 			local channels = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless b/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless
index 74449a38424a5c4f53cb511e2d74c5ac3199bd68..5cc43f685432bf70288a1744c4c338c69bd57bf0 100755
--- a/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless
@@ -191,6 +191,7 @@ wireless.foreach_radio(uci, function(radio, index, config)
 
 	local channel = get_channel(radio, config)
 	local htmode = get_htmode(radio)
+	local beacon_interval = config.beacon_interval()
 
 	uci:delete('wireless', radio_name, 'disabled')
 
@@ -226,6 +227,8 @@ wireless.foreach_radio(uci, function(radio, index, config)
 		end
 	end
 
+	uci:set('wireless', radio_name, 'beacon_int', beacon_interval)
+
 	fixup_wan(radio, index)
 end)