diff --git a/package/kernel/broadcom-diag/src/diag.c b/package/kernel/broadcom-diag/src/diag.c
index 1fad586c52..fedcb01b72 100644
--- a/package/kernel/broadcom-diag/src/diag.c
+++ b/package/kernel/broadcom-diag/src/diag.c
@@ -1201,15 +1201,6 @@ static struct platform_t __init *platform_detect_legacy(void)
 				return &platforms[TM2300V2]; /* Dell TrueMobile 2300 v2 */
 		}
 
-		if (!strcmp(boardnum, "45")) { /* ASUS */
-			if (!strcmp(boardtype,"0x0472"))
-				return &platforms[WL500W];
-			else if (!strcmp(boardtype,"0x467"))
-				return &platforms[WL320GE];
-			else
-				return &platforms[WL500GD];
-		}
-
 		if (!strcmp(boardnum, "10496"))
 			return &platforms[USR5461];
 
@@ -1249,15 +1240,6 @@ static struct platform_t __init *platform_detect_legacy(void)
 			else
 				return &platforms[WL500G];
 		}
-		if (startswith(getvar("hardware_version"), "WL300-")) {
-			/* Either WL-300g or WL-HDD, do more extensive checks */
-			if ((simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 0) &&
-				(simple_strtoul(getvar("et1phyaddr"), NULL, 0) == 1))
-				return &platforms[WLHDD];
-			if ((simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 0) &&
-				(simple_strtoul(getvar("et1phyaddr"), NULL, 0) == 10))
-				return &platforms[WL300G];
-		}
 		/* Sitecom WL-105b */
 		if (startswith(boardnum, "2") && simple_strtoul(getvar("GemtekPmonVer"), NULL, 0) == 1)
 			return &platforms[WL105B];
@@ -1329,18 +1311,28 @@ static struct platform_t __init *platform_detect(void)
 		return &platforms[RTN16];
 	case BCM47XX_BOARD_ASUS_RTN66U:
 		return &platforms[RTN66U];
+	case BCM47XX_BOARD_ASUS_WL300G:
+		return &platforms[WL300G];
+	case BCM47XX_BOARD_ASUS_WL320GE:
+		return &platforms[WL320GE];
 	case BCM47XX_BOARD_ASUS_WL330GE:
 		return &platforms[WL330GE];
+	case BCM47XX_BOARD_ASUS_WL500GD:
+		return &platforms[WL500GD];
 	case BCM47XX_BOARD_ASUS_WL500GPV1:
 		return &platforms[WL500GP];
 	case BCM47XX_BOARD_ASUS_WL500GPV2:
 		return &platforms[WL500GPV2];
+	case BCM47XX_BOARD_ASUS_WL500W:
+		return &platforms[WL500W];
 	case BCM47XX_BOARD_ASUS_WL520GC:
 		return &platforms[WL520GC];
 	case BCM47XX_BOARD_ASUS_WL520GU:
 		return &platforms[WL520GU];
 	case BCM47XX_BOARD_ASUS_WL700GE:
 		return &platforms[WL700GE];
+	case BCM47XX_BOARD_ASUS_WLHDD:
+		return &platforms[WLHDD];
 	case BCM47XX_BOARD_BELKIN_F7D4301:
 		return &platforms[BELKIN_F7D4301];
 	case BCM47XX_BOARD_BUFFALO_WBR2_G54:
diff --git a/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch b/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch
index ebc179ab1a..50306c1293 100644
--- a/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch
+++ b/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch
@@ -8,7 +8,7 @@
  obj-$(CONFIG_BCM47XX_SSB)	+= wgt634u.o
 --- /dev/null
 +++ b/arch/mips/bcm47xx/board.c
-@@ -0,0 +1,235 @@
+@@ -0,0 +1,240 @@
 +#include <linux/export.h>
 +#include <linux/string.h>
 +#include <bcm47xx_board.h>
@@ -45,9 +45,12 @@
 +
 +static const struct bcm47xx_board_type_list bcm47xx_board_list_hardware_version[] = {
 +	{{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-",},
++	{{BCM47XX_BOARD_ASUS_WL320GE, "Asus WL320GE"}, "WL320G-",},
 +	{{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-",},
++	{{BCM47XX_BOARD_ASUS_WL500GD, "Asus WL500GD"}, "WL500gd-",},
 +	{{BCM47XX_BOARD_ASUS_WL500GPV1, "Asus WL500GP V1"}, "WL500gp-",},
 +	{{BCM47XX_BOARD_ASUS_WL500GPV2, "Asus WL500GP V2"}, "WL500GPV2-",},
++	{{BCM47XX_BOARD_ASUS_WL500W, "Asus WL500W"}, "WL500gW-",},
 +	{{BCM47XX_BOARD_ASUS_WL520GC, "Asus WL520GC"}, "WL520GC-",},
 +	{{BCM47XX_BOARD_ASUS_WL520GU, "Asus WL520GU"}, "WL520GU-",},
 +	{{BCM47XX_BOARD_BELKIN_F7D4301, "Belkin F7D4301"}, "F7D4301",},
@@ -67,6 +70,8 @@
 +	{{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16",},
 +	{{BCM47XX_BOARD_ASUS_RTN53, "Asus RT-N53"}, "RT-N53",},
 +	{{BCM47XX_BOARD_ASUS_RTN66U, "Asus RT-N66U"}, "RT-N66U",},
++	{{BCM47XX_BOARD_ASUS_WL300G, "Asus WL300G"}, "WL300g",},
++	{{BCM47XX_BOARD_ASUS_WLHDD, "Asus WLHDD"}, "WLHDD",},
 +	{ {0}, 0},
 +};
 +
@@ -246,7 +251,7 @@
 +EXPORT_SYMBOL(bcm47xx_board_get_name);
 --- /dev/null
 +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
-@@ -0,0 +1,92 @@
+@@ -0,0 +1,97 @@
 +#ifndef __BCM47XX_BOARD_H
 +#define __BCM47XX_BOARD_H
 +
@@ -263,12 +268,17 @@
 +	BCM47XX_BOARD_ASUS_RTN16,
 +	BCM47XX_BOARD_ASUS_RTN53,
 +	BCM47XX_BOARD_ASUS_RTN66U,
++	BCM47XX_BOARD_ASUS_WL300G,
++	BCM47XX_BOARD_ASUS_WL320GE,
 +	BCM47XX_BOARD_ASUS_WL330GE,
++	BCM47XX_BOARD_ASUS_WL500GD,
 +	BCM47XX_BOARD_ASUS_WL500GPV1,
 +	BCM47XX_BOARD_ASUS_WL500GPV2,
++	BCM47XX_BOARD_ASUS_WL500W,
 +	BCM47XX_BOARD_ASUS_WL520GC,
 +	BCM47XX_BOARD_ASUS_WL520GU,
 +	BCM47XX_BOARD_ASUS_WL700GE,
++	BCM47XX_BOARD_ASUS_WLHDD,
 +
 +	BCM47XX_BOARD_BELKIN_F7D4301,
 +
diff --git a/target/linux/brcm47xx/patches-3.8/260-MIPS-BCM47XX-add-board-detection.patch b/target/linux/brcm47xx/patches-3.8/260-MIPS-BCM47XX-add-board-detection.patch
index 74cd182b72..682daf3dde 100644
--- a/target/linux/brcm47xx/patches-3.8/260-MIPS-BCM47XX-add-board-detection.patch
+++ b/target/linux/brcm47xx/patches-3.8/260-MIPS-BCM47XX-add-board-detection.patch
@@ -8,7 +8,7 @@
  obj-$(CONFIG_BCM47XX_SSB)	+= wgt634u.o
 --- /dev/null
 +++ b/arch/mips/bcm47xx/board.c
-@@ -0,0 +1,235 @@
+@@ -0,0 +1,240 @@
 +#include <linux/export.h>
 +#include <linux/string.h>
 +#include <bcm47xx_board.h>
@@ -45,9 +45,12 @@
 +
 +static const struct bcm47xx_board_type_list bcm47xx_board_list_hardware_version[] = {
 +	{{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-",},
++	{{BCM47XX_BOARD_ASUS_WL320GE, "Asus WL320GE"}, "WL320G-",},
 +	{{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-",},
++	{{BCM47XX_BOARD_ASUS_WL500GD, "Asus WL500GD"}, "WL500gd-",},
 +	{{BCM47XX_BOARD_ASUS_WL500GPV1, "Asus WL500GP V1"}, "WL500gp-",},
 +	{{BCM47XX_BOARD_ASUS_WL500GPV2, "Asus WL500GP V2"}, "WL500GPV2-",},
++	{{BCM47XX_BOARD_ASUS_WL500W, "Asus WL500W"}, "WL500gW-",},
 +	{{BCM47XX_BOARD_ASUS_WL520GC, "Asus WL520GC"}, "WL520GC-",},
 +	{{BCM47XX_BOARD_ASUS_WL520GU, "Asus WL520GU"}, "WL520GU-",},
 +	{{BCM47XX_BOARD_BELKIN_F7D4301, "Belkin F7D4301"}, "F7D4301",},
@@ -67,6 +70,8 @@
 +	{{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16",},
 +	{{BCM47XX_BOARD_ASUS_RTN53, "Asus RT-N53"}, "RT-N53",},
 +	{{BCM47XX_BOARD_ASUS_RTN66U, "Asus RT-N66U"}, "RT-N66U",},
++	{{BCM47XX_BOARD_ASUS_WL300G, "Asus WL300G"}, "WL300g",},
++	{{BCM47XX_BOARD_ASUS_WLHDD, "Asus WLHDD"}, "WLHDD",},
 +	{ {0}, 0},
 +};
 +
@@ -246,7 +251,7 @@
 +EXPORT_SYMBOL(bcm47xx_board_get_name);
 --- /dev/null
 +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
-@@ -0,0 +1,92 @@
+@@ -0,0 +1,97 @@
 +#ifndef __BCM47XX_BOARD_H
 +#define __BCM47XX_BOARD_H
 +
@@ -263,12 +268,17 @@
 +	BCM47XX_BOARD_ASUS_RTN16,
 +	BCM47XX_BOARD_ASUS_RTN53,
 +	BCM47XX_BOARD_ASUS_RTN66U,
++	BCM47XX_BOARD_ASUS_WL300G,
++	BCM47XX_BOARD_ASUS_WL320GE,
 +	BCM47XX_BOARD_ASUS_WL330GE,
++	BCM47XX_BOARD_ASUS_WL500GD,
 +	BCM47XX_BOARD_ASUS_WL500GPV1,
 +	BCM47XX_BOARD_ASUS_WL500GPV2,
++	BCM47XX_BOARD_ASUS_WL500W,
 +	BCM47XX_BOARD_ASUS_WL520GC,
 +	BCM47XX_BOARD_ASUS_WL520GU,
 +	BCM47XX_BOARD_ASUS_WL700GE,
++	BCM47XX_BOARD_ASUS_WLHDD,
 +
 +	BCM47XX_BOARD_BELKIN_F7D4301,
 +