diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index bfb186ddf8c..6b14d19feba 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -55,8 +55,11 @@ ramips_board_detect() {
 	*"AR725W")
 		name="ar725w"
 		;;
-	*"ASL26555")
-		name="asl26555"
+	*"ASL26555 (8M)")
+		name="asl26555-8M"
+		;;
+	*"ASL26555 (16M)")
+		name="asl26555-16M"
 		;;
 	*"ATP-52B")
 		name="atp-52b"
@@ -343,8 +346,11 @@ ramips_board_detect() {
 	*"NCS601W")
 		name="ncs601w"
 		;;
-	*"NixcoreX1")
-		name="nixcore-x1"
+	*"NixcoreX1 (8M)")
+		name="nixcore-x1-8M"
+		;;
+	*"NixcoreX1 (16M)")
+		name="nixcore-x1-16M"
 		;;
 	*"NW718")
 		name="nw718"
@@ -451,8 +457,11 @@ ramips_board_detect() {
 	*"V22RW-2X2")
 		name="v22rw-2x2"
 		;;
-	*"VoCore")
-		name="vocore"
+	*"VoCore (8M)")
+		name="vocore-8M"
+		;;
+	*"VoCore (16M)")
+		name="vocore-16M"
 		;;
 	*"VR500")
 		name="vr500"
@@ -556,8 +565,11 @@ ramips_board_detect() {
 	*"WT1520")
 		name="wt1520"
 		;;
-	*"WT3020")
-		name="wt3020"
+	*"WT3020 (4M)")
+		name="wt3020-4M"
+		;;
+	*"WT3020 (8M)")
+		name="wt3020-8M"
 		;;
 	*"WZR-AGL300NH")
 		name="wzr-agl300nh"
@@ -627,5 +639,5 @@ ramips_board_name() {
 	[ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name)
 	[ -z "$name" ] && name="unknown"
 
-	echo "$name"
+	echo "${name%-[0-9]*M}"
 }
diff --git a/target/linux/ramips/base-files/sbin/fixup-mac-address b/target/linux/ramips/base-files/sbin/fixup-mac-address
index 6e3bac4997c..3fd8fcb97a1 100755
--- a/target/linux/ramips/base-files/sbin/fixup-mac-address
+++ b/target/linux/ramips/base-files/sbin/fixup-mac-address
@@ -7,7 +7,8 @@ offset=""
 NEW_MAC=
 YES=
 
-case "$(cat /tmp/sysinfo/board_name)" in
+board=$(ramips_board_name)
+case $board in
 	witi)
 		partname=factory
 		offset=$((0xe000))
diff --git a/target/linux/ramips/dts/ASL26555-16M.dts b/target/linux/ramips/dts/ASL26555-16M.dts
index 2887a6ef027..460fe05efaa 100644
--- a/target/linux/ramips/dts/ASL26555-16M.dts
+++ b/target/linux/ramips/dts/ASL26555-16M.dts
@@ -6,7 +6,7 @@
 
 / {
 	compatible = "ASL26555", "ralink,rt3050-soc";
-	model = "Alpha ASL26555";
+	model = "Alpha ASL26555 (16M)";
 
 	gpio-keys-polled {
 		compatible = "gpio-keys-polled";
diff --git a/target/linux/ramips/dts/ASL26555-8M.dts b/target/linux/ramips/dts/ASL26555-8M.dts
index 5ab65938a1a..288f5552a84 100644
--- a/target/linux/ramips/dts/ASL26555-8M.dts
+++ b/target/linux/ramips/dts/ASL26555-8M.dts
@@ -6,7 +6,7 @@
 
 / {
 	compatible = "ASL26555", "ralink,rt3050-soc";
-	model = "Alpha ASL26555";
+	model = "Alpha ASL26555 (8M)";
 
 	gpio-keys-polled {
 		compatible = "gpio-keys-polled";
diff --git a/target/linux/ramips/dts/NIXCORE-16M.dts b/target/linux/ramips/dts/NIXCORE-16M.dts
index 8f848f41af9..b97c425364f 100644
--- a/target/linux/ramips/dts/NIXCORE-16M.dts
+++ b/target/linux/ramips/dts/NIXCORE-16M.dts
@@ -2,6 +2,10 @@
 
 #include "NIXCORE.dtsi"
 
+/ {
+	model = "NixcoreX1 (16M)";
+};
+
 &spi0 {
 	status = "okay";
 
diff --git a/target/linux/ramips/dts/NIXCORE-8M.dts b/target/linux/ramips/dts/NIXCORE-8M.dts
index 66458676d34..55457d9ddeb 100644
--- a/target/linux/ramips/dts/NIXCORE-8M.dts
+++ b/target/linux/ramips/dts/NIXCORE-8M.dts
@@ -2,6 +2,10 @@
 
 #include "NIXCORE.dtsi"
 
+/ {
+	model = "NixcoreX1 (8M)";
+};
+
 &spi0 {
 	status = "okay";
 
diff --git a/target/linux/ramips/dts/NIXCORE.dtsi b/target/linux/ramips/dts/NIXCORE.dtsi
index 4c233d24ba7..a827b314089 100644
--- a/target/linux/ramips/dts/NIXCORE.dtsi
+++ b/target/linux/ramips/dts/NIXCORE.dtsi
@@ -2,7 +2,6 @@
 
 / {
 	compatible = "Nixcore", "ralink,rt5350-soc";
-	model = "Nixcore";
 
 	chosen {
 		bootargs = "console=ttyS1,57600";
diff --git a/target/linux/ramips/dts/VOCORE-16M.dts b/target/linux/ramips/dts/VOCORE-16M.dts
index f51c4f5407e..dd10784bf15 100644
--- a/target/linux/ramips/dts/VOCORE-16M.dts
+++ b/target/linux/ramips/dts/VOCORE-16M.dts
@@ -2,6 +2,10 @@
 
 #include "VOCORE.dtsi"
 
+/ {
+	model = "VoCore (16M)";
+};
+
 &spi0 {
 	status = "okay";
 
diff --git a/target/linux/ramips/dts/VOCORE-8M.dts b/target/linux/ramips/dts/VOCORE-8M.dts
index 1026c865c55..e3647244f9f 100644
--- a/target/linux/ramips/dts/VOCORE-8M.dts
+++ b/target/linux/ramips/dts/VOCORE-8M.dts
@@ -2,6 +2,10 @@
 
 #include "VOCORE.dtsi"
 
+/ {
+	model = "VoCore (8M)";
+};
+
 &spi0 {
 	status = "okay";
 
diff --git a/target/linux/ramips/dts/VOCORE.dtsi b/target/linux/ramips/dts/VOCORE.dtsi
index bb8a458831f..36f784a389f 100644
--- a/target/linux/ramips/dts/VOCORE.dtsi
+++ b/target/linux/ramips/dts/VOCORE.dtsi
@@ -2,7 +2,6 @@
 
 / {
 	compatible = "VoCore", "ralink,rt5350-soc";
-	model = "VoCore";
 
 	gpio-export {
 		compatible = "gpio-export";
diff --git a/target/linux/ramips/dts/WT3020-4M.dts b/target/linux/ramips/dts/WT3020-4M.dts
index 368a24619c6..6e40d5a8694 100644
--- a/target/linux/ramips/dts/WT3020-4M.dts
+++ b/target/linux/ramips/dts/WT3020-4M.dts
@@ -6,7 +6,7 @@
 
 / {
 	compatible = "wt3020", "ralink,mt7620n-soc";
-	model = "Nexx WT3020";
+	model = "Nexx WT3020 (4M)";
 
 	gpio-keys-polled {
 		compatible = "gpio-keys-polled";
diff --git a/target/linux/ramips/dts/WT3020-8M.dts b/target/linux/ramips/dts/WT3020-8M.dts
index 0e15d031f57..4ef48cb14ef 100644
--- a/target/linux/ramips/dts/WT3020-8M.dts
+++ b/target/linux/ramips/dts/WT3020-8M.dts
@@ -6,7 +6,7 @@
 
 / {
 	compatible = "wt3020", "ralink,mt7620n-soc";
-	model = "Nexx WT3020";
+	model = "Nexx WT3020 (8M)";
 
 	gpio-keys-polled {
 		compatible = "gpio-keys-polled";
diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
index a8c7f5c8c7e..cfdda97907e 100644
--- a/target/linux/ramips/image/mt7620.mk
+++ b/target/linux/ramips/image/mt7620.mk
@@ -89,7 +89,6 @@ define Device/wt3020-4M
   BLOCKSIZE := 4k
   IMAGE_SIZE := $(ralink_default_fw_size_4M)
   IMAGES += factory.bin
-  SUPPORTED_DEVICES := wt3020
   IMAGE/factory.bin := $$(sysupgrade_bin) | check-size $$$$(IMAGE_SIZE) | \
 	poray-header -B WT3020 -F 4M
   DEVICE_TITLE := Nexx WT3020 (4MB)
@@ -99,7 +98,6 @@ TARGET_DEVICES += wt3020-4M
 define Device/wt3020-8M
   DTS := WT3020-8M
   IMAGES += factory.bin
-  SUPPORTED_DEVICES := wt3020
   IMAGE/factory.bin := $$(sysupgrade_bin) | check-size $$$$(IMAGE_SIZE) | \
 	poray-header -B WT3020 -F 8M
   DEVICE_TITLE := Nexx WT3020 (8MB)
diff --git a/target/linux/ramips/image/rt305x.mk b/target/linux/ramips/image/rt305x.mk
index ac31cfa9ac2..06aaf43e8e3 100644
--- a/target/linux/ramips/image/rt305x.mk
+++ b/target/linux/ramips/image/rt305x.mk
@@ -40,7 +40,6 @@ TARGET_DEVICES += all5003
 define Device/asl26555-8M
   DTS := ASL26555-8M
   IMAGE_SIZE := 7744k
-  SUPPORTED_DEVICES := asl26555
   DEVICE_TITLE := Alpha ASL26555 
   DEVICE_PACKAGES := kmod-usb-core kmod-usb-dwc2 kmod-usb-ledtrig-usbport
 endef
@@ -49,7 +48,6 @@ TARGET_DEVICES += asl26555-8M
 define Device/asl26555-16M
   DTS := ASL26555-16M
   IMAGE_SIZE := 15872k
-  SUPPORTED_DEVICES := asl26555
   DEVICE_TITLE := Alpha ASL26555 16M
   DEVICE_PACKAGES :=
 endef
@@ -270,20 +268,18 @@ define Device/ncs601w
 endef
 TARGET_DEVICES += ncs601w
 
-define Device/nixcore-8M
+define Device/nixcore-x1-8M
   DTS := NIXCORE-8M
   IMAGE_SIZE := 7872k
-  SUPPORTED_DEVICES := nixcore-x1
-  DEVICE_TITLE := NixcoreX1 8M
+  DEVICE_TITLE := NixcoreX1 (8M)
   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink kmod-spi-dev
 endef
 TARGET_DEVICES += nixcore-8M
 
-define Device/nixcore-16M
+define Device/nixcore-x1-16M
   DTS := NIXCORE-16M
   IMAGE_SIZE := 16064k
-  SUPPORTED_DEVICES := nixcore-x1
-  DEVICE_TITLE := NixcoreX1 16M
+  DEVICE_TITLE := NixcoreX1 (16M)
   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink kmod-spi-dev
 endef
 TARGET_DEVICES += nixcore-16M
@@ -391,8 +387,7 @@ TARGET_DEVICES += v22rw-2x2
 define Device/vocore-8M
   DTS := VOCORE-8M
   IMAGE_SIZE := 7872k
-  SUPPORTED_DEVICES := vocore
-  DEVICE_TITLE :=  VoCore 8M
+  DEVICE_TITLE := VoCore (8M)
   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 \
 		kmod-i2c-core kmod-i2c-ralink \
 		kmod-spi-dev
@@ -402,8 +397,7 @@ TARGET_DEVICES += vocore-8M
 define Device/vocore-16M
   DTS := VOCORE-16M
   IMAGE_SIZE := 16064k
-  SUPPORTED_DEVICES := vocore
-  DEVICE_TITLE := VoCore 16M
+  DEVICE_TITLE := VoCore (16M)
   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 \
 		kmod-i2c-core kmod-i2c-ralink \
 		kmod-spi-dev