1
0
Fork 0
forked from mirror/openwrt
Commit graph

60 commits

Author SHA1 Message Date
Aleksander Jan Bajkowski
1035615731 wifi-scripts: ucode: export HE and EHT operation in scan results
Export WiFi 6E (HE) and WiFi 7 (EHT) operation data in scan results.
These additional data can be useful to check wifi channel utilization
by nearby stations.

Example:
Cell 32 - Address: xx:xx:xx:xx:xx:xx
          Mode: Master  Frequency: 6.115 GHz  Band: 6 GHz  Channel: 33
          Signal: -14 dBm  Quality: 70/70
          Encryption: SAE (CCMP)
          HE Operation:
                Center Frequency 1: 39
                Center Frequency 2: 47
                Channel Width: 160 MHz
          EHT Operation:
                Center Frequency 1: 47
                Center Frequency 2: 63
                Channel Width: 320 MHz

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/19208
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:38:50 +02:00
Felix Fietkau
0fe9484fed wifi-scripts: ucode: add support for WPS client
Fixes unwanted fallback to unencrypted network.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-15 09:56:33 +02:00
Zhi-Jun You
6a68c2fef0 wifi-scripts: ucode: fix airtime_mode with hostapd-mini
Currently wifi-scripts ucode appends airtime_mode to hostapd config file
unconditionally.
However this breaks bringing up interface with hostapd-mini
because the mini variant doesn't support airtime policy.

Fix this by changing the script to append airtime_mode only when
airtime_mode is set to greater than zero value in /etc/config/wireless.

Fixes: #20136
Fixes: #20314

Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
2025-10-13 10:56:39 +02:00
Felix Fietkau
8c399b4905 wifi-scripts: ucode: only set a hostapd config if it has interfaces
Do not pass invalid configs to hostapd.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-02 10:47:34 +02:00
Felix Fietkau
3d8d525b21 wifi-scripts: ucode: add support for setting Multi-AP profile/vlanid
Required for Profile-2 support.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
d761f6a5a5 wifi-scripts: ucode: add start_disabled for AP mode
Enable it, whenever the AP needs to wait for a supplicant instance.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +02:00
Felix Fietkau
37770c503b wifi-scripts: force wmm_enabled to 1 in AP mode, remove option
There are no supported drivers where it even makes sense to disable WMM
anymore, since so much depends on it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-28 18:17:35 +02:00
Felix Fietkau
0da0a6c449 wifi-scripts: ucode: fix r0kh/r1kh parsing
The option is an array, and for each entry there should be one generated
line in hostapd.conf. Commas also need to be replaced with whitespace

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-25 13:03:41 +02:00
Felix Fietkau
9aca8a97d7 wpa_supplicant: add MLO client support
Can also be used for a client mode interface that is able to connect on
multiple bands individually, while handling hostapd state for the correct
band.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:59 +02:00
Felix Fietkau
b11a6a1c5a wifi-scripts: ucode: fix client mode scan list support
- fix the variable name in the configuration file
- provide a default scan list in case the user did not configure it (MLO preparation)

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
009a9e0478 wifi-scripts: simplify MLO handling
Move mlo specific hostapd ubus call from wireless handler to netifd core
ucode script. This avoids unnecessary queueing and the fake MLO wireless
device.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Oldřich Jedlička
1756dddb9f wifi-scripts: ucode: fix dynamic_vlan value handling
The dynamic_vlan has values 0 (disabled), 1 (optional) and 2 (required).

Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
2025-09-02 09:33:19 +02:00
Felix Fietkau
16ba3fc379 wifi-scripts: ucode: fix starting without wpa_supplicant or hostapd
Fixes: 79f8a83eb9 ("wifi-scripts: ucode: unconditionally call hostapd/supplicant setup")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-30 18:45:01 +02:00
Felix Fietkau
e116b423b8 wifi-scripts: default to sae_pwe=2 in client mode
Improves compatibility

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-29 15:10:37 +02:00
Felix Fietkau
5bdb7a5990 wifi-scripts: fix reload handling with random macaddr
Allow initially generated MAC address to be preserved across reload

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-26 11:53:50 +02:00
Felix Fietkau
5781922f33 wifi-scripts: ucode: fix random mac address
Fix exception by using fs.open instead of open

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-26 11:53:50 +02:00
Felix Fietkau
9736d42141 wifi-scripts: ucode: add support for scan_list
Speed up connecting in client mode by allowing to limit the channels that
need to be scanned.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-15 19:41:48 +02:00
Felix Fietkau
45360a5aea wifi-scripts: ucode: add extra RSN override for MLO
Use SAE-EXT-KEY instead of SAE for MLO clients

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-15 11:12:38 +02:00
Felix Fietkau
6ae4115746 wifi-scripts: ucode: fix setting supported/basic rates in config
Only set the default based on cell density, do not override.

Fixes: https://github.com/openwrt/openwrt/issues/19673
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-14 18:24:32 +02:00
Felix Fietkau
d223d29feb wifi-scripts: ucode: get the phy capabilities for the correct band
On multi-band phys, capabilities can differ between bands.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-13 10:54:32 +02:00
Felix Fietkau
aa0b5eb429 wifi-scripts: ucode: fix unencrypted sta connection
add missing key_mgmt option

Fixes: https://github.com/openwrt/openwrt/issues/17578
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-10 10:17:41 +02:00
Felix Fietkau
adb1fce19b wifi-scripts: set rsn_overriding for client mode interfaces
Unless HE/EHT is enabled, the client should not process the RSN override IE.
This prevents picking up unsupported ciphers

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-04 12:40:08 +02:00
Felix Fietkau
f3dd291b62 wifi-scripts: make wifi/utils.uc available in the legacy scripts variant
It can be used to look up the phy name from uci data in ucode scripts

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-04 11:46:42 +02:00
Felix Fietkau
cbc23f1eb0 wifi-scripts: ucode: remove leftover debug comment
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-03 21:55:12 +02:00
Felix Fietkau
f26d134436 wifi-scripts: ucode: enforce MFP for SAE connections
Avoids connection failures

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-03 21:55:12 +02:00
Felix Fietkau
287f1ea3dd wifi-scripts: ucode: fix ssid handling
Add proper escaping for ssid values.
Use it to fix multi-ap backhaul ssid.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 17:43:28 +02:00
Felix Fietkau
217c315423 wifi-scripts: ucode: add MLO interface support
MLO can be enabled by configuring a wifi-iface section with multiple
radios, like this:

  config wifi-iface
    list radio 'radio0'
    list radio 'radio1'
    option mlo '1'
    option ssid 'OpenWrt'
    option mode 'ap'
    option network 'lan'
    ...

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:59 +02:00
Felix Fietkau
119aa00a78 wifi-scripts: ucode: add support for iwinfo nl80211 phyname
It is needed for compatibility with scripts that rely on this
existing iwinfo behavior

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-07-18 12:33:14 +02:00
Agustin Lorenzo
9738853b73 hostapd: removed OSU support from configuration files, it was removed in the last hostapd update.
Ref: https://w1.fi/cgit/hostap/commit/hostapd?id=e835288592fd672469f46dc35a03e64115b996e5
Ref: https://w1.fi/cgit/hostap/commit/hostapd?id=7bb11e35d55e3d50199efc45921e76696bebd8ef

Fixes: https://github.com/openwrt/openwrt/issues/19142
Link: https://github.com/openwrt/openwrt/pull/19273
Signed-off-by: Agustin Lorenzo <agustin.lorenzo@thinco.es>
2025-07-05 14:49:12 +02:00
Felix Fietkau
14b686247a wifi-scripts: ucode: fix iwinfo crash on untracked interfaces
Deal with data.radio being null

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-07-05 14:41:00 +02:00
Felix Fietkau
ba2ae60a00 wifi-scripts: ucode: fix invalid generated MAC address
macaddr_base can be NULL, in which case it needs to be passed as an empty string

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-27 13:09:17 +02:00
Felix Fietkau
35a4608a30 wifi-scripts: iwinfo(ucode): add missing null checks
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-26 19:44:43 +02:00
Felix Fietkau
126dc7ddb9 wifi-scripts: fix another regression in the ucode auth_type changes
Clear the right variable
Handle psk2 explicitly

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-25 13:26:59 +02:00
Felix Fietkau
8ad5416d99 wifi-scripts: fix corner case in RSN override support
When used, all relevant parameters need to be set

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-25 10:49:05 +02:00
Felix Fietkau
b48925fd9c wifi-scripts: add support for RSN overide and use it for improved WPA3 compat
Override via RSNE is a relatively new feature, which can be used to enable
WPA3 features in a way that is invisible to older clients.
Use it by default to mask the GCMP-256 cipher from older clients, since
there are compatibility issues with existing devices.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-24 15:07:23 +02:00
Felix Fietkau
254dd7d7d9 wifi-scripts: enable GCMP-256 by default on WPA3/OWE configurations with HE or EHT
GCMP-256 support is mandatory with EHT, but HE hardware can already be expected
to support it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-21 20:34:09 +02:00
Felix Fietkau
a17c3be409 wifi-scripts: on psk-sae configurations, disable PSK support on 6 GHz
This allows sharing a wifi-iface section across bands while enforcing the no-PSK
rule for 6 GHz

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-21 20:34:06 +02:00
Mantas Pucka
bb17f5756a wifi-scripts: fix calculation for eht_oper_centr_freq_seg0_idx
Inverted condition caused wrong value for eht_oper_centr_freq_seg0_idx
get selected in ETH320 mode, causing AP fail to start.

Signed-off-by: Mantas Pucka <mantas@8devices.com>
Link: https://github.com/openwrt/openwrt/pull/18998
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-07 11:44:45 +02:00
Sean Khan
f26bdea981 wifi-scripts: ucode: iwinfo: fix 'unknown' typo
The 'unknown' string was misspelled as 'unknonw'.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18039
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-27 11:27:24 +02:00
Sean Khan
15013e87cb wifi-scripts: iwinfo: add null checks for rx/tx bitrate
On some devices, the rx/tx bitrate may not always be available
right away, or at all when in mesh mode at plink is blocked causing
the following:

```
Reference error: left-hand side expression is null
In assoclist(), file /usr/share/ucode/iwinfo.uc, line 321, byte 46:
  called from function info (/usr/share/ucode/iwinfo.uc:427:33)
  called from anonymous function (/usr/bin/iwinfo:108:25)

 `                bitrate_raw: station.sta_info.tx_bitrate.bitrate,`
  Near here -----------------------------------------------^
Reference error: left-hand side expression is null
In assoclist(), file /usr/share/ucode/iwinfo.uc, line 314, byte 54:
  called from function info (/usr/share/ucode/iwinfo.uc:427:33)
  called from anonymous function (/usr/bin/iwinfo:108:25)

 `                bitrate: format_rate(station.sta_info.rx_bitrate.bitrate),`
  Near here -------------------------------------------------------^
Reference error: left-hand side expression is null
In assoc_flags(), file /usr/share/ucode/iwinfo.uc, line 216, byte 12:
  called from function assoclist (/usr/share/ucode/iwinfo.uc:323:51)
  called from function info (/usr/share/ucode/iwinfo.uc:427:33)
  called from anonymous function (/usr/bin/iwinfo:108:25)

 `        if (data[k])`
  Near here -------^
```

This was seen on Linksys MX5300 in mesh mode (QCA9984).

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18027
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:20 +01:00
Sean Khan
eabea737fa wifi-scripts: fix missing VHT capabilities detection
* Add missing parentheses in the conditionals for VHT160/VHT160-80PLUS80
  and VHT_MAX_MPDU capabilities. The missing parentheses caused the bitwise
  AND to be evaluated after the equality comparison due to ECMA's operator
  precedence, where `==` has higher precedence than `&`.

* Fix Max MPDU length detection by changing the comparison operators to
  `>=` vs `>` otherwise the condition would never be met.

* Add missing default values:
  - `true` value for `short_gi_80` (As it exists for `short_gi_20`, `short_gi_40`, `short_gi_160`)
  - `7` for `vht_max_mpdu` (Without it the loop in MAX-MPDU-* calculation always compares with null)

* Change the `vht160` condition to `config.vht160 <= 2`. This flag is
  `2` by default, and only ever set to `0` when `vht_oper_chwidth < 2`.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18013
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:20 +01:00
Sean Khan
1851131427 wifi-scripts: fix RX-STBC notation VHT capabilities
Notation for RX-STBC VHT capabilities when specifying number of spatial
streams should be hyphenated, e.g. RX-STBC-1, RX-STBC-2. HT capabilities
use without hyphen, e.g. RX-STBC1, RX-STBC2. This is consistent with
what hostapd expects.

```c
static int hostapd_config_ht_capab(struct hostapd_config *conf,
				   const char *capab)
{
	if (os_strstr(capab, "[RX-STBC1]")) {
		conf->ht_capab &= ~HT_CAP_INFO_RX_STBC_MASK;
		conf->ht_capab |= HT_CAP_INFO_RX_STBC_1;
	}
	if (os_strstr(capab, "[RX-STBC12]")) {
		conf->ht_capab &= ~HT_CAP_INFO_RX_STBC_MASK;
		conf->ht_capab |= HT_CAP_INFO_RX_STBC_12;
	}
	if (os_strstr(capab, "[RX-STBC123]")) {
		conf->ht_capab &= ~HT_CAP_INFO_RX_STBC_MASK;
		conf->ht_capab |= HT_CAP_INFO_RX_STBC_123;
	}
}

static int hostapd_config_vht_capab(struct hostapd_config *conf,
				    const char *capab)
{
	if (os_strstr(capab, "[RX-STBC-1]"))
		conf->vht_capab |= VHT_CAP_RXSTBC_1;
	if (os_strstr(capab, "[RX-STBC-12]"))
		conf->vht_capab |= VHT_CAP_RXSTBC_2;
	if (os_strstr(capab, "[RX-STBC-123]"))
		conf->vht_capab |= VHT_CAP_RXSTBC_3;
	if (os_strstr(capab, "[RX-STBC-1234]"))
}
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18013
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:20 +01:00
Sean Khan
7fd9340ec4 wifi-scripts: fix vht_oper_centr_freq_seg0_idx_map calculation
When selecting channels above 100 in VHT160+ modes the center
frequency segment was incorrectly set to 50, causing the interface
to not come up.

Change logic to instead check if the channel is within ±28 channels
of the intended center, which matches the actual 160+ MHz channel
width specification for VHT160, HE160, and EHT160.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18013
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:20 +01:00
Felix Fietkau
7482296ebf wifi-scripts: add a few missing auth_type checks in ucode
Add some missing documented or commonly used values

Fixes: https://github.com/openwrt/openwrt/issues/17431
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-01-18 10:36:37 +01:00
Felix Fietkau
e516871515 wifi-scripts: sync enable_background_radar in ucode with old version
It needs to be opt-in instead of opt-out, since there is no reliable way to
determine if the extra background radar chain has an antenna connected.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-01-14 13:51:05 +01:00
Felix Fietkau
12b8d5c83c wifi-scripts: ucode: iwinfo: skip uninitialized PHYs
They show up as null entries in the nl80211 wiphy dump.
Fixes the following error:

Reference error: left-hand side expression is null
In find_phy(), file /usr/share/ucode/iwinfo.uc, line 19, byte 11:
  called from function get_max_power (/usr/share/ucode/iwinfo.uc:42:32)
  called from function module (/usr/share/ucode/iwinfo.uc:102:39)
  called from anonymous function (/usr/bin/iwinfo:5:25)

 `        if (phy.wiphy == wiphy)`
  Near here ------^

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-30 21:28:09 +01:00
Felix Fietkau
2e03c7d53e wifi-scripts: fix phy index lookup in device_capabilities
For renamed phys, the index cannot be derived from the name

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-19 06:44:48 +01:00
Felix Fietkau
b6c7d8a0d6 wifi-scripts: fix mesh/sta setup with ucode scripts
Ensure that the code doesn't pass macaddr_base with the wrong type (null)
to the supplicant setup/start call.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-13 10:57:18 +01:00
Felix Fietkau
00860e485b wifi-scripts: add macaddr_base wifi-device option
This can be used to configure the base mac address from which all
interface mac addresses are derived

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-12 19:19:05 +01:00
John Crispin
60f9ec2b22 wifi-scripts: ucode: change default behaviour of the vlan_no_bridge option
Signed-off-by: John Crispin <john@phrozen.org>
2024-12-11 14:43:25 +01:00