Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and discuss STM32 wireless solutions and their implementation for running Bluetooth LE, Zigbee, LoRaWAN applications.
Most recent activity
High Packet Loss in IN865 Field Deployment (30–40%) with STM32WLE5CCU6 – Looking for Root Cause Analysis and Scalability Guidance Hello Community,We are currently facing a packet loss issue in our LoRaWAN deployment and would appreciate guidance from members who have experience with large-scale deployments, particularly in the IN865 region.System ConfigurationEnd Device MCU: STM32WLE5CCU6 LoRaWAN Version: 1.0.4 Device Class: Class A Message Type: Unconfirmed Uplinks ADR: Enabled Initial Data Rate: SF10 (ADR manages the final data rate) TX Power: TX_POWER_0 (ADR controlled) Payload Size: 1 Byte Uplink Interval: Every 30 Minutes Network Infrastructure Gateway: Milesight UG67 Network Server: ChirpStack Region: IN865 Channel ConfigurationThe following 8 uplink channels are configured: 865.2 MHz 865.6 MHz 865.8 MHz 866.1 MHz 866.3 MHz 866.5 MHz 866.7 MHz 866.9 MHz Deployment ScenarioWe currently have approximately 150 end devices deployed.Office TestingWhen
Hi, i have NUCLEO-L073RZ with shield I-NUCLEO-LRWAN1 SX1272.I want to activate it with ping pong code and it’s stuck and I don’t understand why.I can see that LD2 is blinking but PuTTY is empty, I also get this after running:
Hello,I am trying to obtain the old STM32CubeExpansion_LRWAN_V2.0.0 package (I-CUBE-LRWAN v2.0.0), but I can only find the current versions on the ST website.I specifically need version 2.0.0 for compatibility with an existing project based on the original LoRaWAN stack provided by ST.I have already checked:The current I-CUBE-LRWAN page on st.com STM32Cube repositories and mirrors on GitHub Archived documentation and release notesUnfortunately, I have not been able to locate the original archive (STM32CubeExpansion_LRWAN_V2.0.0.zip).Does anyone know:Where this version can still be downloaded? Whether ST keeps an archive of legacy expansion packages? If there is an official replacement package fully compatible with v2.0.0?Any help or archived download link would be greatly appreciated.Thank you.
On the STM32WL55, when using LoRa and non-continuous receive mode, the RX timeout triggers immediately, i.e. the value passed to Radio.Rx is ignored. This can be demonstrated using the SubGHz_Phy example on the NUCLEO-WL55JC and setting#define USE_MODEM_LORA 1 #define USE_MODEM_FSK 0and also#define TEST_MODE RADIO_RX and modifying the call to Radio.SetRxConfig: Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0, true, 0, 0, LORA_IQ_INVERSION_ON, false);i.e. setting the last parameter to false such that continuous mode is disabled. The OnRxTimeout function will be called very quickly, even though the timeout is set to 2s. The red LED will flash very quickly. (No transmitter is present, just listening to "silence").Timeouts work fine on FSK RX in non-continuous mode (red LED flashes slowly).Strangely, when first setting the modem to LoRa TX and transmittin
After a long time, i started to look into using the BLE_Thread_dynamic stack image on WB55 again. First without success with my own code on my own board, which I do think to remember worked before.But afterwards with the BLE_Thread_dyn example on a WB55 Nucleo Board and that doesn't work as well. This is how the FUS Info looksAnd this is where it gets stuck Any Ideas what I might be doing wrong?I already tested with and without "Start Wireless Stack" from the programmer. Not using it, makes it stop even earlier, at hci_reset.Starting to look into older stack images now.Edit: I went back up to 1.18 (using the example code from 1.24, which seems to be untouched since way back) and nothing worked :thinking_face:.
Hello everyone,I have encountered an issue with the STM32WB05KZ on a custom board which only allows me to flash the board under very specific conditions. The first time out of the box, everything works fine, I can flash using a ST-LINK V3-PWR straight from CUBEIDE V1.18.0. After this first time programming, the board becomes fully unresponsive to the debugger. My code does seem to run (verified by two LEDs connected to PB4 and PB5). When using STM32CubeProgrammer, the system reports that it's unable to read the Chip ID. After much trial and error, I've found that by disconnecting the reset pin from the debugger and pressing the Close Debug button in the Debug Authentication (which I haven't enabled anywhere) menu, I can connect to the board through the STMCubeProgrammer software. I was wondering if this behaviour is to be expected, because I can't find it in the Reference manual or Datasheet. And if this behaviour can be disabled. For context:- The board has a 32 MHz crystal and a
Hi,I modified the BLE_HeartRate example for Nucleo-WBA25CE1 by adding another channel - IN8 - to read the voltage of a solar panel. The input is between 0V and 3V because i use the divider. In CubeMX I added an additional channel IN8 and generated the code. In the code I define the handle for ADCCTRL:ADCCTRL_Handle_t LLVoltageRequest_Handle ={ .Uid = 0x00, .State = ADCCTRL_HANDLE_NOT_REG, .InitConf = { .ConvParams = { .TriggerFrequencyMode = LL_ADC_TRIGGER_FREQ_LOW, .Resolution = LL_ADC_RESOLUTION_12B, .DataAlign = LL_ADC_DATA_ALIGN_RIGHT, .TriggerStart = LL_ADC_REG_TRIG_SOFTWARE, .TriggerEdge = LL_ADC_REG_TRIG_EXT_RISING, .ConversionMode = LL_ADC_REG_CONV_SINGLE, .DmaTransfer = LL_ADC_REG_DMA_TRANSFER_NONE, .Overrun = LL_ADC_REG_OVR_DATA_OVERWRITTEN, .SamplingTimeCommon1 = LL_ADC_SAMPLINGTIME_814CYCLES_5, .SamplingTimeCommon2 = LL_ADC_SAMPLINGTIME_1CYCLE_5 }, .SeqParams = { .Setup = LL_ADC_REG_SEQ_CONFIGURABLE,
I’m trying to update thestm32WB55 - nucleo Version (MB1355C) SWD stm32wb5x_FUS_fw_for_fus_0_5_3.bin -- latest from STM32CubeWB-1.24.0But it keeps failing every-time i do it. StepsStart FUS check the wireless stack try and flash the first bin fileIt just doesn’t seem to want to work?Error: FUS_STATE_IMG_NOT_AUTHENTIC: It works on the USB sticks when i flash it this way. So i don’t know what it’s doing wrong? Or are these bin files only for the USB stick?
Reposting due to last topic vanishing during migration.I have an project running great on a STM32WB05 nucleo platform. I have built my own custom board and everything works great until it starts to advertise and then it reboots.. I have double checked everything on the board and it matches the reference design. I am using the internal SMPS and running on a bench supply currently at 3.3V limited at 300mALooked at a bunch of things but really cant understand the issue. If i stop it advertising (change nothing else) then it starts up perfectly and runs. Other symptoms/infoBoard is drawing 7mA which seems high for idle (no low power mode enabled yet). I had 4 boards made. One worked briefly on the PSU. I then used a coin cell and it starting failing on that. Now doesnt work on PSU.Any sensible ideas welcome especially from anyone who has seen this. In many years of BLE development, i havent
I have been working with the single core LoRaWAN_End_Node example application on a B-WL5M-SUBG1 board with good success. With STM32CubeMx v6.16.0, WL Firmware 1.4.0, I see a current draw of under 2uA between transmissions.Last week I upgraded STM32CubeMx to v6.17.0 which in turn upgraded the WL Firmware to 1.5.0, changed the end node example to use the LBM library rather than the LmHandler for managing the radio, and changed the example application name to LoRaWAN_End_Node_LBM. The application functionality is good but the power consumption jumped to around 80uA between transmissions.In both cases I configured pullups in the USART2 pins (PA2, PA3).I can alternate between these two versions of the application on the same board and the results are very consistent.Has anyone else seen this and does anyone have any suggestions?
I’ve followed the instructions for the STM32WB55 as a BLE sniffer, but I cannot get the st_ble_sniffer.py script to recognize my device as a BLE sniffer for usage in wireshark. Is this supported at all? Or are slight modifications required to make this work? As far as I can the tell the --extcap-interfaces should list all capable interfaces, but even the output example here does not list any example. The current result is that there is no entry in wireshark to use the STM as a sniffer.I’ve already tried updating the internal device.pid to 14163 instead of 14155 to account for the updated integrated ST-LINKv3
When I connected an original board with STM32WBA5MM chip mounted to an STM32Cube Prog via ST-LINK, the message DEV_UNKNOWN_MCU_TARGET was output. Checking the JTAG signals, the DP_DPIDR output was 0x0BE11477. This code is described in the reference manual (RM0493) as not being implemented. What is happening?
Hi, I have a custom board with a STM32WB55RG and I’m trying to upgrade the Wireless stack (and the FUS firmware). When I perform a Read FUS Infos in STM32CubeProgrammer, it returns v0.0.0 value for the FUS Version (I know that it should be v1.2.0 as it used to be v1.2.0). If I read the memory at address 0x20030000 I have the following value: where DeviceInfoTable seems valid, the Wireless stack version is1.15.0 build 3 and FUS version is 1.2.0 SFSA value is 0xce (address: 0x080ce000) Any ideas why I see this value (v0.0.0) when I read the FUS infos? Moreover, when I try to update the wireless stack (or the FUS firmware), everything looks to go well but when I read back the FUS infos they are still the old values.
Hello ST team,I am using a P-NUCLEO-LRWAN3 starter kit with the NUCLEO-F746ZG gateway board.I accidentally overwrote the original gateway firmware on the F746ZG. I have already recovered the board so that it can be connected and programmed again with STM32CubeProgrammer, but I no longer have the original gateway firmware binary.I tried flashing another gateway binary:st-nucleo-lora-gw-at-fw-v2.1.7-eu868-TTN.binThe firmware runs, but it is clearly not the correct one for my hardware. After flashing it, the serial output shows EU868 / TTN settings and reports:router.eu.thethings.networkuplink/downlink port 1700channels around 867–868 MHzERROR: Radio A frequency and type are not matchedERROR: Radio B frequency and type are not matchedBefore I overwrote the original firmware, the gateway output was different. The original serial output showed:VERSION: 2.1.7, Nov 6 2018LORAWAN SERVER: ap1.loriot.iouplink/downlink port 1780channels from 471500000 to 472900000So I believe the original firmwar
I am using the STM32WB5MMG processor with SDK version 1.20.0. The basic operation involves periodically reading sensor data in response to interrupts generated by the sensor, and then transmitting this data via BLE. To reduce power consumption, we are utilizing low-power mode. With this setup, the overall functionality worked well.However, when we tried to further reduce power consumption by changing CFG_DEBUGGER_SUPPORTED = 0, the device no longer seems to recognize interrupts from the sensor. Of course, reverting CFG_DEBUGGER_SUPPORTED = 1 resolves the issue, and the device operates without problems.Have there been any reported instances of this kind of behavior? I'd appreciate any information you can provide regarding what to check or if there are any known solutions.Best regards,
Hello Community,I am working on a custom board using the STM32 MCU (STM32WLE5JCI6). I am configuring the ADC with two channels:PB1 → ADC_IN5PB3 → ADC_IN2I performed the following test cases and observed unexpected ADC behavior.Test Case 1Applied VDD+ to Channel 2 (ADC_IN2)Channel 5 (ADC_IN5) connected to GNDObservation:Both ADC channels are reading 4095, even though Channel 5 is tied to GND.Test Case 2Applied VDD+ to Channel 5 (ADC_IN5)Observation:Instead of getting 4095 on Channel 5, both channels are reading approximately 1500.I am also facing the same issue with another MCU: STM32L071KBT6TR.Development tools being used:STM32CubeIDE Version 2.1.0STM32CubeMX Version 6.8.0I have attached the main source file containing the ADC configuration for reference.Could anyone please help identify what might be causing this issue?Awaiting your valuable suggestions.Thanks.
Hi everyone,I am encountering a HCI_HARDWARE_ERROR_EVENT with code 0x02 (BlueCore time overrun error) on STM32WB devices.Key observations:Issue is observed only on some units, while others operate normallyAll devices use the same firmware, BLE stack, and FUS versionsAffected units show unstable BLE behavior (disconnects or degraded performance)Validation performed:Tested with STM32 reference example (BLE_p2pServer)The issue is still reproduciblePCB layout and hardware design have been reviewed and validatedNo application-specific changes involved during testingQuestions:Root causeWhat typically triggers a BlueCore time overrun at the controller level?Does this point more toward hardware timing issues (clock accuracy, RF timing), or internal controller or stack conditions?Unit variationHas anyone observed this error occurring only on a subset of devices?Could this be related to component tolerances (HSE or LSE oscillator, RF matching network, power stability, etc.)?Failure diagnosisWhat
We are a bachelor project group developing a BLE Direction Finding handheld "tracking compass" using AoA on STM32WB09 devices.We have reached a stage where BLE communication, CTE reception, antenna switching, and IQ report generation all appear functional, but the resulting IQ data seems physically incorrect and causes unstable angle estimation.We would appreciate suggestions on possible RF or IQ-processing issues we may have overlooked. Environment:MCU:PCB1) STM32WB09KE (Compass)PCB1) STM32F446RE as processing unitPCB2) STM32WB09KE (Tracking Tag)STM32CubeIDE Version: 2.1.0Toolchain / IDE: STM32CubeIDE. In this page, ST provides a .zip folder containing existing application projects that STM32WB0-series users can import, edit, and build directly. Version: 1.4.0. Project used as basis: BLE_DirectionFinding_Central_Locator. Most of the edits done was through the .ioc file, app_ble.c, app_entry and gatt_client_app.c. We can provide these files later if necessary.The ap
Hi, I'm searching for the best Rx sniff mode as suggested in AN6362: I'm able to use carrier sense (RSSI_THR, CS_F interrupt) and SQI (SQI_THR, SYNC_VALID_F interrupt) but PQI never works.The MCU is in WFI state, sequencer not used.I have changed the value of PQI_THR but PQI_INFO is always zero and the PREAMBLE_VALID_F interrupt is always received a few microseconds after CS_F interrupt.Thank you in advance!
MCU : STM32WLE5CCU6STM32CubeIde version : 2.1.1STMC32CubeMx version : 6.17.0Firmware Package Name and Version : STM32Cube FW_WL V1.5.0Application : FUOTA using LoRaWANSetup : End Node(STM32WL) <===> Gateway(Dragino LPS8) <====> TTNHello everyone,Before i step into complicated FUOTA using LoRaWAN, i was trying some custom downlink packets to switch to Class C from Class A.I was successfully able to send uplink packets.I was successfully able to get the downlink packets both confirmed and unconfirmed and glow led's and perform operations.Now i want to send a downlink packet which switches to class c.I have not enabled Additional LoRaWAN packages yet, i figured switching to class c might really don't need this as long as i am calling the correct API'sBasically if i send a downlink packet 0x01 from TTN, the device switches to Class C.For switching to Class C, I am using `smtc_modem_set_class(STACK_ID, SMTC_MODEM_CLASS_C)` which itself doesn't return any erro
Hardware: STM32 NUCLEO-WB15CC (STM32WB15CCUX) RTOS: FreeRTOS BLE stack: STM32WB WPAN / BLE via CPU2 (M0+) Hi, When writing a small configuration block (~48 bytes) to the internal Flash from CPU1 (M4 FreeRTOS task), the BLE connection drops immediately. The disconnect event is received on the host side with no prior warning, and the firmware logs a HCI_DISCONNECTION_COMPLETE_EVT shortly after the Flash erase/write sequence begins. The Flash region used is a dedicated 2 KB NVM page at address 0x0801B000 (defined in the linker script as FLASH_NVM): FLASH_NVM (rx) : ORIGIN = 0x0801B000, LENGTH = 2K --- Data Written --- The payload written is 48 bytes (already 8-byte aligned), structured as: [magic: uint32_t (4 B)] [Config_t (40 B)] [checksum: uint32_t (4 B)] The Config_t struct: typedef struct { uint16_t volume_shown; uint16_t client_timeout_ms; uint16_t cup_detection_threshold; uint16_t flow_timeout_forward_ms; uint16_t flow_timeout_backward_ms; uin
Hi, I'm using the STM32WBA54KG microcontroller to comunicate by BLE. In STM32CubeMX (v6.13.0), I have actived the STM32_WPAN packet and the configuration "USE_TEMPERATURE_BASED_RADIO_CALIBRATION" is "YES".I need to read the Vcore channel to know if the battery is low. How can I do it? Thanks.
Environment:MCU: STM32WB09KE, Cortex-M0+Board: NUCLEO-WB09KEIDE: STM32CubeIDE 2.1.0STM32CubeIDE Build: 27993_20260219_1630 (UTC)STM32CubeMX Version: 6.17.0OS: Windows 11 HomeFirmware package: STM32Cube_FW_WB0_V1.4.0Example project used: BLE_DirectionFinding_Central_LocatorSetup:I am using the STM32WB09 Direction Finding example project on the NUCLEO-WB09KE board.The project is based on ST’s provided STM32CubeWB0 package and the NUCLEO-WB09KE board files available here: https://www.st.com/en/evaluation-tools/nucleo-wb09ke.html#cad-resources The goal is to use two GPIO pins as antenna-switching control signals for AoA direction finding:RADIO_ANTENNA_ID_0 -> PB0RADIO_ANTENNA_ID_1 -> PB1PB0 works correctly. When configured as RADIO_ANTENNA_ID_0, I can observe the expected switching signal on a Saleae logic analyzer. Screenshot provided here: https://imgur.com/a/uk8L8tq Not much here, but zooming in into each pulse shows rapid switching- you can trust me. PB1
Hello Everyone,I'm checking the STM32WL5MOCH6TR MCU of a custom board that i made a few years ago, and I don't understand something : - On the datasheet, it says that its frequency range supported is 864–928 MHz- When I open a CubeIDE project, I'm able to set a much wider range : LoraWAN example : SubGHz_Phy example : Is that intentional ? Maybe those Middlewares are general-purpose?
Hello everyone, I have my own custom board based on the STM32WLE5CC , and I want to build a LoRaWAN project on it. For the RF design, I used the MB1874-LP reference schematic as a base, together with the BALFHB-WL-06D3 balun/filter for a 2-layer PCB, following application note AN6322. I also studied AN5407 and AN5757, and for LoRaWAN specifically AN5406, as well as this video: https://www.youtube.com/watch?v=hJFv4RbN878 The main issue is that almost all available materials only explain how to use the ready-made End_Node example project. At the moment, I am also studying UM2643. Could you please tell me specifically what else I should study for this topic? Maybe I have missed some important materials or documentation related to developing a custom STM32WLE5CC LoRaWAN firmware from scratch. I also have one more hardware-related question:I accidentally swapped the positions of L3 and C26 in the RF matching network (see screenshot). Could this cause TX power loss or reduce RX sensitivity?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.