Skip to main content
Associate II
July 1, 2025
Solved

How to increase LPAWUR range

  • July 1, 2025
  • 2 replies
  • 636 views

Hello :)

 

I am developing an application using a pair of NUCLEO-WL33CC1. I am testing the LPAWUR, using the LPAWUR_WakeupRadio_Rx and MRSUBG_WakeupRadio_Tx examples as a starting point. The examples work fine, but the range is very short, only about 0.3 m. How can I increase my range? I am able to achieve 50m+ when sending my normal radio telemetry, just the LPAWUR range is very short. This makes me believe the antenna and hardware TX path is fine, and it is a configuration issue with LPAWUR. Can anyone reccomend some changes to the following code? I tried enabling the AGC which had no positive effect. Here is my init function for LPAWUR:

static void MX_LPAWUR_Init(void)
{

/* USER CODE BEGIN LPAWUR_Init 0 */

/* USER CODE END LPAWUR_Init 0 */

/* USER CODE BEGIN LPAWUR_Init 1 */

/* USER CODE END LPAWUR_Init 1 */

/** Initializes the RF Config
*/
LPAWUR_RadioInitStruct.EnergyDetectorIcal = ED_ICAL_VBAT_3_25_TO_3_50;
LPAWUR_RadioInitStruct.ClockDivider = 7;
LPAWUR_RadioInitStruct.EnergyDetectorSwitch = DISABLE;
LPAWUR_RadioInitStruct.AgcResetMode = AGC_RESET_MODE_NEVER;
LPAWUR_RadioInitStruct.AgcHoldMode = AGC_HOLD_AFTER_PREAMBLE;
LPAWUR_RadioInitStruct.AgcMode = AGC_MODE_OFF;
LPAWUR_RadioInitStruct.AgcHiLvl = AGC_VBAT_0800;
LPAWUR_RadioInitStruct.DCCurrentSubtraction = ENABLE;
LPAWUR_RadioInitStruct.AgcLoLvl = AGC_LOW_0;
HAL_LPAWUR_RFConfigInit(&LPAWUR_RadioInitStruct);

/** Initializes the Frame
*/
LPAWUR_FrameInitStruct.TRecAlgoSel = TWO_STEPS;
LPAWUR_FrameInitStruct.SlowClkCyclePerBitCnt = 16;
LPAWUR_FrameInitStruct.PayloadLength = 7;
LPAWUR_FrameInitStruct.SyncThr = 16;
LPAWUR_FrameInitStruct.SyncLength = 0;
LPAWUR_FrameInitStruct.PreambleThrCnt = 0x3C;
LPAWUR_FrameInitStruct.PreambleEnable = ENABLE;
LPAWUR_FrameInitStruct.FrameSyncCntTimeout = 0x60;
LPAWUR_FrameInitStruct.FrameSyncPattenHigh = 0x00;
LPAWUR_FrameInitStruct.FrameSyncPatternLow = 0x6969;
LPAWUR_FrameInitStruct.KpGain = 6;
LPAWUR_FrameInitStruct.KiGain = 10;
HAL_LPAWUR_FrameInit(&LPAWUR_FrameInitStruct);
LL_LPAWUR_SetState(ENABLE);
/* USER CODE BEGIN LPAWUR_Init 2 */

/* USER CODE END LPAWUR_Init 2 */

}

 

And here is my MRSUBG init function in the device I am using to wake my sleeping device

// Re-init the radio with the required LPAWUR configuration
LPAWUR_radio_wake_config.lFrequencyBase = 868000000;
LPAWUR_radio_wake_config.xModulationSelect = MOD_OOK;
LPAWUR_radio_wake_config.lDatarate = 2000;
LPAWUR_radio_wake_config.lFreqDev = 20000;
LPAWUR_radio_wake_config.lBandwidth = 50000;
LPAWUR_radio_wake_config.dsssExp = 0;
LPAWUR_radio_wake_config.outputPower = 14;
LPAWUR_radio_wake_config.PADrvMode = PA_DRV_TX_HP;
HAL_MRSubG_Init(&LPAWUR_radio_wake_config);

/** Configures the packet parameters
*/

LPAWUR_packet_settings.PreambleLength = 0;
LPAWUR_packet_settings.PostambleLength = 0;
LPAWUR_packet_settings.SyncLength = 0;
LPAWUR_packet_settings.SyncWord = 0x88888888;
LPAWUR_packet_settings.FixVarLength = FIXED;
LPAWUR_packet_settings.PreambleSequence = PRE_SEQ_0101;
LPAWUR_packet_settings.PostambleSequence = POST_SEQ_0101;
LPAWUR_packet_settings.CrcMode = PKT_NO_CRC;
LPAWUR_packet_settings.Coding = CODING_MANCHESTER;
LPAWUR_packet_settings.DataWhitening = DISABLE;
LPAWUR_packet_settings.LengthWidth = BYTE_LEN_1;
LPAWUR_packet_settings.SyncPresent = DISABLE;

Edited to apply source code formatting - please see How to insert source code for future reference.

Best answer by STTwo-32

Hello @angus123 

As you can see on the chapter 7.8.1 of the UM 3418:

"The LPAWUR can work on three different frequency bands. By
default, this feature is not connected to the antenna path. C3 is OFF". So, you have to connect the C3 according to the desired frequency range.

Best Regards.

STTwo-32

2 replies

Billy OWEN
ST Employee
July 2, 2025

Hi @angus123 

 

This post has been escalated to the ST Online Support Team for additional assistance.  We'll contact you directly.

 

Regards,

Billy

STTwo-32
STTwo-32Best answer
Technical Moderator
August 7, 2025

Hello @angus123 

As you can see on the chapter 7.8.1 of the UM 3418:

"The LPAWUR can work on three different frequency bands. By
default, this feature is not connected to the antenna path. C3 is OFF". So, you have to connect the C3 according to the desired frequency range.

Best Regards.

STTwo-32

Explorer II
September 18, 2025

Hello @STTwo-32 

I am running the same examples on a NUCLEO-WL33CC1 device as @angus123  and getting the same result of very small range of around 0.3meters. 
From studying the Readme.md for the demo, LPAWUR_WakeupRadio_Rx it mentions that "For the receiver part: since the RF path of LPAWUR is not connected to the SMA connector, to run this example is needed to solder a 0 Ohm resistor on C3. The matching network is assembled and is tuned for the band 826-958 MHz."
I have done that modification and found no change in the range. 

Under your answer for this issue you have mentioned changing C3 value to achieve one of the desired frequency bands. 
I have two questions,
1. Which is the correct approach to increase the range of the LPAWUR signals? soldering a 0 Ohm resister as mentioned in the demo readme file or changing the C3 value as you have mentioned here. If latter is the solution how are we expected to change the C3 values? are we supposed to replace the C3?
2. What is the expected range of a LPAWUR wake up signal by design? Is it meant to be short range (less than 3 meters) or is it practical to expect to increase the range to around 30 meters? What is the feasible maximum range for the LPAWUR wake up signal?

Thank you for your time. I look forward to hearing from you. 
Best Regards,
Ecospin


angus123Author
Associate II
September 18, 2025

See section 7.8.1 in the user manual https://www.st.com/resource/en/user_manual/um3418-stm32wl3x-nucleo64-boards-mb1801-and-mb2029-stmicroelectronics.pdf.

 

Range is meant to be short, LPAWUR is designed to be short range of at max 10m I have heard, but that is in a perfect test environment. I never got more than a metre or two.