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 7fce90149c142a1742446eb556c8676a62ff91e7..2a5bc2c7913a2fb56ccf396b78fd47df8171dc6b 100755
--- a/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
@@ -8,6 +8,7 @@ if sysconfig.primary_mac then
 end
 
 
+local json = require 'jsonc'
 local platform = require 'gluon.platform'
 local util = require 'gluon.util'
 
@@ -30,6 +31,15 @@ local function phy(index)
 	return sysfs('/sys/class/ieee80211/phy%d/macaddress', index)
 end
 
+local function board(iface)
+	return function()
+		local data = json.load('/etc/board.json')
+		if data and data.network and data.network[iface] then
+			return data.network[iface].macaddr
+		end
+	end
+end
+
 
 -- Entries are matched in the order they are listed
 local primary_addrs = {
@@ -111,6 +121,11 @@ local primary_addrs = {
 			'dir-860l-b1',
 		}},
 	}},
+	{board('lan'), {
+		{'lantiq', 'xway', {
+			'netgear,dgn3500b',
+		}},
+	}},
 	-- phy0 default
 	{phy(0), {
 		{}, -- matches everything