diff --git a/package/gluon-core/files/lib/gluon/label_mac.sh b/package/gluon-core/files/lib/gluon/label_mac.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3479324bc65a1650314375306e2d48d933cda3e8
--- /dev/null
+++ b/package/gluon-core/files/lib/gluon/label_mac.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+. /lib/functions/system.sh
+
+get_mac_label
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 186949367ee52617d16bc80f41b92937ef29f9c0..f4cbfdabadfcd1dfd76cb941b43eebd1235aabe1 100755
--- a/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
@@ -54,6 +54,19 @@ local function interface(name)
 	end
 end
 
+local function label_mac()
+	return function()
+		local mac = util.exec('/lib/gluon/label_mac.sh')
+
+		if mac == nil then return nil end
+
+		mac = util.trim(mac)
+		if string.len(mac) ~= 17 then return nil end
+
+		return mac
+	end
+end
+
 
 -- Entries are matched in the order they are listed
 local primary_addrs = {
@@ -148,6 +161,10 @@ local primary_addrs = {
 			'dir-860l-b1',
 		}},
 	}},
+	-- label-mac-device default
+	{label_mac(), {
+		{}, -- matches everything
+	}},
 	-- phy0 default
 	{phy(0), {
 		{}, -- matches everything