diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi
index 2b4f1ce1c2c90b403ab19a963e78619756491dc6..151036e9cb6136df905e12dbeb2ece3d550e228f 100755
--- a/package/base-files/files/sbin/wifi
+++ b/package/base-files/files/sbin/wifi
@@ -35,24 +35,17 @@ bridge_interface() {(
 )}
 
 
-wifi_up() {
+wifi_updown() {
 	for device in ${2:-$DEVICES}; do (
+	        config_get disabled "$device" disabled
+	        [ "$disabled" == "1" ] && {
+	        	echo "'$device' is disabled"
+	        	set disable
+	        }
 		config_get iftype "$device" type
-		if eval "type enable_$iftype" 2>/dev/null >/dev/null; then
+		if eval "type ${1}_$iftype" 2>/dev/null >/dev/null; then
 			eval "scan_$iftype '$device'"
-			eval "enable_$iftype '$device'" || echo "$device($iftype): Setup failed"
-		else
-			echo "$device($iftype): Interface type not supported"
-		fi
-	); done
-}
-
-wifi_down() {
-	for device in ${2:-$DEVICES}; do (
-		config_get iftype "$device" type
-		if eval "type disable_$iftype" 2>/dev/null >/dev/null; then
-			eval "scan_$iftype '$device'"
-			eval "disable_$iftype '$device'" || echo "$device($iftype): Disable failed"
+			eval "${1}_$iftype '$device'" || echo "$device($iftype): ${1} failed"
 		else
 			echo "$device($iftype): Interface type not supported"
 		fi
@@ -99,7 +92,7 @@ config_load wireless
 include /lib/wifi
 
 case "$1" in
-	down) wifi_down "$2";;
+	down) wifi_updown "disable" "$2";;
 	detect) wifi_detect "$2";;
-	*) wifi_up "$2";;
+	*) wifi_updown "enable" "$2";;
 esac
diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh
index bfb1b1267b9969a31dd928f02107bb0c403a6833..baa06f57424e953dd86130e88a24c23063a24b5e 100644
--- a/package/broadcom-wl/files/lib/wifi/broadcom.sh
+++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh
@@ -244,7 +244,7 @@ config wifi-device  wl0
 	option type     broadcom
 	option channel  5
 # disable radio to prevent an open ap after reflashing:
-	option radio	0
+	option disabled 1
 
 config wifi-iface
 	option device   wl0
diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh
index 8083612af929d2a27a042921587fbe0bf9ba1c0e..0f846d0cb9fc4f3a94e1dff0cab476c22abce6d4 100755
--- a/package/madwifi/files/lib/wifi/madwifi.sh
+++ b/package/madwifi/files/lib/wifi/madwifi.sh
@@ -241,7 +241,7 @@ config wifi-device  $dev
 #       option rxantenna 0
 #       option distance  2000
 # disable radio to prevent an open ap after reflashing:
-	option radio	0
+	option disabled 1
 
 
 config wifi-iface