We are trying to simplify the network configuration of our embedded Linux product. We use the 802.11ah module with 802.11s using the morse version of the wpa_supplicant. We are on Morse versions 1_12_4
When we eliminated NetworkManager from our Linux system, we encounter a strange situation. The AP starts, but then the supplicant encounters an error “mesh join error=-114” and then just sits there. If we use systemd to restart the wpa_supplicant then it properly joins the already present 802.11s network.
ajudge
April 19, 2025, 1:24pm
2
I would need to know your host processor architecture to be sure, but on two of the platforms I have at hand, -114
is errno EALREADY
- “Operation already in progress”.
This could indicate a running service is already trying to interact with the interface. It sounds like that shouldn’t be NetworkManager, as you have removed that.
When you see the mesh join error, is that in the logs from the wpa_supplicant started by systemd? Or a console output from you running wpa_supplicant manually?
Greetings. I am getting that error code from a supplicant started by systemd. Nothing else should be accessing the radio at that point. My platform is armv7.
uname -m
armv7l
Thanks
ajudge
April 23, 2025, 3:05pm
4
I can confirm that -114
is EALREADY
for this architecture.
Can you try set a long delay in the automatic service start with something like ExecStartPre=/bin/sleep 30
in the systemd unit file. I’m curious if this is related to some early init condition of the system.
Thanks for the suggestion. delaying 30 seconds produced the same result. restarting the supplicant service works. it is almost as if something in the shutdown is setting us up for success on the next startup.
Interesting, I will need more configuration information, and will attempt to reproduce it on a setup using systemd.
Can you please share the output of:
systemctl list-units --type=service | grep wpa_supplicant
For each service listed, including the parameterised versions, please share the content of the corresponding service file - eg /usr/lib/systemd/system/wpa_supplicant_s1g.service
, also include any wpa_supplicant configuration files which may be passed into each service.
Re-reading your first post again. When you say “The AP starts”, is this referring to your product booting? Or are you starting an Access Point interface as well. If the latter, is this AP interface started with hostap, or are you starting a soft-ap with wpa_supplicant.
# cat /etc/systemd/system/wpa-supplicant-halo0-mesh.service
[Unit]
Description=WPA Supplicant halo0_mesh
Requires=network.target sys-subsystem-net-devices-halo0_mesh.device
After=network.target sys-subsystem-net-devices-halo0_mesh.device
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/sbin/wpa_supplicant_s1g -Dnl80211 -c /etc/wpa_supplicant_halo0_mesh.conf -i halo0_mesh
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
# cat /etc/wpa_supplicant_halo0_mesh.conf
ctrl_interface=/var/run/wpa_supplicant_s1g
update_config=1
ap_scan=1
mesh_max_inactivity=30
max_peer_links=10
network={
ssid="my-ssid"
key_mgmt=NONE
# psk=""
mode=5
channel=37
country="US"
op_class=68
s1g_prim_chwidth=0
s1g_prim_1mhz_chan_index=0
beacon_int=1000
dtim_period=1
ieee80211w=2
dot11MeshHWMPRootMode=0
dot11MeshGateAnnouncements=0
}
# journalctl -n 100 -fu wpa-supplicant-halo0-mesh
May 30 14:42:28 hostname systemd[1]: Started WPA Supplicant halo0_mesh.
May 30 14:42:28 hostname wpa_supplicant_s1g[424]: Successfully initialized wpa_supplicant
May 30 14:42:28 hostname wpa_supplicant_s1g[424]: rfkill: Cannot open RFKILL control device
May 30 14:42:28 hostname wpa_supplicant_s1g[424]: morse: disable long sleep on ifname halo0_mesh
May 30 14:42:28 hostname wpa_supplicant_s1g[440]: Long Sleep Mode: disabled
May 30 14:42:31 hostname wpa_supplicant_s1g[424]: s1g mapped ht channel 149
May 30 14:42:31 hostname wpa_supplicant_s1g[424]: s1g mapped ht channel 149
May 30 14:42:31 hostname wpa_supplicant_s1g[424]: halo0_mesh: mesh: ieee80211w:2 PMF:0
May 30 14:42:31 hostname wpa_supplicant_s1g[471]: Full Channel Information
May 30 14:42:31 hostname wpa_supplicant_s1g[471]: Operating Frequency: 920500 kHz
May 30 14:42:31 hostname wpa_supplicant_s1g[471]: Operating BW: 1 MHz
May 30 14:42:31 hostname wpa_supplicant_s1g[471]: Primary BW: 1 MHz
May 30 14:42:31 hostname wpa_supplicant_s1g[471]: Primary Channel Index: 0
May 30 14:42:31 hostname wpa_supplicant_s1g[424]: halo0_mesh: interface state UNINITIALIZED->ENABLED
May 30 14:42:31 hostname wpa_supplicant_s1g[424]: halo0_mesh: AP-ENABLED
May 30 14:42:31 hostname wpa_supplicant_s1g[424]: halo0_mesh: joining mesh my-ssid
May 30 14:42:31 hostname wpa_supplicant_s1g[424]: halo0_mesh: mesh join error=-114
issued a command: systemctl restart wpa-supplicant-halo0-mesh
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: MESH-GROUP-REMOVED halo0_mesh
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: leaving mesh
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: interface state ENABLED->DISABLED
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: AP-DISABLED
May 30 14:57:00 hostname systemd[1]: Stopping WPA Supplicant halo0_mesh...
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: CTRL-EVENT-DISCONNECTED bssid=02:4e:99:99:24:20 reason=3 locally_generated=1
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: morse: disable long sleep on ifname halo0_mesh
May 30 14:57:00 hostname wpa_supplicant_s1g[10972]: Long Sleep Mode: disabled
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: morse: disable long sleep on ifname halo0_mesh
May 30 14:57:00 hostname wpa_supplicant_s1g[10973]: Long Sleep Mode: disabled
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: CTRL-EVENT-DSCP-POLICY clear_all
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: CTRL-EVENT-DSCP-POLICY clear_all
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: nl80211: deinit ifname=halo0_mesh disabled_11b_rates=0
May 30 14:57:00 hostname wpa_supplicant_s1g[424]: halo0_mesh: CTRL-EVENT-TERMINATING
May 30 14:57:00 hostname systemd[1]: wpa-supplicant-halo0-mesh.service: Deactivated successfully.
May 30 14:57:00 hostname systemd[1]: Stopped WPA Supplicant halo0_mesh.
May 30 14:57:00 hostname systemd[1]: Started WPA Supplicant halo0_mesh.
May 30 14:57:00 hostname wpa_supplicant_s1g[10977]: Successfully initialized wpa_supplicant
May 30 14:57:00 hostname wpa_supplicant_s1g[10977]: rfkill: Cannot open RFKILL control device
May 30 14:57:00 hostname wpa_supplicant_s1g[10977]: morse: disable long sleep on ifname halo0_mesh
May 30 14:57:00 hostname wpa_supplicant_s1g[10982]: Long Sleep Mode: disabled
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: s1g mapped ht channel 149
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: s1g mapped ht channel 149
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: mesh: ieee80211w:2 PMF:0
May 30 14:57:03 hostname wpa_supplicant_s1g[11013]: Full Channel Information
May 30 14:57:03 hostname wpa_supplicant_s1g[11013]: Operating Frequency: 920500 kHz
May 30 14:57:03 hostname wpa_supplicant_s1g[11013]: Operating BW: 1 MHz
May 30 14:57:03 hostname wpa_supplicant_s1g[11013]: Primary BW: 1 MHz
May 30 14:57:03 hostname wpa_supplicant_s1g[11013]: Primary Channel Index: 0
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: interface state UNINITIALIZED->ENABLED
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: AP-ENABLED
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: joining mesh my-ssid
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: CTRL-EVENT-CONNECTED - Connection to 02:4e:99:99:24:20 completed [id=0 id_str=]
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: MESH-GROUP-STARTED ssid="my-ssid" id=0
May 30 14:57:03 hostname wpa_supplicant_s1g[11022]: Failed to set Mesh Config info
May 30 14:57:03 hostname wpa_supplicant_s1g[11022]: mesh_config -m <mesh id> [-b <beaconless mode>] -p <max_peer_links>
May 30 14:57:03 hostname wpa_supplicant_s1g[11022]: Configure Mesh
May 30 14:57:03 hostname wpa_supplicant_s1g[11022]: -m <value> Mesh ID as a hex string
May 30 14:57:03 hostname wpa_supplicant_s1g[11022]: -b <value> Mesh beaconless mode. 1: enable, 0: disable
May 30 14:57:03 hostname wpa_supplicant_s1g[11022]: -p <value> Maximum number of peer links. Min:0, Max:10
May 30 14:57:03 hostname wpa_supplicant_s1g[11022]: do not use - for internal use by wpa_supplicant
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: morse: Failed to execute morse_cli to set Mesh Config halo0_mesh
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: new peer notification for 02:4e:00:00:22:20
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: mesh plink with 02:4e:00:00:22:20 established
May 30 14:57:03 hostname wpa_supplicant_s1g[10977]: halo0_mesh: MESH-PEER-CONNECTED 02:4e:00:00:22:20
May 30 14:57:04 hostname wpa_supplicant_s1g[10977]: halo0_mesh: mesh plink with 02:4e:00:00:26:20 established
May 30 14:57:04 hostname wpa_supplicant_s1g[10977]: halo0_mesh: MESH-PEER-CONNECTED 02:4e:00:00:26:20
ajudge
June 1, 2025, 12:08pm
8
Thanks, we will see if we can reproduce it on a minimal setup.
Hi @manderson
We’ve set up a systemd based platform with a DART6UL-Customboard from Variscite with one of our modules. We haven’t been able to reproduce the EALREADY error you are seeing.
Before creating the mesh configuration service, we went through systemctl list-units --type=service --all
and made sure to run
systemctl disable wpa_supplicant.service
systemctl disable NetworkManager.service
to remove any of the pre-configured services which may interfere with this test.
We copied your mesh configuration, but re-added SAE security as we typically do recommend to do so.
ctrl_interface=/var/run/wpa_supplicant_s1g
update_config=1
ap_scan=1
mesh_max_inactivity=30
max_peer_links=10
sae_pwe=1
network={
ssid="MorseMicro-mesh"
key_mgmt=SAE
psk="12345678"
mode=5
channel=44
country="AU"
op_class=71
s1g_prim_chwidth=1
s1g_prim_1mhz_chan_index=3
beacon_int=1000
dtim_period=1
ieee80211w=2
dot11MeshHWMPRootMode=0
dot11MeshGateAnnouncements=0
pairwise=CCMP
ieee80211w=2
}
We copied your service file, adjusting interface name as we left our device to it’s default bring up state.
[Unit]
Description=WPA Supplicant halo0_mesh
Requires=network.target sys-subsystem-net-devices-wlan0.device
After=network.target sys-subsystem-net-devices-wlan0.device
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/sbin/wpa_supplicant_s1g -Dnl80211 -c /root/wpa-supp-mesh.conf -i wlan0 -s -t
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
root@imx6ul-var-dart:~# journalctl -n 100 -fu wpa-supplicant-halo0-mesh
Feb 27 18:03:27 imx6ul-var-dart systemd[1]: Started WPA Supplicant halo0_mesh.
Feb 27 18:03:27 imx6ul-var-dart wpa_supplicant_s1g[633]: Successfully initialized wpa_supplicant
Feb 27 18:03:28 imx6ul-var-dart wpa_supplicant_s1g[633]: rfkill: Cannot open RFKILL control device
Feb 27 18:03:28 imx6ul-var-dart wpa_supplicant_s1g[633]: morse: disable long sleep on ifname wlan0
Feb 27 18:03:28 imx6ul-var-dart wpa_supplicant_s1g[661]: Long Sleep Mode: disabled
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: s1g mapped ht channel 163
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: Automatically configuring VHT due to 160MHz channel selection
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: s1g mapped ht channel 163
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: Automatically configuring VHT due to 160MHz channel selection
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: mesh: ieee80211w:2 PMF:0
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[669]: Full Channel Information
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[669]: Operating Frequency: 924000 kHz
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[669]: Operating BW: 8 MHz
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[669]: Primary BW: 2 MHz
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[669]: Primary Channel Index: 3
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: interface state UNINITIALIZED->ENABLED
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: AP-ENABLED
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: joining mesh onebox-mesh
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: CTRL-EVENT-CONNECTED - Connection to 0c:bf:74:de:7e:cf completed [id=0 id_str=]
Feb 27 18:03:30 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: MESH-GROUP-STARTED ssid="onebox-mesh" id=0
Feb 27 18:03:31 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: new peer notification for 28:d0:43:80:f4:4c
Feb 27 18:03:31 imx6ul-var-dart wpa_supplicant_s1g[633]: wlan0: new peer notification for 28:d0:43:80:f9:ba
I can see your device is coming up as halo_mesh0
. Can you share any additional scripts used to bring up this interface?