diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh
index 7826fad..c0fb31e 100644
--- a/target/linux/brcm63xx/base-files/etc/diag.sh
+++ b/target/linux/brcm63xx/base-files/etc/diag.sh
@@ -102,6 +102,9 @@ set_state() {
 	p870hw-51a_v2)
 		status_led="P870HW-51a:green:power"
 		;;
+	r5010un_v2)
+		status_led="96328ang:green:power"
+		;;
 	rta770bw)
 		status_led="RTA770BW:green:diag"
 		;;
diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds b/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds
index bdb3dad..34d5c51 100644
--- a/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds
+++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds
@@ -46,6 +46,9 @@ homehub2a)
 	ucidef_set_led_usbdev "usb1" "USB1" "HOMEHUB2A:blue:phone" "1-1"
 	ucidef_set_led_usbdev "usb2" "USB2" "HOMEHUB2A:green:phone" "2-1"
 	;;
+r5010un_v2)
+	ucidef_set_led_usbdev "usb" "USB" "96328ang:green:usb" "1-1"
+	;;
 esac
 
 ucidef_commit_leds
diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network
index 129514b..70f18cb 100644
--- a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network
+++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network
@@ -94,6 +94,7 @@ fast2504n |\
 fast2704v2 |\
 hg655b |\
 p870hw-51a_v2 |\
+r5010un_v2 |\
 vr-3025un |\
 vr-3025u |\
 vr-3026e)
diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc b/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc
index f307a4c..bc9ae21 100644
--- a/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc
+++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc
@@ -23,6 +23,7 @@ case "$(brcm63xx_board_name)" in
 	dsl-274xb-f |\
 	magic |\
 	p870hw-51a_v2 |\
+	r5010un_v2 |\
 	rta770bw |\
 	rta770w |\
 	spw303v |\
diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh
index 1a97c86..7dc57fd 100755
--- a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh
+++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh
@@ -180,6 +180,9 @@ brcm63xx_dt_detect() {
 	"Netgear DGND3700v1/DGND3800B")
 		board_name="dgnd3700v1_dgnd3800b"
 		;;
+	"NuCom R5010UN v2")
+		board_name="r5010un_v2"
+		;;
 	"Pirelli A226G")
 		board_name="a226g"
 		;;
diff --git a/target/linux/brcm63xx/dts/r5010unv2.dts b/target/linux/brcm63xx/dts/r5010unv2.dts
new file mode 100644
index 0000000..8c83483
--- /dev/null
+++ b/target/linux/brcm63xx/dts/r5010unv2.dts
@@ -0,0 +1,64 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "NuCom R5010UN v2";
+	compatible = "nucom,r5010unv2", "brcm,bcm6328";
+	
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+		debounce-interval = <60>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 23 1>;
+			linux,code = <KEY_RESTART>;
+		};
+		wps {
+			label = "wps";
+			gpios = <&gpio0 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		inet_green {
+			label = "96328ang:green:inet";
+			gpios = <&gpio0 1 1>;
+		};
+		inet_fail_red {
+			label = "96328ang:red:inet-fail";
+			gpios = <&gpio0 2 1>;
+		};
+		dsl_red {
+			label = "96328ang:green:dsl";
+			gpios = <&gpio0 3 1>;
+		};
+		power_green {
+			label = "96328ang:green:power";
+			gpios = <&gpio0 4 1>;
+			default-state = "on";
+		};
+		power_fail_red {
+			label = "96328ang:red:power-fail";
+			gpios = <&gpio0 5 1>;
+		};
+		wps_green {
+			label = "96328ang:green:wps";
+			gpios = <&gpio0 10 1>;
+		};
+		usb_green {
+			label = "96328ang:green:usb";
+			gpios = <&gpio0 11 1>;
+		};
+	};
+};
+
diff --git a/target/linux/brcm63xx/image/Makefile b/target/linux/brcm63xx/image/Makefile
index 9581116..06b9000 100644
--- a/target/linux/brcm63xx/image/Makefile
+++ b/target/linux/brcm63xx/image/Makefile
@@ -590,6 +590,8 @@ $(eval $(call bcm63xxCfeRamdisk,DG834GV4,DG834GTv4,dg834g_v4,96348W3,6348))
 $(eval $(call bcm63xxCfeNetgear,DGND3700v1_3800B,DGND3700v1,dgnd3700v1,96368MVWG,6368,--image-offset 0x20000 --block-size 0x20000,U12L144T01_NETGEAR_NEWLED,1))
 # Netgear DGND3800B
 $(eval $(call bcm63xxCfeNetgear,DGND3700v1_3800B,DGND3800B,dgnd3700v1,96368MVWG,6368,--image-offset 0x20000 --block-size 0x20000,U12L144T11_NETGEAR_NEWLED,1))
+# NuCom R5010UNv2
+$(eval $(call bcm63xxCfe,R5010UNV2,R5010UNv2,r5010unv2,96328ang,6328,--pad 8))
 # Pirelli Alice Gate VoIP 2 Plus Wi-Fi AGPF-S0
 $(eval $(call bcm63xxCfe,AGPF_S0,AGV2+W,agpf-s0,AGPF-S0,6358,--block-size 0x20000 --image-offset 0x20000 --signature2 IMAGE --tag-version 8))
 # Pirelli A226G
diff --git a/target/linux/brcm63xx/patches-4.1/573-board_R5010UNv2.patch b/target/linux/brcm63xx/patches-4.1/573-board_R5010UNv2.patch
new file mode 100644
index 0000000..cf5a719
--- /dev/null
+++ b/target/linux/brcm63xx/patches-4.1/573-board_R5010UNv2.patch
@@ -0,0 +1,70 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -641,6 +641,51 @@
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_R5010UNV2 = {
++	.name					= "96328ang",
++	.expected_cpu_id			= 0x6328,
++
++	.has_uart0				= 1,
++	.has_pci				= 1,
++	.use_fallback_sprom			= 1,
++	.has_ohci0				= 1,
++	.has_ehci0				= 1,
++	.num_usbh_ports				= 1,
++	.has_enetsw				= 1,
++
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used		= 1,
++				.phy_id		= 1,
++				.name		= "Port 1",
++			},
++			[1] = {
++				.used		= 1,
++				.phy_id		= 2,
++				.name		= "Port 2",
++			},
++			[2] = {
++				.used		= 1,
++				.phy_id		= 3,
++				.name		= "Port 3",
++			},
++			[3] = {
++				.used		= 1,
++				.phy_id		= 4,
++				.name		= "Port 4",
++			},
++		},
++	},
++
++	.fallback_sprom = {
++		.type 				= SPROM_BCM43217,
++		.pci_bus			= 1,
++		.pci_dev			= 0,
++	},
++};
++
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ 
+ /*
+@@ -2452,6 +2497,7 @@
+ 	&board_A4001N1,
+ 	&board_dsl_274xb_f1,
+ 	&board_FAST2704V2,
++	&board_R5010UNV2,
+ #endif
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	&board_96338gw,
+@@ -2550,6 +2596,7 @@
+ 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
+ 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
+ 	{ .compatible = "d-link,dsl-274xb-f", .data = &board_dsl_274xb_f1, },
++	{ .compatible = "nucom,r5010unv2", .data = &board_R5010UNV2, },
+ 	{ .compatible = "sagem,f@st2704v2", .data = &board_FAST2704V2, },
+ #endif
+ #ifdef CONFIG_BCM63XX_CPU_6338
diff --git a/target/linux/brcm63xx/profiles/nucom.mk b/target/linux/brcm63xx/profiles/nucom.mk
new file mode 100644
index 0000000..2cd8801
--- /dev/null
+++ b/target/linux/brcm63xx/profiles/nucom.mk
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/R5010UNV2
+  NAME:=NuCom R5010UN v2
+  PACKAGES:=kmod-b43 wpad-mini \
+	kmod-usb2 kmod-usb-ohci kmod-ledtrig-usbdev
+endef
+define Profile/R5010UNV2/Description
+  Package set optimized for R5010UNV2.
+endef
+$(eval $(call Profile,R5010UNV2))
