diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac b/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
index 56a383a876c197a0abe02f7f19c14d88c2487d9d..2974a29d210b35a8492373d1da76cab6c2b2c9b9 100755
--- a/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
@@ -26,6 +26,10 @@ local function get_netdev_addr(ifname)
 	return read('/sys/class/net/%s/address', ifname)
 end
 
+local function strip_vlan(ifname)
+	return (ifname:gsub('%..*', ''))
+end
+
 
 local function netdev(ifname)
 	return function()
@@ -44,6 +48,8 @@ local function interface(name)
 		local ifdata = network_data[name] or {}
 		if ifdata.macaddr then
 			return ifdata.macaddr
+		elseif ifdata.ifname then
+			return get_netdev_addr(strip_vlan(ifdata.ifname))
 		end
 	end
 end