HaLow Support for EU Region

First off, I really appreciate the work Morse Micro is doing — there’s a growing community of builders excited about creating MANETs powered by HaLow, and your chips are at the center of that momentum.

I’ve been experimenting with the Wio-WM6180, but so far I’ve only been able to configure it for US region options. On a supplier site I noticed that the newer chip/Raspberry Pi hat lists EU frequency support, which is great news.

Chipset Morse Micro® MM6108
Frequency Range US:902-928 MHz
EU:863-865 MHz
JP:916.5-927.5 MHz
NZ/AU:915-928 MHz
(Initial release supports US band only. More regions coming soon.)

My question is: does that support already work today with the Raspberry Pi + HaLow build of OpenWRT, or is EU region support something that will be enabled in a future release?

Thanks again for pushing this tech forward — it’s inspiring a lot of us to build.

Hi @dataslayer: the MM6108 chip supports EU spectrum, but requires a different SAW filter on the module to get certified in various regions.

The Seeed Wio-WM6180 with Quectel’s 27dbm FGH100M-H module (with Morse Micro’s MM6108 inside) only supports North American / Australian spectrum, and won’t work on EU spectrum. Quectel has a different MM6108 module SKU for Europe, see FGH100MAAMD. The AsiaRF MM610X-H06-1 RPi hats are sold in different variants depending on the target region (US, EU, JP or NZ/AU), the module on each will be slightly different.

Note that the new MM8108 chip has an integrated 26dBm PA, so you will no longer require different modules for various regions going forward with that chip. See Wi-Fi HaLow® System-on-Chips - Morse Micro for the full comparison. Note that the MM8108 is not available yet to the general public, but rumour has it that it will be very soon… :wink:

PS: Love your Youtube video!! :clap:

2 Likes

Cant’ wait for the new chip and support for EU

1 Like

So the new AsiaRF EU variant chip is now on my desk and I’m running some of my favorite OpenWRT forks. So far things look promising, I see the morse chip, and it showed up on a scan from another Haven node (running US bands).

But my question is how would one generate a new OpenWRT image with all the back end configs tweaked for the EU bands as well as getting LUCI to show the proper front end options for the EU region?

root@asiarf:~# iw reg get
global
country 00: DFS-UNSET
        (755 - 928 @ 2), (N/A, 20), (N/A), PASSIVE-SCAN
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (2457 - 2482 @ 20), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
        (2474 - 2494 @ 20), (N/A, 20), (N/A), NO-OFDM, PASSIVE-SCAN
        (5170 - 5250 @ 80), (N/A, 20), (N/A), AUTO-BW
        (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, AUTO-BW, PASSIVE-SCAN
        (5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, PASSIVE-SCAN
        (5735 - 5835 @ 80), (N/A, 20), (N/A), PASSIVE-SCAN
        (57240 - 63720 @ 2160), (N/A, 0), (N/A)

phy#3 (self-managed)
country EU: DFS-invalid
        (863 - 865 @ 1), (N/A, 16), (N/A), AUTO-BW
        (865 - 868 @ 1), (N/A, 16), (N/A), AUTO-BW
        (5650 - 5690 @ 20), (N/A, 16), (N/A), AUTO-BW
        (5170 - 5230 @ 20), (N/A, 16), (N/A), AUTO-BW

Anyways for now I’m going to purchase a second so I can prove it works definitively.

Hi @dataslayer

If you are running our latest OpenWrt 2.9.3 version, please share the output of cat /sys/class/ieee80211/phy<N>/device/countries (replace phy<N> with the appropriate phy for the HaLow radio). The country available will be dictated by either the BCF provided by AsiaRF for that module, or any regions burnt into OTP by the module manufacturer (if any). You will be able to set the country code in uci as per what the module/BCF supports.

If you’re not using OpenWrt, the country code is easiest set with the country modparameter on insertion of the morse kernel module.

Hello, i m trying to set up a EU region nodes network. Heres my findings and struggles so far :

I’m trying to set up a mesh network using AsiaRF MM610X-H06 EU kits (with EU antennas 863-868 MHz) on Raspberry Pi 4 running OpenMANET 1.4.1 (OpenWrt 23.05.5, morse packages v1.15.3).

What works:

The BCF file (bcf_fgh100mhaamd.bin) correctly loads the EU regulatory domain. I can see the EU frequencies in iw reg get:

phy#6 (self-managed)
country EU: DFS-invalid
        (863 - 865 @ 1), (N/A, 16), (N/A), AUTO-BW
        (865 - 868 @ 1), (N/A, 16), (N/A), AUTO-BW

I also added EU channel entries to /usr/share/morse-regdb/channels.csv:

EU,1,1,1,68,863.5,1.0,1.0,Europe,14.0,False,100.0,0.0,0.0,1,32
EU,1,3,1,68,864.5,1.0,1.0,Europe,14.0,False,100.0,0.0,0.0,1,36
EU,1,5,1,68,865.5,1.0,1.0,Europe,14.0,False,100.0,0.0,0.0,1,40
EU,1,7,1,68,866.5,1.0,1.0,Europe,14.0,False,100.0,0.0,0.0,1,44
EU,1,9,1,68,867.5,1.0,1.0,Europe,14.0,False,100.0,0.0,0.0,1,48

The shell script _get_regulatory function correctly finds the EU channels and returns center_freq=865.5 for channel 5.

What doesn’t work:

When I configure the radio for EU:

uci set wireless.radio0.country='EU'
uci set wireless.radio0.channel='5'
uci set wireless.radio0.htmode='S1'

wpa_supplicant_s1g fails with:

Invalid S1G configuration of operating class, country code and channel
Unsupported mesh mode frequency: 0 MHz
wlan0: Failed to init mesh
wlan0: Could not join mesh

My analysis:

It appears that wpa_supplicant_s1g v2.12-morse_micro-1.15.3 has internal S1G channel tables that only contain US frequencies (902-928 MHz). Running strings on the binary shows no EU frequencies (863-868 MHz).

The channels.csv file is only read by the netifd shell scripts, but wpa_supplicant_s1g uses its own hardcoded tables for S1G channel validation.

My questions:

  1. Is there a version of wpa_supplicant_s1g compiled with EU S1G channel support?

  2. If not, is there a way to add EU channels to the wpa_supplicant source and recompile?

  3. Are there any patches or configuration options I’m missing?

I saw in another thread that someone got the AsiaRF EU variant working - I’d love to know how they configured the software side.

Thanks for any help!


Hardware: AsiaRF MM610X-H06 EU × 2, Raspberry Pi 4B
Software: OpenMANET 1.4.1, OpenWrt 23.05.5, morse packages 1.15.3
BCF: bcf_fgh100mhaamd.bin (contains .regdom_EU section)

the output is

root@eu1:/# ls /sys/class/ieee80211
phy6
root@eu1:/# cat /sys/class/ieee80211/phy6/device/countries
EU

I can get the radios to function on the EU bands but just not associate with each other.

I built OpenWRT using the AsiaRF patch repo.

Then swapped the bcf via

root@AsiaRF-6598:/# vi /etc/config/wireless

        option bcf 'arfhl_d1164_bcf_mf10220_au_v1.bin'     <-- replace with 'arfhl_d1164_bcf_mf10220_eu_v1.bin'

Then set the region via

iw reg set EU
uci set wireless.radio0.country='EU'
uci commit wireless
wifi reload

LuCi even looks somewhat agreeable, but again I cannot get two nodes to connect over halow.

Hey @HologramBlues

(Apologies for the late reply, I didn’t hit send!)

AsiaRF MM610X-H06 EU kits … BCF file (bcf_fgh100mhaamd.bin)

This likely won’t work for you. The AsiaRF module and the Quectel FGH100MHAAMD module are very different designs. If you did manage to bring this up, on the AsiaRF module you would likely see very very poor performance. You need to use a BCF suitable for the AsiaRF module (contact AsiaRF).

It appears that wpa_supplicant_s1g v2.12-morse_micro-1.15.3 has internal S1G channel tables that only contain US frequencies (902-928 MHz). Running strings on the binary shows no EU frequencies (863-868 MHz).

The channel limitation actually comes from the BCF. Whatever <1GHz channels in supplicant or hostap aren’t even used because (for compatibility with earlier kernel versions) the Morse Micro driver converts the 802.11ah channels to 802.11ac (5 GHz).

  1. Is there a version of wpa_supplicant_s1g compiled with EU S1G channel support?
  2. If not, is there a way to add EU channels to the wpa_supplicant source and recompile?
  3. Are there any patches or configuration options I’m missing?

wpa_supplicant_s1g will work with EU channels.

That all looks correct so far, including LuCI.

Earlier you mentioned the AP node was showing up on scans. Is it still doing that from the station side?

Hi I followed this thread and got two nodes working in as such I get the values shown as dataslayer showed in his post. But i do not get the two nodes seeing each other. Any hint?

Many thanks for any help!

R

What version of OpenWRT? I am thinking a newer build might solve some of this. Also I think they need old school STA/AP modes not 802.11s mesh.

It is openwrt 2.0-dev is what I used to compile the code. Tried to play around with several parameters, No luck!