diff --git a/package/hostapd/files/wpa_supplicant.sh b/package/hostapd/files/wpa_supplicant.sh
index 8f7f503c1f..ccf31baa90 100644
--- a/package/hostapd/files/wpa_supplicant.sh
+++ b/package/hostapd/files/wpa_supplicant.sh
@@ -12,6 +12,9 @@ wpa_supplicant_setup_vif() {
 	}
 
 	case "$enc" in
+		*none*)
+			key_mgmt='NONE'
+		;;
 		*wep*)
 			key_mgmt='NONE'
 			config_get key "$vif" key
diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh
index 62b8e7ed3a..27e234d83f 100644
--- a/package/mac80211/files/lib/wifi/mac80211.sh
+++ b/package/mac80211/files/lib/wifi/mac80211.sh
@@ -312,6 +312,9 @@ enable_mac80211() {
 			local key keystring
 
 			case "$enc" in
+				*none*)
+					config_get keymgmt "$vif" keymgmt
+				;;
 				*wep*)
 					config_get keymgmt "$vif" keymgmt
 					if [ -z "$keymgmt" ]; then
@@ -397,7 +400,18 @@ enable_mac80211() {
 						fi
 					;;
 					*)
-						iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid
+						if [ -z "$keymgmt" ]; then
+							iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid
+						else
+							if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
+								wpa_supplicant_setup_vif "$vif" wext || {
+									echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2
+									# make sure this wifi interface won't accidentally stay open without encryption
+									ifconfig "$ifname" down
+									continue
+								}
+							fi
+						fi
 					;;
 				esac