diff --git a/package/broadcom-diag/src/diag.c b/package/broadcom-diag/src/diag.c
index c85401f7f9225ebe725ca217b4079dc9647e6fee..e17f255e5b2cd7d2d4ddd27e28a4415c1406ab72 100644
--- a/package/broadcom-diag/src/diag.c
+++ b/package/broadcom-diag/src/diag.c
@@ -70,6 +70,7 @@ enum {
 	WHR2_A54G54,
 	WLA2_G54L,
 	WZR_RS_G54,
+	WZR_RS_G54HP,
 	BUFFALO_UNKNOWN,
 	BUFFALO_UNKNOWN_4710,
 
@@ -284,10 +285,24 @@ static struct platform_t __initdata platforms[] = {
 		.name		= "Buffalo WZR-RS-G54",
 		.buttons	= {
 			{ .name = "ses",	.gpio = 1 << 0 },
-			{ .name = "reset",	.gpio = 1 << 7 },
+			{ .name = "reset",	.gpio = 1 << 4 },
 		},
 		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 1, .polarity = REVERSE },
+			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
+			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
+			{ .name = "vpn",	.gpio = 1 << 1, .polarity = REVERSE },
+		},
+	},
+	[WZR_RS_G54HP] = {
+		.name		= "Buffalo WZR-RS-G54HP",
+		.buttons	= {
+			{ .name = "ses",	.gpio = 1 << 0 },
+			{ .name = "reset",	.gpio = 1 << 4 },
+		},
+		.leds		= {
+			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
+			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
+			{ .name = "vpn",	.gpio = 1 << 1, .polarity = REVERSE },
 		},
 	},
 	[BUFFALO_UNKNOWN] = {
@@ -476,6 +491,8 @@ static struct platform_t __init *platform_detect(void)
 			return &platforms[WHR2_A54G54];
 		if (!strcmp(buf, "30083"))
 			return &platforms[WZR_RS_G54];
+		if (!strcmp(buf, "30103"))
+			return &platforms[WZR_RS_G54HP];
 	}
 
 	if (buf || !strcmp(boardnum, "00")) {/* probably buffalo */