diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/005-wireless-migration b/package/gluon-core/luasrc/lib/gluon/upgrade/005-wireless-migration
new file mode 100755
index 0000000000000000000000000000000000000000..fc79249bd047dcc91782ba707f2872467bdd9dc2
--- /dev/null
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/005-wireless-migration
@@ -0,0 +1,20 @@
+#!/usr/bin/lua
+
+local uci = require('simple-uci').cursor()
+
+-- Migration from hwmode to band (OpenWrt 21.02)
+-- Use uci:foreach(), as wireless.foreach_radio() depends on band already being set
+uci:foreach('wireless', 'wifi-device', function(radio)
+	local radio_name = radio['.name']
+	local hwmode = radio.hwmode
+	if not radio.band then
+		if hwmode == '11g' or hwmode == '11ng' then
+			uci:set('wireless', radio_name, 'band', '2g')
+		elseif hwmode == '11a' or hwmode == '11na' then
+			uci:set('wireless', radio_name, 'band', '5g')
+		end
+	end
+	uci:delete('wireless', radio_name, 'hwmode')
+end)
+
+uci:save('wireless')