Reviewed-by: Bernhard Bitsch <[email protected]>

Am 19.01.2026 um 17:21 schrieb Michael Tremer:
I just have a little bit of easily accessible testing hardware in form
of USB devices which are very suitable for testing, but the one that I
found in my drawer doesn't support 802.11n.

Signed-off-by: Michael Tremer <[email protected]>
---
  doc/language_issues.de           |  2 ++
  doc/language_issues.en           |  2 ++
  doc/language_issues.es           |  2 ++
  doc/language_issues.fr           |  2 ++
  doc/language_issues.it           |  2 ++
  doc/language_issues.nl           |  2 ++
  doc/language_issues.pl           |  2 ++
  doc/language_issues.ru           |  2 ++
  doc/language_issues.tr           |  2 ++
  doc/language_issues.tw           |  2 ++
  doc/language_issues.zh           |  2 ++
  doc/language_missings            | 20 ++++++++++++++++++++
  html/cgi-bin/wlanap.cgi          |  8 +++++++-
  langs/en/cgi-bin/en.pl           |  2 ++
  src/initscripts/packages/hostapd | 15 +++++++++++++--
  15 files changed, 64 insertions(+), 3 deletions(-)

diff --git a/doc/language_issues.de b/doc/language_issues.de
index 008b9520f..1795ec5af 100644
--- a/doc/language_issues.de
+++ b/doc/language_issues.de
@@ -1210,6 +1210,8 @@ WARNING: untranslated string: wio_webinterface_link = 
unknown string
  WARNING: untranslated string: wireguard = WireGuard
  WARNING: untranslated string: wlan client encryption wpa3 = WPA3
  WARNING: untranslated string: wlan client management frame protection = 
Management Frame Protection
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11w disabled = Disabled
  WARNING: untranslated string: wlanap 802.11w enforced = Enforced
  WARNING: untranslated string: wlanap 802.11w optional = Optional
diff --git a/doc/language_issues.en b/doc/language_issues.en
index 6ea0f1963..30e2fbcce 100644
--- a/doc/language_issues.en
+++ b/doc/language_issues.en
@@ -2408,6 +2408,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.es b/doc/language_issues.es
index 48dfffa7e..980d27874 100644
--- a/doc/language_issues.es
+++ b/doc/language_issues.es
@@ -1250,6 +1250,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.fr b/doc/language_issues.fr
index 65b3838d0..a7c31beaf 100644
--- a/doc/language_issues.fr
+++ b/doc/language_issues.fr
@@ -1301,6 +1301,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.it b/doc/language_issues.it
index 5214abda2..10e77143f 100644
--- a/doc/language_issues.it
+++ b/doc/language_issues.it
@@ -1652,6 +1652,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.nl b/doc/language_issues.nl
index d3f814785..5d56a5ca2 100644
--- a/doc/language_issues.nl
+++ b/doc/language_issues.nl
@@ -1672,6 +1672,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.pl b/doc/language_issues.pl
index 24b5429ef..7a1128c20 100644
--- a/doc/language_issues.pl
+++ b/doc/language_issues.pl
@@ -1920,6 +1920,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.ru b/doc/language_issues.ru
index 0682bfd6f..b6320fd30 100644
--- a/doc/language_issues.ru
+++ b/doc/language_issues.ru
@@ -1919,6 +1919,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
index 2ef6920ac..2ad1bf054 100644
--- a/doc/language_issues.tr
+++ b/doc/language_issues.tr
@@ -1522,6 +1522,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.tw b/doc/language_issues.tw
index 73e116b7c..c676ffa52 100644
--- a/doc/language_issues.tw
+++ b/doc/language_issues.tw
@@ -1268,6 +1268,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_issues.zh b/doc/language_issues.zh
index 73e116b7c..c676ffa52 100644
--- a/doc/language_issues.zh
+++ b/doc/language_issues.zh
@@ -1268,6 +1268,8 @@ WARNING: untranslated string: wlanap 802.11ac 160mhz = 
IEEE 802.11ac @ 160 MHz
  WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
  WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
  WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
  WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
  WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 
MHz
  WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 
MHz
diff --git a/doc/language_missings b/doc/language_missings
index 1d435f16f..268add65b 100644
--- a/doc/language_missings
+++ b/doc/language_missings
@@ -141,6 +141,8 @@
  < wg pre-shared key (optional)
  < winbind daemon
  < wireguard
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11w disabled
  < wlanap 802.11w enforced
  < wlanap 802.11w optional
@@ -217,6 +219,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -398,6 +402,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -1040,6 +1046,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -1754,6 +1762,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -2882,6 +2892,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -4048,6 +4060,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -4591,6 +4605,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -4727,6 +4743,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
@@ -4828,6 +4846,8 @@
  < wlanap 802.11ac 20mhz
  < wlanap 802.11ac 40mhz
  < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
  < wlanap 802.11agn
  < wlanap 802.11agn 20mhz
  < wlanap 802.11agn 40mhz
diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi
index 0d1c5a90b..0c5dad558 100644
--- a/html/cgi-bin/wlanap.cgi
+++ b/html/cgi-bin/wlanap.cgi
@@ -102,7 +102,7 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") {
        }
# Validate MODE
-       unless ($cgiparams{'MODE'} =~ m/^(HT|HE|VHT|EHT)(20|40|80|160|320)$/) {
+       unless ($cgiparams{'MODE'} =~ m/^(|HT|HE|VHT|EHT)(20|40|80|160|320)$/) {
                $errormessage .= "$Lang::tr{'wlanap invalid mode'}<br />";
        }
@@ -343,6 +343,12 @@ print <<END;
                                                                
$Lang::tr{'wlanap 802.11agn 20mhz'}
                                                        </option>
                                                </optgroup>
+
+                                               <optgroup label="$Lang::tr{'wlanap 
802.11ag'}">
+                                                       <option value="20" 
$selected{'MODE'}{'20'}>
+                                                               
$Lang::tr{'wlanap 802.11ag 20mhz'}
+                                                       </option>
+                                               </optgroup>
                                        </select>
                                </td>
                        </tr>
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 79a512498..dda3e8d5b 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -3202,6 +3202,8 @@
  'wlanap 802.11ac 20mhz' => 'IEEE 802.11ac @ 20 MHz',
  'wlanap 802.11ac 40mhz' => 'IEEE 802.11ac @ 40 MHz',
  'wlanap 802.11ac 80mhz' => 'IEEE 802.11ac @ 80 MHz',
+'wlanap 802.11ag' => 'IEEE 802.11a/g',
+'wlanap 802.11ag 20mhz' => 'IEEE802.11a/g @ 20 MHz',
  'wlanap 802.11agn' => 'IEEE 802.11an/gn',
  'wlanap 802.11agn 20mhz' => 'IEEE 802.11an/gn @ 20 MHz',
  'wlanap 802.11agn 40mhz' => 'IEEE 802.11an/gn @ 40 MHz',
diff --git a/src/initscripts/packages/hostapd b/src/initscripts/packages/hostapd
index 5384badab..9bb6a2120 100644
--- a/src/initscripts/packages/hostapd
+++ b/src/initscripts/packages/hostapd
@@ -360,6 +360,15 @@ write_config() {
        # Always enable WMM
        echo "wmm_enabled=1"
+ # 802.11n
+       local enable_n=0
+
+       case "${MODE}" in
+               HT*|VHT*|HE*|EHT*)
+                       enable_n=1
+                       ;;
+       esac
+
        # 802.11ac
        local enable_ac=0
        local vht_oper_chwidth=0
@@ -507,8 +516,10 @@ write_config() {
                fi
        fi
- # Always enable 802.11n
-       echo "ieee80211n=1"
+       # Enable 802.11n?
+       if [ "${enable_n}" -eq 1 ]; then
+               echo "ieee80211n=1"
+       fi
# Set HT capabilities
        if [ ${#ht_caps[@]} -gt 0 ]; then


Reply via email to