I’m currently developping a system using the MM8108-EKH05 on the TX side and the MM8108-EKH19 on the RX side.
I’m having a hard time setting the transmission power to the maximum available (26dbm).
I am currently stuck at exactly 14 dBm (25 mW).
Here is my configuration:
Country Code: Set to "US" in config.hjson.
BCF: Set to bcf_mf15457.mbin and successfully flashed via OpenOCD/Python script.
Channel: 28 / 916 MHz.
Power Supply: USB-C 5V 3A.
Measurement: Mini-Circuit Power Sensor (50 - 6000 MHz).
I’v tried using mmwlan_override_max_tx_power(26); too but i’m getting the same result.
mmwlan_override_max_tx_power will only limit the TX power, it will never increase it past the default value in the regulatory database:
The US Max Tx EIRP (dBm) for all channels is 36, so setting 26 will actually be reducing the TX power. Can you try removing the override and measuring the power?
As an aside, mmwlan_override_max_tx_power should be called between app_wlan_init and app_wlan_start, rather than after app_wlan_start (see note in docs above)
The function is indeed called between init and start in my code :). However, even with the override removed completely, the TX power remains physically capped at 14 dBm on the power meter.
Is it possible that, since I purchased the eval kit in the EU, the maximum power is hardcoded/locked in the hardware for regulatory reasons, even though I configured the country code to US? Or should I be using a different BCF file than bcf_mf15457.mbin?
Weird, I must have gotten my wired crossed when reading the code
Assuming you updated the country code in the mmconfig (which should be the case if you are associating to a US based AP) there shouldn’t be any EU restrictions as far as I know.
Can you confirm how/where you are measuring the power? That should help with diagnosing on our side
Thanks for the clarification!
Regarding the measurement, I performed a conducted measurement: I connected the EKH05 directly via its SMA connector to a PWR-6LGHS USB Power Sensor (50 MHz - 6 GHz, -45 to +10 dBm) using a 20 dB attenuator to not fry the equipment. The reading consistently sits at exactly 14 dBm.
To confirm this wasn’t a measurement artifact, I also did some Line-of-Sight (LOS) tests outdoors (in a mostly openfield terrain). I completely lost the connection at ~250m, which seems logical with 14 dBm.
To address the mmconfig: yes, I did set “wlan.country_code”: “US” in my config.hjson and flashed it to the Config Store using the program-configstore.py tool.
Is there any other parameter that could clamp the PA hardware internally?
Hi,
Thanks for suggesting that sanity check.
Running a ping flood, the EKH19 is emitting between 20-22 dBm. Which is coherent with what iw dev wlan0 info is returning (txpower 20.00 dBm), altough when trying to set it with iw dev wlan0 set txpower fixed 2600 it doesn’t get changed.
However, my EKH05 remains strictly capped at 14 dBm.
{
/* You can specify a list of key/value strings in this section to write to config store */
/*this is equivalent to the write-string command */
"strings" : {
//"wlan.operating_mode": "AP",
"wlan.operating_mode": "STA",
/* The Wi-Fi SSID \*/
"wlan.ssid": "MM8108_EKH19",
//"wlan.ssid": "",
/* The Wi-Fi password, not required if wlan.security is open */
//"wlan.password": "EKH19_PW",
//"wlan.password": "",
/* The Wi-Fi security to use, valid values are sae, owe and open */
//"wlan.security": "sae",
"wlan.security": "open",
/* The 2 letter country code to ensure the correct regulatory domain is used */
"wlan.country_code": "US",
"wlan.channel": "28",
/* If true use DHCP, else the static IP configuration will be used */
"ip.dhcp_enabled": "false"
/* These settings are ignored if DHCP is used, but mandatory if using static IP */
"ip.address": "192.168.12.50",
"ip.netmask": "255.255.255.0",
"ip.gateway": "192.168.12.10",
//"ip.gateway": "255.255.255.255",
/* These settings are for IPv6, ip6.ip_addr is only required if ip6.autoconfig is */
"ip6.autoconfig": "true",
// "ip6.ip_addr": "FE80::2",
/* The following settings are required only for the udp_broadcast app */
/* Only used in "tx" mode. If set to zero packets will be sent forever. */
"udp_broadcast.packet_count": "10",
/* Only used in "tx" mode */
"udp_broadcast.packet_interval_ms": "1",
"udp_broadcast.port": "1337",
/* The udp broadcast mode, valid values are "tx" or "rx" */
"udp_broadcast.mode": "tx",
/* Used in "rx" mode to specify the device’s index into the received data array
(see the documentation in udp_broadcast.c) */
"udp_broadcast.id": "0"
},
"hex_strings" : {
},
"files" : {
"bcf_file": "$MMIOT_ROOT/morsefirmware/mm8108/bcfs/bcf_mf15457.mbin"
}
}