diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot
index 03b0fa04199091c12d30280768e4cbab550e6770..31f245ffc759b10ecda46d87ca70a26bab8b5a2a 100755
--- a/package/base-files/files/etc/init.d/boot
+++ b/package/base-files/files/etc/init.d/boot
@@ -38,10 +38,10 @@ boot() {
 
 	/sbin/kmodloader
 
-	# allow wifi modules time to settle
-	sleep 1
-
-	/sbin/wifi detect
+	[ ! -f /etc/config/wireless ] && {
+		# compat for brcm47xx and mvebu
+		sleep 1
+	}
 
 	/bin/config_generate
 	uci_apply_defaults
diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi
index 2ef333a78259b87df31305044de445caa5399070..f2845c82f6f35354c3c4245d1b98d1f70633720c 100755
--- a/package/base-files/files/sbin/wifi
+++ b/package/base-files/files/sbin/wifi
@@ -145,7 +145,7 @@ wifi_reload() {
 	wifi_reload_legacy
 }
 
-wifi_detect() {
+wifi_config() {
 	[ ! -f /etc/config/wireless ] && touch /etc/config/wireless
 
 	for driver in $DRIVERS; do (
@@ -229,7 +229,8 @@ scan_wifi
 
 case "$1" in
 	down) wifi_updown "disable" "$2";;
-	detect) wifi_detect ;;
+	detect) ;;
+	config) wifi_config ;;
 	status) ubus_wifi_cmd "status" "$2";;
 	reload) wifi_reload "$2";;
 	reload_legacy) wifi_reload_legacy "$2";;
diff --git a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect
new file mode 100644
index 0000000000000000000000000000000000000000..a63d6bce60fb604ca7965e2d91209abe4ec8e9b8
--- /dev/null
+++ b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+[ "${ACTION}" = "add" ] && [ "${INTERFACE%%[0-9]}" = "wl" ] && {
+	/sbin/wifi config
+}
diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index f9f50932e33f63fc7096d3a65a746af71ab40241..25adbfbb90183de50f5007ce87ddd3fb7d7202c6 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -1732,6 +1732,8 @@ define KernelPackage/cfg80211/install
 	$(INSTALL_DIR) $(1)/lib/wifi $(1)/lib/netifd/wireless
 	$(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi
 	$(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless
+	$(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211
+	$(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/00-wifi-detect
 endef
 
 define KernelPackage/ipw2100/install
diff --git a/package/kernel/mac80211/files/mac80211.hotplug b/package/kernel/mac80211/files/mac80211.hotplug
new file mode 100644
index 0000000000000000000000000000000000000000..b86555266138a814ee56ad9ddb4c2dd12d5018dc
--- /dev/null
+++ b/package/kernel/mac80211/files/mac80211.hotplug
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+[ "${ACTION}" = "add" ] && {
+	/sbin/wifi config
+}