diff --git a/target/linux/ramips/base-files/etc/uci-defaults/02_network b/target/linux/ramips/base-files/etc/uci-defaults/02_network
index 85337c238b7804d97475b2d02de8ba33e0dee275..f65388f6134f5e767d68726fc45521abb0b167a2 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/02_network
+++ b/target/linux/ramips/base-files/etc/uci-defaults/02_network
@@ -199,19 +199,22 @@ ramips_setup_macs()
 
 	case $board in
 	br-6475nd)
-		lan_mac=$(mtd_get_mac_binary devdata 13)
+		lan_mac=$(cat /sys/class/net/eth0/address)
 		wan_mac=$(mtd_get_mac_binary devdata 7)
 		;;
 
 	w306r-v20)
+		lan_mac=$(cat /sys/class/net/eth0/address)
 		wan_mac=$(macaddr_add "$lan_mac" 5)
 		;;
 
 	tew-691gr)
+		lan_mac=$(cat /sys/class/net/eth0/address)
 		wan_mac=$(macaddr_add "$lan_mac" 3)
 		;;
 
 	tew-692gr)
+		lan_mac=$(cat /sys/class/net/eth0/address)
 		wan_mac=$(macaddr_add "$lan_mac" 4)
 		;;
 
@@ -219,10 +222,24 @@ ramips_setup_macs()
 	m4 |\
 	x5 |\
 	x8)
-		lan_mac=$(macaddr_add "$lan_mac" -1)
+		lan_mac=$(cat /sys/class/net/eth0/address)
+		lan_mac=$(macaddr_add "$lan_mac" -2)
 		;;
 
-	dir-620-a1)
+	bc2 |\
+	broadway |\
+	d105 |\
+	dir-620-a1 |\
+	esr-9753 |\
+	freestation5 |\
+	hlk-rm04 | \
+	mpr-a1 | \
+	mpr-a2 | \
+	dir-300-b7 | \
+	dir-320-b1 | \
+	psr-680w |\
+	sl-r7205)
+		lan_mac=$(cat /sys/class/net/eth0/address)
 		lan_mac=$(macaddr_setbit_la "$lan_mac")
 		wan_mac=$(macaddr_add "$lan_mac" 1)
 		;;
@@ -233,12 +250,13 @@ ramips_setup_macs()
 		wan_mac=$(mtd_get_mac_ascii nvram wanmac)
 		;;
 
-	nbg-419n | \
 	wcr-150gn)
                 wan_mac=$(mtd_get_mac_binary factory 40)
 		;;
 
 	rt-n56u)
+		lan_mac=$(cat /sys/class/net/eth0/address)
+		lan_mac=$(macaddr_setbit_la "$lan_mac")
 		wan_mac=$(mtd_get_mac_binary factory 32772)
 		;;
 
@@ -250,16 +268,6 @@ ramips_setup_macs()
 		wan_mac=$(mtd_get_mac_binary factory 46)
 		;;
 
-	wl341v3)
-		lan_mac=$(mtd_get_mac_binary board-nvram 65440)
-		wan_mac=$(macaddr_add "$lan_mac" 1)
-		;;
-
-	wr8305rt)
-		lan_mac=$(mtd_get_mac_binary factory 4)
-		wan_mac=$(macaddr_add "$lan_mac" 1)
-		;;
-
 	*)
 		lan_mac=$(cat /sys/class/net/eth0/address)
 		wan_mac=$(macaddr_add "$lan_mac" 1)
diff --git a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
deleted file mode 100644
index 2a0a4fdc761674ba75e089d7c4e9deedf65f5738..0000000000000000000000000000000000000000
--- a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# Copyright (C) 2011 OpenWrt.org
-#
-
-preinit_set_mac_address() {
-	local mac
-
-	. /lib/functions.sh
-	. /lib/ramips.sh
-
-	case $(ramips_board_name) in
-	3g-6200n |\
-	3g-6200nl |\
-	3g300m | \
-	dir-620-d1 |\
-	dir-300-b7 | \
-	w150m | \
-	mzk-w300nh2 |\
-	wl-330n |\
-	wl-330n3g |\
-	wr8305rt)
-		mac=$(mtd_get_mac_binary factory 4)
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	bc2 |\
-	broadway |\
-	d105 |\
-	dir-620-a1 |\
-	esr-9753 |\
-	freestation5 |\
-	hlk-rm04 | \
-	mpr-a1 | \
-	mpr-a2 | \
-	dir-300-b7 | \
-	dir-320-b1 | \
-	psr-680w |\
-	rt-n56u |\
-	sl-r7205)
-		mac=$(mtd_get_mac_binary factory 4)
-		mac=$(macaddr_setbit_la "$mac")
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	br-6475nd)
-		mac=$(mtd_get_mac_binary devdata 13)
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	asl26555 |\
-	dir-300-b1 |\
-	dir-300-b2 |\
-	dir-600-b1 |\
-	dir-610-a1)
-                mac=$(mtd_get_mac_binary devdata 16388)
-                ifconfig eth0 hw ether $mac 2>/dev/null
-                ;;
-	cy-swr1100 |\
-	dir-645)
-		mac=$(mtd_get_mac_ascii nvram lanmac)
-		mac=$(macaddr_setbit_la "$mac")
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	dap-1350)
-		mac=$(mtd_get_mac_binary devdata 46)
-		ifconfig eth0 hw ether $mac 2>/dev/null
-                ;;
-	all0239-3g |\
-	all0256n |\
-	all5002 |\
-	all5003 |\
-	awm002-evb |\
-	carambola |\
-	dir-615-h1 |\
-	fonera20n |\
-	ip2202 |\
-	rt-n13u |\
-	hw550-3g |\
-	nbg-419n |\
-	omni-emb |\
-	omni-emb-hpm |\
-	px4885 |\
-	tew-691gr |\
-	tew-692gr |\
-	w306r-v20 |\
-	w502u    |\
-	wr6202 |\
-	wnce2001 |\
-	xdxrn502j)
-		mac=$(mtd_get_mac_binary factory 40)
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	m3 |\
-	m4 |\
-	x5 |\
-	x8)
-		mac=$(mtd_get_mac_binary factory 4)
-		mac=$(macaddr_add "$mac" -1)
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	wl341v3)
-		mac=$(mtd_get_mac_binary board-nvram 65440)
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	rt-n10-plus)
-		mac=$(mtd_get_mac_binary devconf 4)
-		ifconfig eth0 hw ether $mac 2>/dev/null
-		;;
-	esac
-}
-
-boot_hook_add preinit_main preinit_set_mac_address
diff --git a/target/linux/ramips/dts/3G-6200NL.dts b/target/linux/ramips/dts/3G-6200NL.dts
index 6a2f46f2b3ce90e10b10d5259ab383b690c63521..2dec318c99b991c46a10a5e2ef4a8886f993a1f2 100644
--- a/target/linux/ramips/dts/3G-6200NL.dts
+++ b/target/linux/ramips/dts/3G-6200NL.dts
@@ -54,6 +54,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x4>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x2f>;
 	};
diff --git a/target/linux/ramips/dts/ALL5003.dts b/target/linux/ramips/dts/ALL5003.dts
index 0d21508fba1b0db88d1b9032f7149b8d55b5c85b..1d58b6a555c23e4a7c691a842e74eba2f4f16782 100644
--- a/target/linux/ramips/dts/ALL5003.dts
+++ b/target/linux/ramips/dts/ALL5003.dts
@@ -56,6 +56,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3f>;
 	};
diff --git a/target/linux/ramips/dts/AWM002-EVB-4M.dts b/target/linux/ramips/dts/AWM002-EVB-4M.dts
index 12887d84812268a8f2d8beef0f00233cc146700d..c483d2d290edd0d976377996fce83a90aeb09766 100644
--- a/target/linux/ramips/dts/AWM002-EVB-4M.dts
+++ b/target/linux/ramips/dts/AWM002-EVB-4M.dts
@@ -5,6 +5,10 @@
 / {
 	model = "AsiaRF AWM002 EVB";
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
 	wmac@10180000 {
 		ralink,mtd-eeprom = <&factory 0>;
 	};
diff --git a/target/linux/ramips/dts/AWM002-EVB-8M.dts b/target/linux/ramips/dts/AWM002-EVB-8M.dts
index 3be34bffa56f19a68a6aaf4e03019fc16d424a50..01e1e26fd3b96f1a1b0b1a00466c5d2e051b54bd 100644
--- a/target/linux/ramips/dts/AWM002-EVB-8M.dts
+++ b/target/linux/ramips/dts/AWM002-EVB-8M.dts
@@ -5,6 +5,10 @@
 / {
 	model = "AsiaRF AWM002 EVB";
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
 	wmac@10180000 {
 		ralink,mtd-eeprom = <&factory 0>;
 	};
diff --git a/target/linux/ramips/dts/BR-6475ND.dts b/target/linux/ramips/dts/BR-6475ND.dts
index 60b852560909516af08e4e6923b5880e002ab199..06f00d6d63623e14ce4e90471a320b34e13417d6 100644
--- a/target/linux/ramips/dts/BR-6475ND.dts
+++ b/target/linux/ramips/dts/BR-6475ND.dts
@@ -31,6 +31,7 @@
 
 	ethernet@10100000 {
 		status = "okay";
+		mtd-mac-address = <&devdata 0x0d>;
 
 		port@0 {
 			ralink,fixed-link = <1000 1 1 1>;
@@ -99,7 +100,7 @@
 			read-only;
 		};
 
-		partition@50000 {
+		devdata: partition@50000 {
 			reg = <0x00050000 0x00020000>;
 			label = "devdata";
 			read-only;
diff --git a/target/linux/ramips/dts/DAP-1350.dts b/target/linux/ramips/dts/DAP-1350.dts
index 0513f576af26e4bc27c3ec527bd31011b1b0eeaf..ee53e5ef95230b76b3318b91a8d71c4a19b1bef3 100644
--- a/target/linux/ramips/dts/DAP-1350.dts
+++ b/target/linux/ramips/dts/DAP-1350.dts
@@ -58,6 +58,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&devdata 0x2e>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x2f>;
 	};
diff --git a/target/linux/ramips/dts/DIR-300-B1.dts b/target/linux/ramips/dts/DIR-300-B1.dts
index 621bf088f16b91b2e3208e08a8ce3a1c5ffd2d32..4c5b80fb21cb07ea380fb5028088325cd6fcd07f 100644
--- a/target/linux/ramips/dts/DIR-300-B1.dts
+++ b/target/linux/ramips/dts/DIR-300-B1.dts
@@ -49,7 +49,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4004>;
+		mtd-mac-address = <&devdata 0x4004>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/DIR-600-B1.dts b/target/linux/ramips/dts/DIR-600-B1.dts
index 17903793ee76d377e7575881a26cada92d50b7eb..120a7fcd6da1148ceef5ca7a45ca92d85c3ad73e 100644
--- a/target/linux/ramips/dts/DIR-600-B1.dts
+++ b/target/linux/ramips/dts/DIR-600-B1.dts
@@ -49,7 +49,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4004>;
+		mtd-mac-address = <&devdata 0x4004>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/DIR-610-A1.dts b/target/linux/ramips/dts/DIR-610-A1.dts
index 9893e7aa008dcda5ee5d3cf2edc948d9f3db266c..e345250ed63dc92d9f9e211fc2deacf7ebf72115 100644
--- a/target/linux/ramips/dts/DIR-610-A1.dts
+++ b/target/linux/ramips/dts/DIR-610-A1.dts
@@ -53,7 +53,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4004>;
+		mtd-mac-address = <&devdata 0x4004>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/ESR-9753.dts b/target/linux/ramips/dts/ESR-9753.dts
index 39e4232d4cbb89b6068387218ae880252005e5a2..444ce93ceb1e5946e75a2638b46895bbfc9920d8 100644
--- a/target/linux/ramips/dts/ESR-9753.dts
+++ b/target/linux/ramips/dts/ESR-9753.dts
@@ -78,7 +78,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4004>;
+		mtd-mac-address = <&factory 0x4>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/FREESTATION5.dts b/target/linux/ramips/dts/FREESTATION5.dts
index b221ae401b9fdfd5badb5f079b8177d9c044c333..e2c8d724f248c17945a5f5f4e9c212f407dc01cc 100644
--- a/target/linux/ramips/dts/FREESTATION5.dts
+++ b/target/linux/ramips/dts/FREESTATION5.dts
@@ -53,7 +53,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x28>;
+		mtd-mac-address = <&factory 0x4>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/HW550-3G.dts b/target/linux/ramips/dts/HW550-3G.dts
index 3be3fce7b4a15bc6e033cc2d4f1e42eac8f07388..9cd09c49015c433d463cdd9d37e2cdfcfbfa2553 100644
--- a/target/linux/ramips/dts/HW550-3G.dts
+++ b/target/linux/ramips/dts/HW550-3G.dts
@@ -48,6 +48,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3e>;
 	};
diff --git a/target/linux/ramips/dts/IP2202.dts b/target/linux/ramips/dts/IP2202.dts
index dc2af40364ec90e6904b69e8dc41945e0f8e4e36..47cbb975ee6330aae2e9dfb2ac877f68531bab23 100644
--- a/target/linux/ramips/dts/IP2202.dts
+++ b/target/linux/ramips/dts/IP2202.dts
@@ -49,7 +49,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4>;
+		mtd-mac-address = <&factory 0x28>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/NBG-419N.dts b/target/linux/ramips/dts/NBG-419N.dts
index 6ef27d006ed5428043f2c5f5cb0eeccf45d95937..1a826bdf4fe04243ab60814556cfad62df51dda3 100644
--- a/target/linux/ramips/dts/NBG-419N.dts
+++ b/target/linux/ramips/dts/NBG-419N.dts
@@ -49,7 +49,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4>;
+		mtd-mac-address = <&factory 0x28>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/OMNI-EMB.dts b/target/linux/ramips/dts/OMNI-EMB.dts
index c8bff4dd7d95e4fa3f4035bb631fac00edf36116..d7c5c8acedf0fc68eb83d0f6662114c8004a18dc 100644
--- a/target/linux/ramips/dts/OMNI-EMB.dts
+++ b/target/linux/ramips/dts/OMNI-EMB.dts
@@ -72,6 +72,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x2f>;
 	};
diff --git a/target/linux/ramips/dts/PX4885.dts b/target/linux/ramips/dts/PX4885.dts
index 0dcafc4b46448d8174fa1a38373dc9783622742c..2bea444f8294e794dcec891b2cba19b35090055b 100644
--- a/target/linux/ramips/dts/PX4885.dts
+++ b/target/linux/ramips/dts/PX4885.dts
@@ -53,7 +53,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x2e>;
+		mtd-mac-address = <&factory 0x28>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/RT-N10-PLUS.dts b/target/linux/ramips/dts/RT-N10-PLUS.dts
index b51030c712927d4128751c16085ce308b7a21ac1..a942af2622d869b919a6121909a193696d54c716 100644
--- a/target/linux/ramips/dts/RT-N10-PLUS.dts
+++ b/target/linux/ramips/dts/RT-N10-PLUS.dts
@@ -39,6 +39,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&devconf 0x4>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3e>;
 	};
diff --git a/target/linux/ramips/dts/W306R_V20.dts b/target/linux/ramips/dts/W306R_V20.dts
index 1c2cf6af88abd373b0f785c07d328a316f4208b5..fe505b4fc0b1bc02d46fc149ceb40cd397d25231 100644
--- a/target/linux/ramips/dts/W306R_V20.dts
+++ b/target/linux/ramips/dts/W306R_V20.dts
@@ -49,7 +49,7 @@
 	};
 
 	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4>;
+		mtd-mac-address = <&factory 0x28>;
 	};
 
 	esw@10110000 {
diff --git a/target/linux/ramips/dts/WL341V3.dts b/target/linux/ramips/dts/WL341V3.dts
index 1271cfadbc7046920dc42784af4c8b1ccd9c3527..64d032700c334a92ae2b2281ca5a1cfb8d6832b3 100644
--- a/target/linux/ramips/dts/WL341V3.dts
+++ b/target/linux/ramips/dts/WL341V3.dts
@@ -48,6 +48,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&boardnvram 0xffa0>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3e>;
 	};
diff --git a/target/linux/ramips/dts/WL_330N.dts b/target/linux/ramips/dts/WL_330N.dts
index 999a29d3308bdcfd990543b665416442dbd03005..e25535f1e80c02fab765a93e50f4f98b4e40df4f 100644
--- a/target/linux/ramips/dts/WL_330N.dts
+++ b/target/linux/ramips/dts/WL_330N.dts
@@ -52,6 +52,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x4>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3e>;
 	};
diff --git a/target/linux/ramips/dts/WL_330N3G.dts b/target/linux/ramips/dts/WL_330N3G.dts
index 3b29104af58431607ac317d9c19072d0191e34fd..e1196c697df587626ed7845a5b0492b443f19368 100644
--- a/target/linux/ramips/dts/WL_330N3G.dts
+++ b/target/linux/ramips/dts/WL_330N3G.dts
@@ -52,6 +52,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x4>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3e>;
 	};
diff --git a/target/linux/ramips/dts/WR6202.dts b/target/linux/ramips/dts/WR6202.dts
index a769a98abc493593ab27915b80e9d7608cfba890..430205e51bf0428901a81067b049ed41fe825aac 100644
--- a/target/linux/ramips/dts/WR6202.dts
+++ b/target/linux/ramips/dts/WR6202.dts
@@ -81,6 +81,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3e>;
 	};
diff --git a/target/linux/ramips/dts/XDXRN502J.dts b/target/linux/ramips/dts/XDXRN502J.dts
index 000f9db40549635c844d62b278b3133957a149b2..d7ca6cdf18af4d48f246354a57d6ceaf93a6f611 100644
--- a/target/linux/ramips/dts/XDXRN502J.dts
+++ b/target/linux/ramips/dts/XDXRN502J.dts
@@ -48,6 +48,10 @@
 		};
 	};
 
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
 	esw@10110000 {
 		ralink,portmap = <0x3e>;
 	};