diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 719e9686ae25fb07c19bc19443ed170ab9fdc514..dafa3e98f1e02e485e19d6acfd0abf26496f4051 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -117,6 +117,8 @@ ramips_setup_interfaces()
 	ubnt-erx|\
 	ur-326n4g|\
 	wrtnode|\
+	wrtnode2p | \
+	wrtnode2r | \
 	wt3020|\
 	zbt-wa05)
 		ucidef_add_switch "switch0" \
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 3e8a33186f6fe2d644500f205352a8acb7230781..acc500b70e280252e95fb2800ec616c60782350a 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -181,6 +181,11 @@ get_status_led() {
 	wsr-600)
 		status_led="$board:orange:diag"
 		;;
+	wrtnode2r | \
+	wrtnode2p | \
+	wrtnode)
+		status_led="wrtnode:blue:indicator"
+		;;
 	esac
 }
 
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 62be04540ebcbf8e7a2c598f57640eb91e70bdae..8025a408803629c11fd7695ee2abe69230000cf7 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -433,6 +433,12 @@ ramips_board_detect() {
 	*"WRTNODE")
 		name="wrtnode"
 		;;
+	*"WRTnode2R")
+		name="wrtnode2r"
+		;;
+	*"WRTnode2P")
+		name="wrtnode2p"
+		;;
 	*"WSR-1166DHP")
 		name="wsr-1166"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index f8073d19fec1b2fc54848fe5f235ea222d18aa0b..39b5f94a76e7c372951fa24bc428e31f9ff15728 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -125,6 +125,8 @@ platform_check_image() {
 	wr512-3gn|\
 	wr6202|\
 	wrtnode|\
+	wrtnode2r |\
+	wrtnode2p |\
 	wsr-600|\
 	wt1520|\
 	wt3020|\
diff --git a/target/linux/ramips/dts/WRTNODE2.dtsi b/target/linux/ramips/dts/WRTNODE2.dtsi
new file mode 100644
index 0000000000000000000000000000000000000000..3f6a00897d351778acc96d5f47bc28cabbaa3b53
--- /dev/null
+++ b/target/linux/ramips/dts/WRTNODE2.dtsi
@@ -0,0 +1,95 @@
+/dts-v1/;
+
+/include/ "mt7628an.dtsi"
+
+/ {
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	palmbus@10000000 {
+		spi@b00 {
+			status = "okay";
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "jedec,spi-nor";
+				reg = <0 0>;
+				spi-max-frequency = <10000000>;
+				m25p,chunked-io = <32>;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0 0x30000>;
+					read-only;
+				};
+
+				partition@30000 {
+					label = "u-boot-env";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "factory";
+					reg = <0x40000 0x10000>;
+					read-only;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0x1fb0000>;
+				};
+			};
+
+
+			spidev@1 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "spidev";
+				reg = <1 0>;
+				linux,modalias = "spidev", "spidev";
+				spi-max-frequency = <10000000>;
+			};
+		};
+
+		uart1@d00 {
+			status = "okay";
+		};
+
+		i2c@900 {
+			status = "okay";
+		};
+
+	};
+
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x4>;
+		ralink,port-map = "llllw";
+	};
+
+	sdhci@10130000 {
+		status = "okay";
+	};
+
+	pcie@10140000 {
+		status = "okay";
+	};
+
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 5 1>;
+			linux,code = <0x198>;
+		};
+	};
+
+};
+
diff --git a/target/linux/ramips/dts/WRTNODE2P.dts b/target/linux/ramips/dts/WRTNODE2P.dts
new file mode 100644
index 0000000000000000000000000000000000000000..153fab2bc0c9bc83c69bc00c326fc88875811cab
--- /dev/null
+++ b/target/linux/ramips/dts/WRTNODE2P.dts
@@ -0,0 +1,27 @@
+/dts-v1/;
+
+/include/ "WRTNODE2.dtsi"
+
+/ {
+	compatible = "mediatek,wrtnode2p", "mediatek,mt7628an-soc";
+	model = "WRTnode2P";
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "i2c", "gpio", "jtag";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		indicator {
+			label = "wrtnode:blue:indicator";
+			gpios = <&gpio1 9 1>;
+		};
+	}; 
+};
+
diff --git a/target/linux/ramips/dts/WRTNODE2R.dts b/target/linux/ramips/dts/WRTNODE2R.dts
new file mode 100644
index 0000000000000000000000000000000000000000..e91591590a5e187dbe2398e50e663d3a4adb7a5b
--- /dev/null
+++ b/target/linux/ramips/dts/WRTNODE2R.dts
@@ -0,0 +1,27 @@
+/dts-v1/;
+
+/include/ "WRTNODE2.dtsi"
+
+/ {
+	compatible = "mediatek,wrtnode2r", "mediatek,mt7628an-soc";
+	model = "WRTnode2R";
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "i2c", "gpio", "wled_an";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		indicator {
+			label = "wrtnode:blue:indicator";
+			gpios = <&gpio1 12 1>;
+		};
+	}; 
+};
+
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 2c0fc462f0774f84edf490d4927528fa74e10b3d..6d4dd64730059d498fce716bb9140a08d611cbd0 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -1087,10 +1087,12 @@ endef
 #
 
 Image/Build/Profile/MT7628=$(call BuildFirmware/Default4M/$(1),$(1),mt7628,MT7628)
+Image/Build/Profile/WRTNODE2P=$(call BuildFirmware/Default16M/$(1),$(1),wrtnode2p,WRTNODE2P)
 
 ifeq ($(SUBTARGET),mt7628)
 define Image/Build/Profile/Default
 	$(call Image/Build/Profile/MT7628,$(1))
+	$(call Image/Build/Profile/WRTNODE2P,$(1))
 endef
 endif
 
@@ -1100,10 +1102,12 @@ endif
 #
 
 Image/Build/Profile/LinkIt7688=$(call BuildFirmware/Default32M/$(1),$(1),LinkIt7688,LINKIT7688)
+Image/Build/Profile/WRTNODE2R=$(call BuildFirmware/Default16M/$(1),$(1),wrtnode2r,WRTNODE2R)
 
 ifeq ($(SUBTARGET),mt7688)
 define Image/Build/Profile/Default
 	$(call Image/Build/Profile/LinkIt7688,$(1))
+	$(call Image/Build/Profile/WRTNODE2R,$(1))
 endef
 endif