diff --git a/src/initscripts/packages/hostapd b/src/initscripts/packages/hostapd
index eb00e11d3..3d6ea4f69 100644
--- a/src/initscripts/packages/hostapd
+++ b/src/initscripts/packages/hostapd
@@ -189,6 +189,9 @@ write_config() {
 	local he_caps=()
 	local eht_caps=()
 
+	# Clear [HT40+][HT40-]
+	ht_flags="$(( ht_flags & ~0x0002 ))"
+
 	# HT Capabilities
 	for flag in ${!HT_CAPS[@]}; do
 		if (( ${ht_flags} & ${flag} )); then
@@ -381,8 +384,32 @@ write_config() {
 	local enable_n=0
 
 	case "${CONFIG["MODE"]}" in
-		HT*|VHT*|HE*|EHT*)
+		HT20|VHT20|HE20|EHT20)
+			enable_n=1
+			;;
+
+		*40|*80|*160|*320)
 			enable_n=1
+
+			case "${CONFIG["BAND"]}" in
+				6g|5g)
+					case "$(( ((${CONFIG["CHANNEL"]} / 4) + channel_offset) % 2 ))" in
+						0)
+							ht_caps+=( "[HT40-]" )
+							;;
+						1)
+							ht_caps+=( "[HT40+]" )
+							;;
+					esac
+					;;
+				2g)
+					if [ "${CONFIG["CHANNEL"]}" -lt 7 ]; then
+						ht_caps+=( "[HT40+]" )
+					else
+						ht_caps+=( "[HT40-]" )
+					fi
+					;;
+			esac
 			;;
 	esac
 
