[openwrt/openwrt] wifi-scripts: ucode: fix start failed

LEDE Commits lede-commits at lists.infradead.org
Wed Nov 12 04:46:13 PST 2025


nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/00e881451a980a7e65d94e7f91029baa479dd8eb

commit 00e881451a980a7e65d94e7f91029baa479dd8eb
Author: Andy Chiang <AndyChiang_git at outlook.com>
AuthorDate: Sun Oct 26 07:29:30 2025 +0700

    wifi-scripts: ucode: fix start failed
    
    When using wpad-openssl/wpad-basic-openssl, wpa_supplicant/hostapd may not be ready because of openssl.
    This cause supplicant.setup and hostapd.setup to be failed.
    Therefore, wait for wpa_supplicant/hostapd to be ready before supplicant.setup and hostapd.setup.
    
    Run-tested: mediatek/filogic GL-MT3000
    fixes: #20361
    
    Signed-off-by: Andy Chiang <AndyChiang_git at outlook.com>
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 .../wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh       | 7 +++++--
 .../wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc       | 4 +++-
 .../wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc    | 4 +++-
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh
index 23438a4cde..8aba81436e 100755
--- a/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh
+++ b/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh
@@ -288,8 +288,11 @@ function setup() {
 		wdev_data[v.config.ifname] = config;
 	}
 
-	supplicant.setup(supplicant_data, data);
-	hostapd.setup(data);
+	if (fs.access('/usr/sbin/wpa_supplicant', 'x'))
+		supplicant.setup(supplicant_data, data);
+
+	if (fs.access('/usr/sbin/hostapd', 'x'))
+		hostapd.setup(data);
 
 	system(`ucode /usr/share/hostap/wdev.uc ${data.phy}${data.phy_suffix} set_config '${printf("%J", wdev_data)}' ${join(' ', active_ifnames)}`);
 
diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
index c0a76bbd94..db3bffe9ef 100644
--- a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
+++ b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
@@ -571,10 +571,12 @@ export function setup(data) {
 		config: has_ap ? file_name : "",
 		prev_config: file_name + '.prev'
 	};
+	if (!global.ubus.list('hostapd'))
+		system('ubus wait_for hostapd');
 	let ret = global.ubus.call('hostapd', 'config_set', msg);
 
 	if (ret)
 		netifd.add_process('/usr/sbin/hostapd', ret.pid, true, true);
-	else if (fs.access('/usr/sbin/hostapd', 'x'))
+	else
 		netifd.setup_failed('HOSTAPD_START_FAILED');
 };
diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc
index 3ed05149f8..f796ae99a7 100644
--- a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc
+++ b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc
@@ -270,6 +270,8 @@ export function generate(config_list, data, interface) {
 };
 
 export function setup(config, data) {
+	if (!global.ubus.list('wpa_supplicant'))
+		system('ubus wait_for wpa_supplicant');
 	let ret = global.ubus.call('wpa_supplicant', 'config_set', {
 		phy: data.phy,
 		radio: data.config.radio,
@@ -281,7 +283,7 @@ export function setup(config, data) {
 
 	if (ret)
 		netifd.add_process('/usr/sbin/wpa_supplicant', ret.pid, true, true);
-	else if (fs.access('/usr/sbin/wpa_supplicant', 'x'))
+	else
 		netifd.setup_failed('SUPPLICANT_START_FAILED');
 };
 




More information about the lede-commits mailing list