diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index dbde1f777583f48bb6bbd2b3029080b62adec185..866003c28ce26f48f73e4ea203eb01aed3611a8e 100755
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -9,7 +9,7 @@ get_status_led() {
 	3g-6200n)
 		status_led="edimax:green:power"
 		;;
-	3g300m)
+	3g300m | w150m)
 		status_led="tenda:blue:ap"
 		;;
 	argus-atp52b)
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index 6dd36d74034a0f42964d0e8e7c88da9cf54b3d27..b6490b5b58c71b57d7eff5be5d6fbaa34e94a29e 100644
--- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -85,6 +85,7 @@ case "$FIRMWARE" in
 	v11st-fe | \
 	v22rw-2x2 | \
 	w306r-v20 | \
+	w150m | \
 	w502u | \
 	wcr-150gn | \
 	whr-g300n | \
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 d2400870c6d05a05f063af29f980fcdc38267a10..98aefbdf3249cfa625e94871cfd22838dbf5aa82 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/02_network
+++ b/target/linux/ramips/base-files/etc/uci-defaults/02_network
@@ -38,6 +38,7 @@ ramips_setup_interfaces()
 
 	case $board in
 	3g300m | \
+	w150m | \
 	all0256n | \
 	all5002 | \
 	broadway)
@@ -156,6 +157,7 @@ ramips_setup_macs()
 		;;
 	3g-6200n | \
 	3g300m | \
+	w150m | \
 	air3gii | \
 	argus-atp52b | \
 	bc2 | \
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
index 985d1bc8f7516455663e5e56ab4609738c29ad8a..7824e2b252db5b514d3c0baa6be19fc001f69c31 100644
--- a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
+++ b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
@@ -12,6 +12,7 @@ preinit_set_mac_address() {
 	3g-6200n |\
 	3g-6200nl |\
 	3g300m | \
+	w150m | \
 	mzk-w300nh2 |\
 	wl-330n |\
 	wl-330n3g)
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 4948e5b5cc4c4be4b928876fb0022c6f6a653ca8..c89dd469a71600f0e34e66d480481de29dfe6861 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -180,6 +180,9 @@ ramips_board_detect() {
 	*"Tenda W306R V2.0")
 		name="w306r-v20"
 		;;
+	*"Tenda W150M")
+		name="w150m"
+		;;
 	*"TEW-691GR")
 		name="tew-691gr"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index e2a55feabbbd327e9edb161e15dbb639e4d5d4e8..34d2c54c849e3f144ac83dcbedbf80ec94e44219 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -17,6 +17,7 @@ platform_check_image() {
 	3g-6200n | \
 	3g-6200nl | \
 	3g300m | \
+	w150m | \
 	air3gii | \
 	all0239-3g | \
 	all0256n | \
diff --git a/target/linux/ramips/dts/W150M.dts b/target/linux/ramips/dts/W150M.dts
new file mode 100644
index 0000000000000000000000000000000000000000..1652fcd6daa15ed202c64f8513ba7122b9bcb8bd
--- /dev/null
+++ b/target/linux/ramips/dts/W150M.dts
@@ -0,0 +1,98 @@
+/dts-v1/;
+
+/include/ "rt3050.dtsi"
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "3G300M", "ralink,rt3050-soc";
+	model = "Tenda 3G300M";
+
+	memorydetect {
+		ralink,memory = <0x0 0x200000 0x4000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,57600 mtdparts=1f000000.cfi:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,3872k@0x50000(firmware)";
+	};
+
+	palmbus@10000000 {
+		sysc@0 {
+			ralink,pinmmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii", "jtag";
+			ralink,uartmux = "gpio";
+			ralink,wdtmux = <1>;
+		};
+
+		gpio0: gpio@600 {
+			status = "okay";
+		};
+	};
+
+	cfi@1f000000 {
+		compatible = "cfi-flash";
+		reg = <0x1f000000 0x800000>;
+
+		bank-width = <2>;
+		device-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		3grouter {
+			label = "tenda:blue:3grouter";
+			gpios = <&gpio0 11 1>;
+		};
+		ap {
+			label = "tenda:blue:ap";
+			gpios = <&gpio0 12 1>;
+		};
+		wisprouter {
+			label = "tenda:blue:wisprouter";
+			gpios = <&gpio0 9 1>;
+		};
+		wirelessrouter {
+			label = "tenda:blue:wirelessrouter";
+			gpios = <&gpio0 13 1>;
+		};
+		3g {
+			label = "tenda:blue:3g";
+			gpios = <&gpio0 7 1>;
+		};
+		wpsreset {
+			label = "tenda:blue:wpsreset";
+			gpios = <&gpio0 14 1>;
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+		reset {
+			label = "reset";
+			gpios = <&gpio0 0 1>;
+			linux,code = <0x198>;
+		};
+		mode {
+			label = "mode";
+			gpios = <&gpio0 10 1>;
+			linux,code = <0x100>;
+		};
+	};
+
+	ethernet@10100000 {
+		status = "okay";
+	};
+
+	esw@10110000 {
+		status = "okay";
+		ralink,portmap = <0x2f>;
+	};
+
+	wmac@10180000 {
+		status = "okay";
+	};
+};
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 9909d50d333fdf03d1617bc4e131ee30e768944a..0002eb4974fa4f0ec7763c19bd285ddad48a9bf4 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -340,6 +340,8 @@ Image/Build/Profile/SL-R7205=$(call BuildFirmware/Default4M/$(1),$(1),sl-r7205,S
 
 Image/Build/Profile/V22RW-2X2=$(call BuildFirmware/Default4M/$(1),$(1),v22rw-2x2,V22RW-2X2)
 
+Image/Build/Profile/W150M=$(call BuildFirmware/CustomFlashFactory/$(1),$(1),w150m,W150M,$(ralink_default_fw_size_4M),W150M Kernel Image,factory)
+
 Image/Build/Profile/W306R_V20=$(call BuildFirmware/CustomFlashFactory/$(1),$(1),w306r-v20,W306R_V20,$(ralink_default_fw_size_4M),linkn Kernel Image,factory)
 
 Image/Build/Profile/W502U=$(call BuildFirmware/Default8M/$(1),$(1),w502u,W502U)
@@ -440,6 +442,7 @@ define Image/Build/Profile/Default
 	$(call Image/Build/Profile/SL-R7205,$(1))
 	$(call Image/Build/Profile/UR-326N4G,$(1))
 	$(call Image/Build/Profile/V22RW-2X2,$(1))
+	$(call Image/Build/Profile/W150M,$(1))
 	$(call Image/Build/Profile/W306R_V20,$(1))
 	$(call Image/Build/Profile/W502U,$(1))
 	$(call Image/Build/Profile/WCR150GN,$(1))