diff --git a/openwrt/package/linux/Config.in b/openwrt/package/linux/Config.in
index 2ab006c8b85182331cc4cd2b8e631c38b2fcf3af..6f73d97e1fa56077b5b0dca115b1bf011d581dfa 100644
--- a/openwrt/package/linux/Config.in
+++ b/openwrt/package/linux/Config.in
@@ -1,3 +1,9 @@
+config BR2_PACKAGE_KMOD_DIAG
+	tristate "Router LED/Button Driver"
+	default y
+	help
+	  Driver for the LEDs on Wireless Routers (diag)
+
 config BR2_PACKAGE_KMOD_BRCM_WL
 	tristate "Broadcom Wireless Network Driver"
 	default y
diff --git a/openwrt/package/linux/Makefile b/openwrt/package/linux/Makefile
index fdd7e8d7699fef73dc965083234ab45bb198568d..4d94212d3bbcbc25d72dc8c8a201a52d4362ed63 100644
--- a/openwrt/package/linux/Makefile
+++ b/openwrt/package/linux/Makefile
@@ -39,6 +39,9 @@ $$(PKG_$(1)): $(LINUX_DIR)/.modules_done
 
 endef
 
+$(eval $(call KMOD_template,DIAG,diag,\
+	$(MODULES_DIR)/kernel/drivers/net/diag/diag.o \
+))
 $(eval $(call KMOD_template,BRCM_WL,brcm-wl,\
 	$(MODULES_DIR)/kernel/drivers/net/wl/wl.o \
 ,CONFIG_WL))
diff --git a/openwrt/package/linux/control/kmod-diag.control b/openwrt/package/linux/control/kmod-diag.control
new file mode 100644
index 0000000000000000000000000000000000000000..8e7603cf008b647569b2d546b251d0727812ce39
--- /dev/null
+++ b/openwrt/package/linux/control/kmod-diag.control
@@ -0,0 +1,6 @@
+Package: kmod-diag
+Priority: essential
+Section: sys
+Maintainer: Felix Fietkau <nbd@vd-s.ath.cx>
+Source: buildroot internal
+Description: Driver for Router LEDs and Buttons
diff --git a/openwrt/package/linux/linux.mk b/openwrt/package/linux/linux.mk
index c443e655232efd7ad24ad8f01fd990a0467932ea..43417a4114c67563d89a00d86f24d963da0ecdf2 100644
--- a/openwrt/package/linux/linux.mk
+++ b/openwrt/package/linux/linux.mk
@@ -95,7 +95,6 @@ $(STAGING_DIR)/include/linux/version.h: $(LINUX_DIR)/.configured
 
 $(TARGET_MODULES_DIR): 
 	-mkdir -p $(TARGET_MODULES_DIR)
-	cp $(LINUX_DIR)/drivers/net/diag/diag.o $(TARGET_MODULES_DIR)
 
 linux: $(LINUX_DIR)/.modules_done $(TARGET_MODULES_DIR)