diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index af3439f8b95caec4ee476ffe03d0c5b594777ea3..174684d0ae3075fd3e121589fe30cba86b3290eb 100755
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -217,6 +217,9 @@ get_status_led() {
 	tl-wr2543n)
 		status_led="tp-link:green:wps"
 		;;
+	tube2h)
+		status_led="alfa:green:signal4"
+		;;
 	unifi)
 		status_led="ubnt:green:dome"
 		;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
index 34fed026b551cd366c845a57ca990eb3ef749253..ccfc846af48f6bc1b97e71c0f7d8cfc0d8ec44d7 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
@@ -348,6 +348,15 @@ tl-wr2543n)
 	ucidef_set_led_usbdev "usb" "USB" "tp-link:green:usb" "1-1"
 	;;
 
+tube2h)
+	ucidef_set_led_netdev "lan" "LAN" "alfa:blue:lan" "eth0"
+	ucidef_set_rssimon "wlan0" "40000" "1"
+	ucidef_set_led_rssi "signal1" "SIGNAL1" "alfa:red:signal1" "wlan0" "1" "100" "0" "13"
+	ucidef_set_led_rssi "signal2" "SIGNAL2" "alfa:orange:signal2" "wlan0" "26" "100" "-25" "13"
+	ucidef_set_led_rssi "signal3" "SIGNAL3" "alfa:green:signal3" "wlan0" "51" "100" "-50" "13"
+	ucidef_set_led_rssi "signal4" "SIGNAL4" "alfa:green:signal4" "wlan0" "76" "100" "-75" "13"
+	;;
+
 wrt160nl)
 	ucidef_set_led_wlan "wlan" "WLAN" "wrt160nl:blue:wlan" "phy0tpt"
 	;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
index d4fb5770ce10b770159663396b3087962f5106e3..8dd04d4ef4910eeab8840b97139d35e5095f90ed 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
@@ -300,6 +300,7 @@ tl-wa901nd |\
 tl-wa901nd-v2 |\
 tl-wa901nd-v3 |\
 tl-wr703n |\
+tube2h |\
 wndap360 |\
 mynet-rext |\
 wp543)
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index bc26d8b1dc544a4f3c3c3bab5954369b03c7b7b0..94f758a8097a7d0245d4e4eeecf6b726bea7b928 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -625,6 +625,9 @@ ar71xx_board_detect() {
 	*"TL-MR13U")
 		name="tl-mr13u"
 		;;
+	*"Tube2H")
+		name="tube2h"
+		;;
 	*UniFi)
 		name="unifi"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index d42a704e57e09f6dc0a18d83eec85ab4a5f6db18..910da52bb772e784fa98f3f23574d2f08f947821 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -2,6 +2,7 @@
 # Copyright (C) 2011 OpenWrt.org
 #
 
+. /lib/functions/system.sh
 . /lib/ar71xx.sh
 
 PART_NAME=firmware
@@ -106,6 +107,29 @@ platform_do_upgrade_compex() {
 	fi
 }
 
+alfa_check_image() {
+	local magic_long="$(get_magic_long "$1")"
+	local fw_part_size=$(mtd_get_part_size firmware)
+
+	case "$magic_long" in
+	"27051956")
+		[ "$fw_part_size" != "16318464" ] && {
+			echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes"
+			return 1
+		}
+		;;
+
+	"68737173")
+		[ "$fw_part_size" != "7929856" ] && {
+			echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes"
+			return 1
+		}
+		;;
+	esac
+
+	return 0
+}
+
 platform_check_image() {
 	local board=$(ar71xx_board_name)
 	local magic="$(get_magic_word "$1")"
@@ -293,6 +317,12 @@ platform_check_image() {
 
 		return 0
 		;;
+
+	tube2h)
+		alfa_check_image "$1" && return 0
+		return 1
+		;;
+
 	uap-pro)
 		[ "$magic_long" != "19852003" ] && {
 			echo "Invalid image type."