diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds
index c6dcf36fed408683d2025fbcc273d37fb17a28a4..5a2bf0cfc41991d684c0ad0eaf6bb0ff6441cc08 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds
@@ -152,7 +152,9 @@ cf-e530n)
 	ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1"
 	;;
 cpe210|\
-cpe510)
+cpe510|\
+wbs210|\
+wbs510)
 	ucidef_set_led_switch "lan0" "LAN0" "tp-link:green:lan0" "switch0" "0x20"
 	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"
 	ucidef_set_rssimon "wlan0" "200000" "1"
diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network
index 8acd214ced6a1569fb5c6d0cfc74daa9fb2bf6fc..66274db15fd61ebda18d5965f424744835b1bd44 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/02_network
+++ b/target/linux/ar71xx/base-files/etc/board.d/02_network
@@ -212,7 +212,9 @@ ar71xx_setup_interfaces()
 		ucidef_set_interface_lan "eth0" "dhcp"
 		;;
 	cpe210|\
-	cpe510)
+	cpe510|\
+	wbs210|\
+	wbs510)
 		ucidef_add_switch "switch0" \
 			"0@eth0" "5:lan" "4:wan"
 		;;
diff --git a/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches b/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches
index 5b95f155cfd314c8cf8bf4713a77b83e12abb97a..da963bf64df676181e2c4d174f46118425ce219c 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches
+++ b/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches
@@ -18,7 +18,9 @@ nanostation-m-xw)
 	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "2"
 	;;
 cpe210|\
-cpe510)
+cpe510|\
+wbs210|\
+wbs510)
 	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "20"
 	;;
 rb-912uag-2hpnd|\
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 3241100198b05b125c8f3eee8452a615f988a67c..1b30f4d827bd00d19a0a81310297e4946212ab54 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -510,6 +510,14 @@ ar71xx_board_detect() {
 	*CPE870)
 		name="cpe870"
 		;;
+	*WBS210)
+		name="wbs210"
+		tplink_pharos_board_detect
+		;;
+	*WBS510)
+		name="wbs510"
+		tplink_pharos_board_detect
+		;;
 	*CR3000)
 		name="cr3000"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 570aa686e3e52887ca96e1f77fc5eac7b60700fb..6341a317910a273e9c5bde1e2b506e23e8ad766e 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -453,7 +453,9 @@ platform_check_image() {
 		;;
 	cpe210|\
 	cpe510|\
-	eap120)
+	eap120|\
+	wbs210|\
+	wbs510)
 		tplink_pharos_check_image "$1" && return 0
 		return 1
 		;;
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c
index 74daf434e611d1f9d05f7d7516ae918d334b32b7..d2dbed1fe286c44d3188262e984253faaee7edba 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c
@@ -30,6 +30,9 @@
 #define CPE510_GPIO_LED_L3	15
 #define CPE510_GPIO_LED_L4	16
 
+/* All LEDs/button except for link4 are the same for CPE and WBS series */
+#define WBS510_GPIO_LED_L4	2
+
 #define CPE510_GPIO_EXTERNAL_LNA0	18
 #define CPE510_GPIO_EXTERNAL_LNA1	19
 
@@ -67,6 +70,34 @@ static struct gpio_led cpe510_leds_gpio[] __initdata = {
 	},
 };
 
+static struct gpio_led wbs510_leds_gpio[] __initdata = {
+	{
+		.name		= "tp-link:green:lan0",
+		.gpio		= CPE510_GPIO_LED_LAN0,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:lan1",
+		.gpio		= CPE510_GPIO_LED_LAN1,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link1",
+		.gpio		= CPE510_GPIO_LED_L1,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link2",
+		.gpio		= CPE510_GPIO_LED_L2,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link3",
+		.gpio		= CPE510_GPIO_LED_L3,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link4",
+		.gpio		= WBS510_GPIO_LED_L4,
+		.active_low	= 1,
+	},
+};
+
 static struct gpio_keys_button cpe510_gpio_keys[] __initdata = {
 	{
 		.desc		= "Reset button",
@@ -85,9 +116,6 @@ static void __init cpe_setup(u8 *mac)
 	ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
 				  AR934X_GPIO_FUNC_CLK_OBS4_EN);
 
-	ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
-				 cpe510_leds_gpio);
-
 	ath79_register_gpio_keys_polled(1, CPE510_KEYS_POLL_INTERVAL,
 					ARRAY_SIZE(cpe510_gpio_keys),
 					cpe510_gpio_keys);
@@ -109,6 +137,9 @@ static void __init cpe210_setup(void)
 	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
 	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
 
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
+				 cpe510_leds_gpio);
+
 	cpe_setup(mac);
 
 	ath79_register_wmac(ee, mac);
@@ -119,6 +150,22 @@ static void __init cpe510_setup(void)
 	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
 	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
 
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
+				 cpe510_leds_gpio);
+
+	cpe_setup(mac);
+
+	ath79_register_wmac(ee, mac);
+}
+
+static void __init wbs_setup(void)
+{
+	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
+	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(wbs510_leds_gpio),
+				 wbs510_leds_gpio);
+
 	cpe_setup(mac);
 
 	ath79_register_wmac(ee, mac);
@@ -129,3 +176,9 @@ MIPS_MACHINE(ATH79_MACH_CPE210, "CPE210", "TP-LINK CPE210/220",
 
 MIPS_MACHINE(ATH79_MACH_CPE510, "CPE510", "TP-LINK CPE510/520",
 	     cpe510_setup);
+
+MIPS_MACHINE(ATH79_MACH_WBS210, "WBS210", "TP-LINK WBS210",
+	     wbs_setup);
+
+MIPS_MACHINE(ATH79_MACH_WBS510, "WBS510", "TP-LINK WBS510",
+	     wbs_setup);
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
index d18a71cf38d54daa961a20c88b48b534a0aed1ac..9402185b9cb617d15b16a2977389907734d57633 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
+++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
@@ -251,6 +251,8 @@ enum ath79_mach_type {
 	ATH79_MACH_UBNT_UNIFI_OUTDOOR,		/* Ubiquiti UnifiAP Outdoor */
 	ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS,	/* Ubiquiti UnifiAP Outdoor+ */
 	ATH79_MACH_UBNT_XM,			/* Ubiquiti Networks XM board rev 1.0 */
+	ATH79_MACH_WBS210,			/* TP-LINK WBS210 */
+	ATH79_MACH_WBS510,			/* TP-LINK WBS510 */
 	ATH79_MACH_WEIO,			/* WeIO board */
 	ATH79_MACH_WHR_G301N,			/* Buffalo WHR-G301N */
 	ATH79_MACH_WHR_HP_G300N,		/* Buffalo WHR-HP-G300N */
diff --git a/target/linux/ar71xx/image/tp-link.mk b/target/linux/ar71xx/image/tp-link.mk
index c6c9b5093c451484a54d8fce45fb7832d4c949ad..480d9ad39dabca0839bd66d307fe3693e248be36 100644
--- a/target/linux/ar71xx/image/tp-link.mk
+++ b/target/linux/ar71xx/image/tp-link.mk
@@ -117,7 +117,23 @@ $(Device/cpe510-520)
   BOARDNAME := CPE210
   TPLINK_BOARD_NAME := CPE210
 endef
-TARGET_DEVICES += cpe210-220 cpe510-520
+
+define Device/wbs210
+$(Device/cpe510-520)
+  DEVICE_TITLE := TP-LINK WBS210
+  DEVICE_PACKAGES := rssileds
+  BOARDNAME := WBS210
+  TPLINK_BOARD_NAME := WBS210
+endef
+
+define Device/wbs510
+$(Device/cpe510-520)
+  DEVICE_TITLE := TP-LINK WBS510
+  DEVICE_PACKAGES := rssileds
+  BOARDNAME := WBS510
+  TPLINK_BOARD_NAME := WBS510
+endef
+TARGET_DEVICES += cpe210-220 cpe510-520 wbs210 wbs510
 
 define Device/re450
   DEVICE_TITLE := TP-LINK RE450