diff --git a/target/linux/lantiq/base-files/etc/diag.sh b/target/linux/lantiq/base-files/etc/diag.sh
index d0088f5bcc03186863cb653521c5db797f62a80b..9e0e1701cb62025e5fb896891ada43f8cba20d98 100644
--- a/target/linux/lantiq/base-files/etc/diag.sh
+++ b/target/linux/lantiq/base-files/etc/diag.sh
@@ -1,42 +1,24 @@
 #!/bin/sh
-# Copyright (C) 2012 OpenWrt.org
+# Copyright (C) 2012-2013 OpenWrt.org
 
-[ -d /sys/class/leds/power/ ] || return
+. /lib/functions/leds.sh
 
-set_state() {
-	[ -d /sys/class/leds/power1/ ] && {
-
-		case "$1" in
-		preinit)
-			echo heartbeat >/sys/class/leds/power/trigger
-			;;
-		failsafe)
-			echo none >/sys/class/leds/power/trigger
-			echo timer >/sys/class/leds/power1/trigger
-			echo 100 >/sys/class/leds/power1/delay_on
-			echo 100 >/sys/class/leds/power1/delay_off
-			;;
-		done)
-			echo none >/sys/class/leds/power/trigger
-			echo none >/sys/class/leds/power1/trigger
-			echo 1 >/sys/class/leds/power/brightness
-			;;
-		esac
-		return
-	}
+status_led="power"
 
+set_state() {
 	case "$1" in
 	preinit)
-		echo heartbeat >/sys/class/leds/power/trigger
+		status_led_set_heartbeat
 		;;
 	failsafe)
-		echo timer >/sys/class/leds/power/trigger
-		echo 100 >/sys/class/leds/power/delay_on
-		echo 100 >/sys/class/leds/power/delay_off
+		[ -d /sys/class/leds/power1 ] && {
+			status_led_off
+			led_timer "power1" 100 100
+		} || status_led_set_timer 100 100
 		;;
 	done)
-		echo none >/sys/class/leds/power/trigger
-		echo 1 >/sys/class/leds/power/brightness
+		status_led_on
+		led_off "power1"
 		;;
 	esac
 }