HaLow Integration on Raspberry Pi 5

Hi all,

I wanted to share my recent experience bringing up WiFi HaLow on the Raspberry Pi 5 (Rpi 5). Below is a summary of the overall steps I took, issues encountered, and some tips to help others avoid the same roadblocks.


System Details:

  • OS: Debian GNU/Linux 12 (Bookworm)
  • Kernel: Version 6.6.51
  • HaLow Integration Package: MM610x Software Release Package 1.12.4 (Morse Micro)

Steps Taken:

  1. Setup Environment:
  • Installed necessary toolchains, dependencies, and libraries for cross-compilation.
  • Cloned the MM610x Software Release Package (1.12.4) from the Morse Micro repositories.
  1. Patching the Kernel:
  • Applied necessary kernel patches for S1G (802.11ah) support.
  • Cross-compiled the kernel for the Rpi 5 with Morse-specific options enabled (cryptographic APIs for Hostapd).
  1. Driver and Firmware:
  • Compiled Morse Micro’s morse.ko and dot11ah.ko drivers and installed them into the Rpi 5 rootfs.
  • Loaded firmware and board configuration files for the MM6108-MF08651-US module into Rpi 5 rootfs.
  • Created symbolic links for correct board type firmware.
  1. Device Tree Source Overlays (DTS) Setup:
  • Created device tree overlays for MM6108-MF08651-US module connected via SDIO on the GPIO pins.
  • Due to the new RP1 I/O peripheral, the Rpi 5 is able to have the on-chip WiFi interface (which is now connected directly to the Application Processor of the Rpi 5) as well as a HaLow interface.
  1. Morse Micro Userspace Software Setup:
  • Ensure that necessary dependencies like OpenSSL and libnl are available for cross-compilation.
  • For each utility (wpa_supplicant_s1g, hostapd_s1g, morse_cli), compile the programs with make and install the binaries in the target rootfs.

Bringing Up HaLow:

After compiling and setting up the Morse Micro driver, firmware, DTBOs and user-space software, the next step is to bring up the WiFi HaLow interface:

  1. Verify Installation:
  • Reboot the Rpi 5 and confirm the driver is registered and loading the kernel module parameters, firmware is loaded, and userspace tools are installed. The terminal command dmesg shows this.
  • If all is installed correctly, a new phy and associated network device (wlan1) should be registered with the kernel.
  1. Configuring the Interface:
  • Use ifconfig wlan1 up to bring the HaLow interface online.
  • Confirm that the HaLow interface (wlan1) can scan other HaLow networks using sudo iw dev wlan1 scan | grep SSID.
  1. STA Mode Setup:
  • Create a minimal wpa_supplicant.conf file and start wpa_supplicant_s1g to set up the Rpi 5 as a STA and connect to an AP.
  1. AP Mode Setup:
  • Create a minimal hostapd.conf file and start hostapd_s1g to set up the Rpi 5 as an AP.
  • Set up the AP as a DHCP server; Use the dnsmasq application to assign IP addresses to connected clients.

Final Outcome:

The WiFi HaLow interface is now fully functional on the Raspberry Pi 5, both as a station (STA) and as an access point (AP).

3 Likes

To simplify the setup process for integrating WiFi HaLow on the Raspberry Pi 5, I’ve compiled all necessary components into Debian (.deb) packages. This should make the installation process much smoother, without the need for manual compilation or configuration. Here’s what the .deb packages cover:

Included Debian Packages:

  1. Morse Micro Driver (morse.ko, dot11ah.ko)
  2. Firmware and Board Configuration Files
  3. Device Tree Overlays
  4. User-Space Utilities:
  • wpa_supplicant_s1g
  • hostapd_s1g
  • morse_cli

Patched Linux Kernel (with necessary S1G and cryptographic API support) not included as I did not test it on a fresh Rpi 5.

mm-driver_1.12.4-1.deb (2.9 MB)
mm-firmware_1.12.4-1.deb (202.2 KB)
mm-hostapd_1.12.4-1.deb (2.7 MB)
mm-wpa-supp_1.12.4-1.deb (1.1 MB)
mm-morsecli_1.12.4-1.deb (120.1 KB)
mm-overlays_1.12.4-1.deb (1.6 KB)

4 Likes

@live-love-laugh-wifi thanks for uploading these Debian packages! I’m interested in polishing these further and making them a bit more compatible across kernel versions.

It looks like the driver is targeting a kernel version (6.6.51-v8-16k+) different to the image from Raspberry Pi (RaspiOS Lite, 6.6.31). Can you share any steps you took to align the driver package you compiled and the kernel version?

That kernel version looks a lot like the default version if you check out the default rpi-6.6.y branch from https://github.com/raspberrypi/linux

The stable_20240529 tag seems to coincide with what the imager gives you if you flash a new SD card. (verifying that now)

Hi, first timer to this community but I have to say I love the idea / fact that you’re looking to get the Morse Micro HaLow Wi-Fi working with the Pi 5.

I have tried to follow along using the information above, however I’m unfortunately not having much luck.

Configuration
I am using Pi 5’s (8GB model) with the Morse Micro HaLow board (switched over from the Morse Micro Pi-4B EVK). I have the active cooler in place too.

Issue
When I try and install the various .deb packages through the terminal I am noticing that they appear to be failing. This may be because the first package that I’m trying to install keeps failing (the mm-driver_1.12.4-1.deb file). I’ve attached details below (had to copy the terminal text to a textfile given scrot doesn’t work properly on the Pi 5).

Method
I started with a fresh install of Bookworm (noting I tried the 64-bit lite version, 64-bit full version and 32-bit version), however I get the same issue with both 64-bit versions, and the 32-bit version fails because it identifies that it’s looking for 64-bit :slight_smile: .

  1. List item
  2. I downloaded the .deb packages into the Downloads folder.
  3. I attempted to install the first .deb package (mm-driver_1.12.4-1.deb) using the command sudo apt install ./mm-driver_1.12.4-1.deb and noticed errors.
  4. I attempted to remedy one of the 2 errors (couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)) by changing the file permissions and trying again (see below)
  5. Upon re-trying the sudo apt install ./mm-driver_1.12.4-1.deb I am still receiving an error that appears to be related to a post-installation of the driver.

Terminal Output
I have copied the output displayed within the terminal. I have inserted some blank lines to break up the output to make it a little easier to read.

pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME=“Debian GNU/Linux 12 (bookworm)”
NAME=“Debian GNU/Linux”
VERSION_ID=“12”
VERSION=“12 (bookworm)”
VERSION_CODENAME=bookworm
ID=debian
HOME_URL=“https://www.debian.org/”
SUPPORT_URL=“Debian -- User Support”
BUG_REPORT_URL= <had to chop this one out as the community system, doesn’t let me include more than 2 links>

pi@raspberrypi:~ $ uname -m
aarch64

pi@raspberrypi:~ $ cd Downloads
pi@raspberrypi:~/Downloads $ ls -l
total 7208
-rw-r–r-- 1 pi pi 3025368 Oct 19 09:38 mm-driver_1.12.4-1.deb
-rw-r–r-- 1 pi pi 207096 Oct 19 09:38 mm-firmware_1.12.4-1.deb
-rw-r–r-- 1 pi pi 2838552 Oct 19 09:38 mm-hostapd_1.12.4-1.deb
-rw-r–r-- 1 pi pi 123010 Oct 19 09:38 mm-morsecli_1.12.4-1.deb
-rw-r–r-- 1 pi pi 1640 Oct 19 09:39 mm-overlays_1.12.4-1.deb
-rw-r–r-- 1 pi pi 1168164 Oct 19 09:38 mm-wpa-supp_1.12.4-1.deb

pi@raspberrypi:~/Downloads $ sudo apt install ./mm-driver_1.12.4-1.deb
Reading package lists
 Done
Building dependency tree
 Done
Reading state information
 Done
Note, selecting ‘mm-driver’ instead of ‘./mm-driver_1.12.4-1.deb’
The following packages were automatically installed and are no longer required:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
Use ‘sudo apt autoremove’ to remove them.
The following NEW packages will be installed:
mm-driver
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/3,025 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 /home/pi/Downloads/mm-driver_1.12.4-1.deb mm-driver arm64 1.12.4-1 [3,025 kB]
Selecting previously unselected package mm-driver.
(Reading database 
 247966 files and directories currently installed.)
Preparing to unpack 
/mm-driver_1.12.4-1.deb 

Unpacking mm-driver (1.12.4-1) 

Setting up mm-driver (1.12.4-1) 

mv: cannot move ‘/lib/modules/placeholder/extra’ to ‘/lib/modules/6.6.51+rpt-rpi-2712/extra’: Directory not empty
dpkg: error processing package mm-driver (–configure):
installed mm-driver package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
mm-driver
N: Download is performed unsandboxed as root as file ‘/home/pi/Downloads/mm-driver_1.12.4-1.deb’ couldn’t be accessed by user ‘_apt’. - pkgAcquire::Run (13: Permission denied)
E: Sub-process /usr/bin/dpkg returned an error code (1)
pi@raspberrypi:~/Downloads $ ^C
pi@raspberrypi:~/Downloads $

pi@raspberrypi:~/Downloads $ sudo chown -Rv _apt:root /home/pi/Downloads/
changed ownership of ‘/home/pi/Downloads/mm-driver_1.12.4-1.deb’ from pi:pi to _apt:root
changed ownership of ‘/home/pi/Downloads/mm-wpa-supp_1.12.4-1.deb’ from pi:pi to _apt:root
changed ownership of ‘/home/pi/Downloads/mm-morsecli_1.12.4-1.deb’ from pi:pi to _apt:root
changed ownership of ‘/home/pi/Downloads/mm-firmware_1.12.4-1.deb’ from pi:pi to _apt:root
changed ownership of ‘/home/pi/Downloads/mm-hostapd_1.12.4-1.deb’ from pi:pi to _apt:root
changed ownership of ‘/home/pi/Downloads/mm-overlays_1.12.4-1.deb’ from pi:pi to _apt:root
changed ownership of ‘/home/pi/Downloads/’ from pi:pi to _apt:root

pi@raspberrypi:~/Downloads $ sudo chmod -Rv 700 /home/pi/Downloads/
mode of ‘/home/pi/Downloads/’ changed from 0755 (rwxr-xr-x) to 0700 (rwx------)
mode of ‘/home/pi/Downloads/mm-driver_1.12.4-1.deb’ changed from 0644 (rw-r–r–) to 0700 (rwx------)
mode of ‘/home/pi/Downloads/mm-wpa-supp_1.12.4-1.deb’ changed from 0644 (rw-r–r–) to 0700 (rwx------)
mode of ‘/home/pi/Downloads/mm-morsecli_1.12.4-1.deb’ changed from 0644 (rw-r–r–) to 0700 (rwx------)
mode of ‘/home/pi/Downloads/mm-firmware_1.12.4-1.deb’ changed from 0644 (rw-r–r–) to 0700 (rwx------)
mode of ‘/home/pi/Downloads/mm-hostapd_1.12.4-1.deb’ changed from 0644 (rw-r–r–) to 0700 (rwx------)
mode of ‘/home/pi/Downloads/mm-overlays_1.12.4-1.deb’ changed from 0644 (rw-r–r–) to 0700 (rwx------)

pi@raspberrypi:~/Downloads $ sudo apt install ./mm-driver_1.12.4-1.deb
Reading package lists
 Done
Building dependency tree
 Done
Reading state information
 Done
Note, selecting ‘mm-driver’ instead of ‘./mm-driver_1.12.4-1.deb’
mm-driver is already the newest version (1.12.4-1).
The following packages were automatically installed and are no longer required:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
Use ‘sudo apt autoremove’ to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up mm-driver (1.12.4-1) 

mv: cannot move ‘/lib/modules/placeholder/extra’ to ‘/lib/modules/6.6.51+rpt-rpi-2712/extra’: Directory not empty
dpkg: error processing package mm-driver (–configure):
installed mm-driver package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
mm-driver
E: Sub-process /usr/bin/dpkg returned an error code (1)
pi@raspberrypi:~/Downloads $ ^C
pi@raspberrypi:~/Downloads $

Summary
I was wondering what I may be doing wrong? Any guidance would be greatly appreciated as I am super keen to try and get this working. Thanking all community members in advance for any feedback.

Cheers, James.

1 Like

I built these debian packages around a custom kernel I had built late September. I’ve retargeted the debian packages for the kernel in the release available for download on the raspberry pi website, and packaged the patched mac80211 as mm-mac80211_6.6.31-rpt-rpi-2712-1.12.4.deb and updated the driver and overlays to fix some small bugs.

# Flash 2024-07-04-raspios-bookworm-arm64-lite.img.xz from https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-07-04/2024-07-04-raspios-bookworm-arm64-lite.img.xz

# Configure ssh and your user information.
# Create empty ssh file and a userconf file in boot partition

sudo apt install libnl-3-dev libnl-genl-3-dev libnl-route-3-dev
sudo dpkg -i /tmp/mm-hostapd_1.12.4-1.deb
sudo dpkg -i /tmp/mm-wpa-supp_1.12.4-1.deb
sudo dpkg -i /tmp/mm-morsecli_1.12.4-1.deb
sudo dpkg -i /tmp/mm-firmware_1.12.4-1.deb
sudo dpkg -i /tmp/mm-mac80211_6.6.31-rpt-rpi-2712-1.12.4.deb
sudo dpkg -i /tmp/mm-driver_1.12.4-rpt-rpi-2712.deb
sudo dpkg -i /tmp/mm-overlays_1.12.4-2.deb

Note, mm-driver might result in an error when first installing. If this occurs, install all other packages first, reboot the Rpi 5 and then install the mm-driver again.

mm-overlays_1.12.4-2.deb (1.7 KB)
mm-driver_1.12.4-rpt-rpi-2712.deb (2.9 MB)
mm-mac80211_6.6.31-rpt-rpi-2712-1.12.4.deb (319.4 KB)
mm-wpa-supp_1.12.4-1.deb (1.1 MB)
mm-morsecli_1.12.4-1.deb (120.1 KB)
mm-hostapd_1.12.4-1.deb (2.7 MB)
mm-firmware_1.12.4-1.deb (202.2 KB)

2 Likes

Also a first time user here. Going to be running the morse card in a WisGate connect with a CM5 installed.

I’ll have to modify the dtbo probably to target the right pins in the mini-PCI-e bus on the WisGate.

I know that Morse is going to come out with 1.14 momentarily, and Raspberry Pi is going to change to Kernel 6.12. I do wonder if a 6.6 version of 1.4 could be compiled and made available in this venue.

Any way to get a build for kernel 74?

Hi @hammrind

The 1.14 driver was released on the GitHub late last week which has 6.6 kernel support.
We’ll have a kernel repository up as soon as possible (hopefully before the end of this week). To describe any necessary kernel patches!

Once the kernel repo is up there will be a more general announcement made about the recent releases.

Can you point me to the exact image you intend to use. My preference is that we would prepare a DKMS style package to enable installation of the driver on any kernel within the supported stable versions. But until that happens, building a deb package to target the exact kernel version and config you are using may help move you forward.

EDIT:
Unfortunately the kernel patch repo will be a little bit longer. It’s almost ready!

DKMS is the right answer. We are using the latest Raspberry Pi provided kernel which is:

Linux type4-1 6.6.74+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.74-1+rpt1 (2025-01-27) aarch64 GNU/Linux

On a CM5 platform. Should be pretty identical on a RPI5.

Hi @live-love-laugh-wifı ,

I’m working on bringing up the Morse Micro MM6108 module on a Raspberry Pi 5 via SDIO.
Here’s how I wired it:
XIAO-HaLow → Raspberry Pi 5 GPIO

D8 (SDIO_CLK) → GPIO 22 (Pin 15)
D7 (SDIO_CMD) → GPIO 23 (Pin 16)
D9 (SDIO_DAT0) → GPIO 24 (Pin 18)
D10 (SDIO_DAT1) → GPIO 25 (Pin 22)
D6 (SDIO_DAT2) → GPIO 26 (Pin 37) [optional]
D3 (SDIO_DAT3) → GPIO 27 (Pin 13) [optional]
D0 (HL_RESET) → GPIO 5 (Pin 29)
D1 (HL_WAKEUP) → GPIO 3 (Pin 5)
D2 (INT) → GPIO 7 (Pin 26) [optional]
D4 (BUSY) → GPIO 4 (Pin 7) [optional]
3V3 → 3.3V (Pin 1)
GND → GND (Pin 6)

:test_tube: Software:

  • OS: Raspberry Pi OS Bookworm Lite (64-bit, July 2024 image)
  • Kernel: 6.6.31+rpt-rpi-2712
  • Morse driver version: 0-rel_1_12_4_2024_Jun_11-6-g63cd0768

:stop_sign: Issue (SDIO):

  • dot11ah and morse kernel modules load successfully
  • mmc1:0001:1, :2, :3 devices appear under /sys/bus/sdio/devices/
  • But two of them bind to brcmfmac by default
  • Manual unbind from brcmfmac works, but bind to morse fails (No such file or directory)
  • No wlan1 interface ever appears

:pushpin: Questions:

  1. What’s the recommended way to ensure the Morse driver binds to the correct SDIO function?
  2. Can you share an example .dtbo overlay for MM6108-SDIO on Raspberry Pi 5?
  3. Is there a known issue with brcmfmac claiming the SDIO interface first?

:light_bulb: Bonus Question – SPI Mode:

If I can’t get SDIO mode working, I’m open to switching to SPI.
Can you please share:

  • A sample SPI overlay (.dtbo) for Raspberry Pi 5?
  • Required pin mappings for SPI operation?
  • Any changes needed in the morse driver config for SPI backend?

Thanks in advance

I was able to get the 1.12.4 drivers working with the raspberry pi cm5 with the deb files from live-love-laugh-wifi and using the older os image. What I am having issue is joining a mesh.

From the DMESG it looks like the interface is good, I have it in US mode, setup the WPA Supplicant with the WPA3 settings from my other Heltec HT-HD01 devices that have an existing mesh setup.

I am using the Morse Micro hat off the Dev Kit that came with a Pi4.

Did the 1.12 have known limitations on joining the mesh, if so has anyone updated the drivers to the 1.15.3 thats now available?

This should work. Can you turn on the wpa_supplicant_s1g debug logs and see what’s happening when it tries to join the mesh?

Here is a small run from it trying to connect to another Heltec dongle running 11S Mesh. The dongle is running the latest firmware, it looks like it skips it because its not seeing it as a Mesh network, though it is.

sudo wpa_supplicant_s1g -i wlan1 -c /etc/wpa_supplicant/wpa_supplicant_s1g.conf -d
wpa_supplicant v2.11-devel-1.12.4
random: Trying to read entropy from /dev/random
Successfully initialized wpa_supplicant
Initializing interface ‘wlan1’ conf ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’ driver ‘default’ ctrl_interface ‘N/A’ bridge ‘N/A’
Configuration file ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’ → ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’
Reading configuration file ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’
country=‘US’
ctrl_interface=‘/var/run/wpa_supplicant_s1g’
sae_pwe=1
Priority group 0
id=0 ssid=‘vast’
nl80211: Supported cipher 00-0f-ac:1
nl80211: Supported cipher 00-0f-ac:5
nl80211: Supported cipher 00-0f-ac:2
nl80211: Supported cipher 00-0f-ac:4
nl80211: Supported cipher 00-0f-ac:10
nl80211: Supported cipher 00-0f-ac:8
nl80211: Supported cipher 00-0f-ac:9
nl80211: Supported cipher 00-0f-ac:6
nl80211: Supported cipher 00-0f-ac:13
nl80211: Supported cipher 00-0f-ac:11
nl80211: Supported cipher 00-0f-ac:12
nl80211: Supports Probe Response offload in AP mode
nl80211: Using driver-based off-channel TX
nl80211: Driver-advertised extended capabilities (default) - hexdump(len=8): 00 00 40 00 00 00 00 40
nl80211: Driver-advertised extended capabilities mask (default) - hexdump(len=8): 00 00 40 00 00 00 00 40
nl80211: Supported vendor command: vendor_id=0xcbf74 subcmd=0
nl80211: Supported vendor event: vendor_id=0xcbf74 subcmd=0
nl80211: Supported vendor event: vendor_id=0xcbf74 subcmd=1
nl80211: Supported vendor event: vendor_id=0xcbf74 subcmd=2
nl80211: Supported vendor event: vendor_id=0xcbf74 subcmd=3
nl80211: key_mgmt=0x1ff0f enc=0xfef auth=0x7 flags=0x4800531db63d1e0 flags2=0x103 rrm_flags=0x38 probe_resp_offloads=0x7 max_stations=0 max_remain_on_chan=5000 max_scan_ssids=1
nl80211: interface wlan1 in phy phy1
nl80211: Set mode ifindex 5 iftype 7 (MESH_POINT)
nl80211: Subscribe to mgmt frames with mesh handle 0x55562556adb0
nl80211: Register frame type=0xb0 (WLAN_FC_STYPE_AUTH) nl_handle=0x55562556adb0 match= multicast=0
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x55562556adb0 match=0f01 multicast=0
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x55562556adb0 match=0f02 multicast=0
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x55562556adb0 match=0f03 multicast=0
rfkill: initial event: idx=2 type=1 op=0 soft=0 hard=0
netlink: Operstate: ifindex=5 linkmode=1 (userspace-control), operstate=5 (IF_OPER_DORMANT)
Add interface wlan1 to a new radio phy1
nl80211: Mode IEEE 802.11ah: 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 1 3 37 39 41 43 45 47 49 51 6 10 14 18 22 26 30 34 2 38 42 46 50 8 16 24 32 40 48 12 28 44
wlan1: Own MAC address: 0c:bf:74:00:08:a7
wpa_driver_nl80211_set_key: ifindex=5 (wlan1) alg=0 addr=(nil) key_idx=0 set_tx=0 seq_len=0 key_len=0 key_flag=0x10 link_id=-1
nl80211: DEL_KEY
broadcast key
wpa_driver_nl80211_set_key: ifindex=5 (wlan1) alg=0 addr=(nil) key_idx=1 set_tx=0 seq_len=0 key_len=0 key_flag=0x10 link_id=-1
nl80211: DEL_KEY
broadcast key
wpa_driver_nl80211_set_key: ifindex=5 (wlan1) alg=0 addr=(nil) key_idx=2 set_tx=0 seq_len=0 key_len=0 key_flag=0x10 link_id=-1
nl80211: DEL_KEY
broadcast key
wpa_driver_nl80211_set_key: ifindex=5 (wlan1) alg=0 addr=(nil) key_idx=3 set_tx=0 seq_len=0 key_len=0 key_flag=0x10 link_id=-1
nl80211: DEL_KEY
broadcast key
wpa_driver_nl80211_set_key: ifindex=5 (wlan1) alg=0 addr=(nil) key_idx=4 set_tx=0 seq_len=0 key_len=0 key_flag=0x10 link_id=-1
nl80211: DEL_KEY
broadcast key
wpa_driver_nl80211_set_key: ifindex=5 (wlan1) alg=0 addr=(nil) key_idx=5 set_tx=0 seq_len=0 key_len=0 key_flag=0x10 link_id=-1
nl80211: DEL_KEY
broadcast key
wlan1: RSN: flushing PMKID list in the driver
nl80211: Flush PMKIDs
wlan1: Setting scan request: 0.100000 sec
TDLS: TDLS operation not supported by driver
TDLS: Driver uses internal link setup
TDLS: Driver does not support TDLS channel switching
wlan1: WPS: UUID based on MAC address: 6641d6a6-eb54-5a27-b867-fd71e2dc8495
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: Supplicant port status: Unauthorized
nl80211: Skip set_supp_port(unauthorized) while not associated
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
wlan1: Added interface wlan1
wlan1: State: DISCONNECTED → DISCONNECTED
nl80211: Set wlan1 operstate 0->0 (DORMANT)
netlink: Operstate: ifindex=5 linkmode=-1 (no change), operstate=5 (IF_OPER_DORMANT)
morse: disable long sleep on ifname wlan1
morse: execute morse_cli -i wlan1 long_sleep disable
Long Sleep Mode: disabled
random: Got 20/20 bytes from /dev/random
RTM_NEWLINK: ifi_index=5 ifname=wlan1 operstate=2 linkmode=1 ifi_family=0 ifi_flags=0x1003 ([UP])
wlan1: State: DISCONNECTED → SCANNING
wlan1: Starting AP scan for wildcard SSID
wlan1: Add radio work ‘scan’@0x555625593c50
wlan1: First radio work item in the queue - schedule start immediately
wlan1: Starting radio work ‘scan’@0x555625593c50 after 0.000007 second wait
wlan1: nl80211: scan request
nl80211: Scan co-located APs on 6 GHz
Scan requested (ret=0) - scan timeout 10 seconds
nl80211: Drv Event 33 (NL80211_CMD_TRIGGER_SCAN) received for wlan1
wlan1: nl80211: Scan trigger
wlan1: Event SCAN_STARTED (47) received
wlan1: Own scan request started a scan in 0.000023 seconds
EAPOL: disable timer tick
nl80211: Drv Event 34 (NL80211_CMD_NEW_SCAN_RESULTS) received for wlan1
wlan1: nl80211: New scan results available
nl80211: Scan probed for SSID ‘’
nl80211: Scan included (5 GHz mapped) frequencies: 5180 5200 5220 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5745 5765 5785 5805 5825 5845 5865 5885 5190 5230 5270 5310 5510 5550 5590 5630 5670 5755 5795 5835 5875 5210 5290 5530 5610 5775 5855 5250 5570 5815
wlan1: Event SCAN_RESULTS (3) received
wlan1: Scan completed in 2.893310 seconds
nl80211: Received scan results (0 BSSes)
wlan1: BSS: Start scan result update 1
BSS: last_scan_res_used=0/0
wlan1: New scan results available (own=1 ext=0)
wlan1: Radio work ‘scan’@0x555625593c50 done in 2.893865 seconds
wlan1: radio_work_free(‘scan’@0x555625593c50): num_active_works → 0
wlan1: No suitable network found
wlan1: Setting scan request: 5.000000 sec
RTM_NEWLINK: ifi_index=5 ifname=wlan1 wext ifi_family=0 ifi_flags=0x1003 ([UP])
wlan1: Starting AP scan for wildcard SSID
wlan1: Determining shared radio frequencies (max len 1)
wlan1: Shared frequencies (len=0): completed iteration
wlan1: Add radio work ‘scan’@0x555625593dd0
wlan1: First radio work item in the queue - schedule start immediately
wlan1: Starting radio work ‘scan’@0x555625593dd0 after 0.000009 second wait
wlan1: nl80211: scan request
nl80211: Scan co-located APs on 6 GHz
Scan requested (ret=0) - scan timeout 30 seconds
nl80211: Drv Event 33 (NL80211_CMD_TRIGGER_SCAN) received for wlan1
wlan1: nl80211: Scan trigger
wlan1: Event SCAN_STARTED (47) received
wlan1: Own scan request started a scan in 0.000023 seconds
nl80211: Drv Event 34 (NL80211_CMD_NEW_SCAN_RESULTS) received for wlan1
wlan1: nl80211: New scan results available
nl80211: Scan probed for SSID ‘’
nl80211: Scan included (5 GHz mapped) frequencies: 5180 5200 5220 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5745 5765 5785 5805 5825 5845 5865 5885 5190 5230 5270 5310 5510 5550 5590 5630 5670 5755 5795 5835 5875 5210 5290 5530 5610 5775 5855 5250 5570 5815
wlan1: Event SCAN_RESULTS (3) received
wlan1: Scan completed in 2.894289 seconds
nl80211: Received scan results (0 BSSes)
wlan1: BSS: Start scan result update 2
BSS: last_scan_res_used=0/0
wlan1: New scan results available (own=1 ext=0)
wlan1: Radio work ‘scan’@0x555625593dd0 done in 2.894871 seconds
wlan1: radio_work_free(‘scan’@0x555625593dd0): num_active_works → 0
wlan1: No suitable network found
wlan1: Setting scan request: 5.000000 sec
RTM_NEWLINK: ifi_index=5 ifname=wlan1 wext ifi_family=0 ifi_flags=0x1003 ([UP])
wlan1: Starting AP scan for wildcard SSID
wlan1: Determining shared radio frequencies (max len 1)
wlan1: Shared frequencies (len=0): completed iteration
wlan1: Add radio work ‘scan’@0x555625593dd0
wlan1: First radio work item in the queue - schedule start immediately
wlan1: Starting radio work ‘scan’@0x555625593dd0 after 0.000009 second wait
wlan1: nl80211: scan request
nl80211: Scan co-located APs on 6 GHz
Scan requested (ret=0) - scan timeout 30 seconds
nl80211: Drv Event 33 (NL80211_CMD_TRIGGER_SCAN) received for wlan1
wlan1: nl80211: Scan trigger
wlan1: Event SCAN_STARTED (47) received
wlan1: Own scan request started a scan in 0.000023 seconds
nl80211: Drv Event 34 (NL80211_CMD_NEW_SCAN_RESULTS) received for wlan1
wlan1: nl80211: New scan results available
nl80211: Scan probed for SSID ‘’
nl80211: Scan included (5 GHz mapped) frequencies: 5180 5200 5220 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5745 5765 5785 5805 5825 5845 5865 5885 5190 5230 5270 5310 5510 5550 5590 5630 5670 5755 5795 5835 5875 5210 5290 5530 5610 5775 5855 5250 5570 5815
wlan1: Event SCAN_RESULTS (3) received
wlan1: Scan completed in 2.894329 seconds
nl80211: Received scan results (1 BSSes)
wlan1: BSS: Start scan result update 3
CAC random for 06:ab:ce:cf:20:9c set to 505
wlan1: BSS: Add new id 0 BSSID 06:ab:ce:cf:20:9c SSID ‘vast’ chan  5
BSS: last_scan_res_used=1/32
wlan1: New scan results available (own=1 ext=0)
wlan1: Radio work ‘scan’@0x555625593dd0 done in 2.894958 seconds
wlan1: radio_work_free(‘scan’@0x555625593dd0): num_active_works → 0
wlan1: Selecting BSS from priority group 0
wlan1: 0: 06:ab:ce:cf:20:9c ssid=‘vast’ wpa_ie_len=0 rsn_ie_len=20 caps=0x10 level=-16 chan=5
wlan1:    selected based on RSN IE
wlan1:    skip - not ESS, PBSS, or MBSS
wlan1: No suitable network found
wlan1: Setting scan request: 5.000000 sec
RTM_NEWLINK: ifi_index=5 ifname=wlan1 wext ifi_family=0 ifi_flags=0x1003 ([UP])
wlan1: Starting AP scan for wildcard SSID
wlan1: Determining shared radio frequencies (max len 1)
wlan1: Shared frequencies (len=0): completed iteration
wlan1: Add radio work ‘scan’@0x555625594380
wlan1: First radio work item in the queue - schedule start immediately
wlan1: Starting radio work ‘scan’@0x555625594380 after 0.000009 second wait
wlan1: nl80211: scan request
nl80211: Scan co-located APs on 6 GHz
Scan requested (ret=0) - scan timeout 30 seconds
nl80211: Drv Event 33 (NL80211_CMD_TRIGGER_SCAN) received for wlan1
wlan1: nl80211: Scan trigger
wlan1: Event SCAN_STARTED (47) received
wlan1: Own scan request started a scan in 0.000023 seconds
^Cwlan1: Removing interface wlan1
nl80211: Getting wowlan status
nl80211: Getting wowlan status failed
wlan1: Request to deauthenticate - bssid=00:00:00:00:00:00 pending_bssid=00:00:00:00:00:00 reason=3 (DEAUTH_LEAVING) state=SCANNING
TDLS: Tear down peers
nl80211: Data frame filter flags=0x0
wlan1: State: SCANNING → DISCONNECTED
nl80211: Set wlan1 operstate 0->0 (DORMANT)
netlink: Operstate: ifindex=5 linkmode=-1 (no change), operstate=5 (IF_OPER_DORMANT)
morse: disable long sleep on ifname wlan1
morse: execute morse_cli -i wlan1 long_sleep disable
Long Sleep Mode: disabled
EAPOL: External notification - portEnabled=0
EAPOL: External notification - portValid=0
QM: Clear all active DSCP policies
wlan1: CTRL-EVENT-DSCP-POLICY clear_all
wlan1: WPA: Clear old PMK and PTK
wlan1: BSS: Remove id 0 BSSID 06:ab:ce:cf:20:9c SSID ‘vast’ due to wpa_bss_flush
wlan1: Cancelling scan request
wlan1: Cancelling authentication timeout
Off-channel: Clear pending Action frame TX (pending_action_tx=(nil)
nl80211: Data frame filter flags=0x0
HS20: Delete all stored icons
Off-channel: Action frame sequence done notification: pending_action_tx=(nil) drv_offchan_tx=1 action_tx_wait_time=0 off_channel_freq=0 roc_waiting_drv_freq=0
QM: Clear all active DSCP policies
wlan1: CTRL-EVENT-DSCP-POLICY clear_all
Remove interface wlan1 from radio phy1
wlan1: Remove radio work ‘scan’@0x555625594380 (started)
wlan1: radio_work_free(‘scan’@0x555625594380): num_active_works → 0
Remove radio phy1
nl80211: deinit ifname=wlan1 disabled_11b_rates=0
nl80211: Remove monitor interface: refcount=0
netlink: Operstate: ifindex=5 linkmode=0 (kernel-control), operstate=6 (IF_OPER_UP)
nl80211: Unsubscribe mgmt frames handle 0x8888dddeadde2539 (deinit)
wlan1: CTRL-EVENT-TERMINATING

I manually had to set the wireless card on my Pi into mesh mode as, the WPA will not take mode=5 into it.
here is the super simple config file

country=US
ctrl_interface=/var/run/wpa_supplicant_s1g
sae_pwe=1

network={
	ssid=“vast”
	key_mgmt=SAE
	sae_password=“Password1!”
	pairwise=CCMP
	ieee80211w=2
}

Without having tried this myself, I suspect this is the problem. You’re in mesh mode, but wpa_supplicant doesn’t understand you’re in mesh mode and so the beacons/probe responses aren’t indicating MBSS. Can you explain more about what happens when you configure wpa_supplicant_s1g in mesh mode?

When I add mode=5 and some of the stuff I found on the example from gateworks, I get the following.

root@raspberrypi:/home/vast# sudo wpa_supplicant_s1g -i wlan1 -c /etc/wpa_supplicant/wpa_supplicant_s1g.conf -dwpa_supplicant v2.11-devel-1.12.4random: Trying to read entropy from /dev/randomSuccessfully initialized wpa_supplicantInitializing interface ‘wlan1’ conf ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’ driver ‘default’ ctrl_interface ‘N/A’ bridge ‘N/A’Configuration file ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’ → ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’Reading configuration file ‘/etc/wpa_supplicant/wpa_supplicant_s1g.conf’country=‘US’ctrl_interface=‘/var/run/wpa_supplicant_s1g’sae_pwe=1Line 5: unknown global field ‘max_peer_links=10’.Line 5: Invalid configuration line ‘max_peer_links=10’.Line 6: unknown global field ‘mesh_fwding=1’.Line 6: Invalid configuration line ‘mesh_fwding=1’.Line 10: too large mode (value=5 max_value=4)Line 10: failed to parse mode ‘5’.Line 17: unknown network field ‘mesh_rssi_threshold’.Line 18: failed to parse network block.Segmentation fault

The updated mesh config

country=US
ctrl_interface=/var/run/wpa_supplicant_s1g
sae_pwe=1

max_peer_links=10
mesh_fwding=1
network={
    ssid="vast"
    key_mgmt=SAE
    mode=5
    channel=5
    op_class=68
    sae_password="*****"
    pairwise=CCMP
    ieee80211w=2
    beacon_int=1000
    mesh_rssi_threshold=-85
}

This looks like you’ve compiled wpa_supplicant_s1g without mesh support (though obviously that should not be seg-faulting!). Make sure to enable CONFIG_MESH, or if using OpenWrt CONFIG_MORSE_WPA_SUPPLICANT_S1G_MESH_NETWORKING.

If you’re just copying old debs, I’m afraid you may have to figure out how to rebuild them appropriately.

Yes I was just using the deb files linked above. Was hoping to save some time and not have to compile the stuff myself. I will look into compiling it back in. This is just a straight raspian based os.

Thanks for looking into it.