diff --git a/package/gluon-private-wifi/Makefile b/package/gluon-private-wifi/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..622334b52be3f8b49188d17c1a4c774099b89071
--- /dev/null
+++ b/package/gluon-private-wifi/Makefile
@@ -0,0 +1,13 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=gluon-private-wifi
+PKG_VERSION:=1
+
+include ../gluon.mk
+
+define Package/gluon-private-wifi
+  TITLE:=Provides a virtual access point for the nodes WAN network 
+  DEPENDS:=+gluon-core
+endef
+
+$(eval $(call BuildPackageGluon,gluon-private-wifi))
diff --git a/package/gluon-private-wifi/luasrc/lib/gluon/upgrade/325-gluon-private-wifi b/package/gluon-private-wifi/luasrc/lib/gluon/upgrade/325-gluon-private-wifi
new file mode 100755
index 0000000000000000000000000000000000000000..2f46267b06d62961b74bb4770c6a232a581bbb3a
--- /dev/null
+++ b/package/gluon-private-wifi/luasrc/lib/gluon/upgrade/325-gluon-private-wifi
@@ -0,0 +1,18 @@
+#!/usr/bin/lua
+
+local uci = require("simple-uci").cursor()
+local wireless = require 'gluon.wireless'
+
+wireless.foreach_radio(uci, function(radio)
+	local radio_name = radio['.name']
+	local suffix = radio_name:match('^radio(%d+)$')
+	local name   = "wan_" .. radio_name
+
+	if not uci:get('wireless', name, 'device') then
+		return
+	end
+
+	uci:set('wireless', name, 'ifname', suffix and 'wan' .. suffix)
+end)
+
+uci:save('wireless')
diff --git a/package/gluon-web-private-wifi/Makefile b/package/gluon-web-private-wifi/Makefile
index cff13fcb328de5e9ac6d4eb5865fd38f7efdfa35..f016abf44a17d3d26c261bea6c4c224b33f8130d 100644
--- a/package/gluon-web-private-wifi/Makefile
+++ b/package/gluon-web-private-wifi/Makefile
@@ -7,7 +7,7 @@ PKG_RELEASE:=1
 include ../gluon.mk
 
 define Package/gluon-web-private-wifi
-  DEPENDS:=+gluon-web-admin
+  DEPENDS:=+gluon-web-admin +gluon-private-wifi
   TITLE:=UI for activating a private WLAN
 endef
 
diff --git a/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua b/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua
index b3d98ae8ed1862723eb9aae94f1737862fe587ed..a3b80432a2740176dd887aaf178cace252940127 100644
--- a/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua
+++ b/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua
@@ -49,6 +49,7 @@ mfp.default = uci:get('wireless', primary_iface, 'ieee80211w') or "0"
 function f:write()
 	wireless.foreach_radio(uci, function(radio, index)
 		local radio_name = radio['.name']
+		local suffix = radio_name:match('^radio(%d+)$')
 		local name   = "wan_" .. radio_name
 
 		if enabled.data then
@@ -62,6 +63,7 @@ function f:write()
 				ssid       = ssid.data,
 				key        = key.data,
 				macaddr    = macaddr,
+				ifname     = suffix and 'wan' .. suffix,
 				disabled   = false,
 			})