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
I am currently working on an STM32-based project using UART for continuous data transmission between the microcontroller and a PC application. The system works fine initially, but I am facing intermittent data loss and incomplete packets during long-running communication. The issue becomes more noticeable when the baud rate is increased or when multiple interrupts are active in the system. What I have already tried: Verified baud rate and clock configuration in STM32CubeMX Enabled UART interrupt-based receiving Increased buffer size for RX handling Checked wiring and physical connection stability Despite this, the problem still occurs randomly after some time of operation. I would like to ask the community: What are the best practices for stable UART communication in STM32 under continuous data flow? Should I switch to DMA-based UART instead of interrupt mode for better reliability? Are there any known issues with buffer overflow or interrupt priority that could cause this behavior?
Hi, Our product uses 2 x STM32WB55 MCUs, where one as Server/Coordinator and the other one as Client/Router for Zigbee. However, our customer prefer to use customized PAN ID or Extended PAN ID so that more controllable and traceable by their application software later. Below is the setup of the Server/Coordinator and Client/Router in my firmware (modify based on sample code "Zigbee_OnOff_Server_Coord & Zigbee_OnOff_Client_Router"). ** Server/Coordinator :startupControl = ZbStartTypeForm;config.panId = 0x0001; // range from 0x0001 to 0xfffeconfig.extendedPanId = 0x00001; // incremental from 0x01 onwards ** Client/Router:startupControl = ZbStartTypeRejoin;config.panId = 0x0001; // range from 0x0001 to 0xfffeconfig.extendedPanId = 0x00001; // incremental from 0x01 onwards Questions:1. May I know the configuration above is enough and valid to do so?2. What are the steps needed or I missed out in order to use customized PAN ID or extended PAN I
Hi,We are looking for a WiFi module or preferably a WiFi + BT module to be used in a battery-operated device where audio files are recorded onto a uSD card and whenever required they are downloaded through WiFi or BT link to a PC. For context, the audio files are 20MB in size.These are the main specs:- pre-certified module: WiFi or WiFi+BT- highly reliable for mass production- uSD card interface (specific for audio and files)- means to record and play back the audio files- low-power - compact & SMD- straightforward to integrate from a firmware perspective (library available) and well supported in terms of documentation and ecosystem.Could you please make recommendations:- for such suitable modules?- for alternative system architecture using ST products and ecosystem to implements such device?Thank youRicko
Hi,I hope you are doing well. I am currently developing a project based on the STM32WBA55CGU6 MCU. The hardware design (PCB) and firmware have been developed and validated using this device, particularly relying on its BLE capabilities and STM32_WPAN stack. However, I am currently facing a supply issue, as the STM32WBA55CGU6 appears to be out of stock across major distributors and local suppliers in Türkiye (e.g., Digi-Key EKOM). I would like to kindly ask: 1- Is there an estimated timeline for restocking or production availability? 2- Are there any recommended drop-in or near drop-in alternatives within the STM32WBA series that can be used with minimal hardware and firmware modifications? Thank you very much for your support.
Hello, everyone,I am currently working on a project using STM32WB07CC. During the design of low power consumption, I found that when waking up the MCU from the deepstop mode through the wakeup pin, it is impossible to obtain the wakeup source by accessing PWRC->SR1&SR3. However, when waking up through the RTC, it is possible to obtain the source. After referring to the demo provided by ST, I also discovered the same issue.I hope everyone can help me solve this problem.thank.
Good day, I am currently working on the development of an IoT sensor node product based around the STM32WLE5CC MCU. The product needs to be able to wake up from sleep on reception of a LoRa RF message. I have attempted to accomplish this by transmitting a long preamble and having the node receive the message by setting the radio in RxDutyCycle mode prior to sleeping. The timing of my duty cycle is such that I am guaranteed an Rx window within the preamble duration. This wakeup functionality works, however, the RSSI of the received wakeup signal is shown to be >20dBm lower than if I had just used continuous reception. This is a problem as we are now encountering suspected range issues where units can detect the preamble but fail to fully receive the associated payload. I have gone through multiple test setups with different spreading factors and the results are consistent across the tests: Test 1.1 (SF = 7, BW = 125 kHz, Preamble Len = 500, Rx = Full Receive) Wake RSSI = -
Hi,I'm working on a project with your STM32WB5MM module, I managed to enable ZigBee and connect to the network, but I'm having trouble changing the device name, it keeps identifying itself as default value (STM32WB).ZigBee Stack: 1.24.0FW Type : FFD Zigbee stackIn function APP_ZIGBEE_StackLayersInit() I add:struct ZbZclBasicServerDefaults basic_defaults = { .app_version = 1, .stack_version = 2, .hw_version = 1, .mfr_name = "0TestName", .model_name = "0LOCKZ1A", .date_code = "02026-03-31", .power_source = ZCL_BASIC_POWER_DC, .sw_build_id = "0v1.0" }; static void APP_ZIGBEE_StackLayersInit(void) { APP_DBG("APP_ZIGBEE_StackLayersInit"); zigbee_app_info.zb = ZbInit(0U, NULL, NULL); assert(zigbee_app_info.zb != NULL); // uint8_t device_name[] = {"0TestDevice"}; // device_name[0] = 10; // ZbZclBasicWriteDirect(zigbee_app_info.zb, ZB_ENDPOINT_BCAST, ZCL_BASIC_ATTR_MFR_NAME, device_name, device_name[0]); basic_defaults.mfr_name[0] = strlen((char*)basic_defaul
1. Requirement description It is expected that the terminal can join the network with the specified panid 2. Problems encountered during the test 2.1 It was found that the given function ZbStartup cannot enable the terminal to join the network with the specified panid. 2.2 Attempt to use a lower-level function, the network layer function ZbNlmeNetDiscReq, to make a network discovery request. This function returned successfully. In the corresponding callback function, use ZbNwkGetIndex to obtain the network list. This function also returned successfully. However, the network list information has never been obtained (the actual space does have a network). If the network information can be obtained at this stage, the panid can be filtered, but currently, the network information cannot be obtained. 2.3 By using the ZbNlmeJoinReq function of the network layer to join the network, it was found that this function was only declared in the header file zigbee.nwk.h. This function was not defined
Dear sir / madam The UltraLibrarian WBA5M (Module) footprint is flawed. Potentially it can screw the module under reflow.Those center GND pads are not placed correct. I noticed when comparing the ST dev-board module. see image..
Hello,I am having some hard time to connect my nucleo-wl55jc1 to any LNS, even though i checked that Device, Join, and App EUIs are all correct and there is no mismatch, but whichever LNS I try, I always get the same result First, I tried with an indoor RAK gateway, these gateways use MAC version 1.0.3, and the nucleo example uses version 1.0.4 Then I tried using MeteoScientific LNS and Helium network, could not join as well. Finally I tried to connect LORIOT to my RAK gateway, and they successfully connected, but still the nucleo could not join the server, and the gateway did not transfer any packets. Even though the steps are fairly simple, I don't know what is the problem here what is the meaning of "Event received: RESET" in the nucleo serial logs?
Hello, I am currently developing a project that requires an ultra-low-power BLE-based indoor localization tag. The device should periodically wake up and advertise, remaining in standby mode (targeting approximately 500 nA to 1 µA) for about 90% of the time. I am using NUCLEO-STM32WBA65RI. For an initial test, I plan to configure the system to stay in standby for around 5 minutes, then wake up and advertise for 30 seconds. I have already studied the documentation regarding STM32 low-power modes and reviewed examples such as the Heart Rate application, where BLE is used together with low-power modes. However, I still have some doubts. From my understanding, these examples are designed for continuous radio operation and rely on SRAM1/SRAM2/RADIO retention, which increases power consumption. It also appears that some internal mechanism - possibly the UTIL_TIMER based on RTC or the 2.4 GHz radio timer - is responsible for periodically waking the system to handle BLE activity. Could
Hello,I am currently working with the NUCLEO-STM32WBA65RI. My main goal is to place the board in Standby mode and periodically wake it up to perform BLE advertising (as a Peripheral), while still allowing it to handle a possible connection request from another device.So far, I have followed the "Standby with RTC" example to implement low-power operation. I would now like to integrate the BLE stack to enable advertising during the wake-up periods. The intended behavior is for the device to sleep for 1 minute, wake up via the RTC, perform advertising for a short duration, and then return to Standby mode.From the documentation, I understand that the radio and Link Layer must be in deep sleep for Standby mode to be properly achieved. Could you provide some guidance on the correct way to ensure this state? Additionally, what happens if the radio is not in deep sleep when attempting to enter Standby mode?Best regards,
Hello, I am currently working with the NUCLEO-WB05KN1 development board (STM32WB05KN MCU) and I would like to implement FOTA (Firmware Over-The-Air) / OTA update over Bluetooth. However, I could not find any clear reference documentation, application note, or example project related to: Bootloader implementation for OTA Memory partitioning (dual bank / slot usage) BLE-based firmware update flow Any official FOTA example for STM32WB05 series I checked the datasheet and reference manual, but there is no clear explanation of: Whether a built-in/system bootloader supports OTA via BLE How to structure the flash (bootloader + application separation) Any middleware/library support for firmware update Currently, my memory usage is: FLASH: ~34% RAM: ~49% So I still have space to implement a custom bootloader if needed. My questions: Is there any official ST example or application note for OTA/FOTA on STM32WB05KN? Does STM32WB05 series support BLE OTA natively (like STM32WB55)? If not, wh
Title edited to clarify that this refers to a NUCLEO-WBA65RI board.Hello, I am currently using STM32WBA65RI with Standby mode. According to datasheet, this mode should be able to reach 120nA current consumption with the 16 GPIO wake-up pins (RTC disabled). However running the Standby example and shutting down the RTC I am still getting 3uA of current consumption. What can I do to decrease the current consumption up to the nanoA?Best regards.
Hi, I am using STM32WBA55G-DK1 as a BLE TMAP Peripheral, I have a transmitter, which is transmitting 4 channels/subgroups of data. But the device is stucking at Syncing PA, but when the same is given with 2 channels(BIS), I am able to to connect and listen the music. What are the changes to be made to avoid this issue. Thank you
I am working with the STM32WB5MMG and implementing firmware updates using OTA. For testing, I am using the ST BLE Sensor Android application. What I Tested I first tested OTA using the example projects available in the STM32CubeWB firmware package: Heartrate_ota P2PServer_ota Both examples work correctly. I can: Flash the example firmware Connect using the ST BLE Sensor app Upload another firmware via OTA successfully My Custom Firmware After verifying OTA with the examples, I created my own firmware that includes: Custom BLE service Custom characteristics Custom UUIDs and device name When I upload this custom firmware via OTA from the example firmware, the update completes successfully and the device runs my application correctly. Problem After my custom firmware starts running: The device no longer appears in the ST BLE Sensor app as OTA-capable. I cannot upload another firmware via OTA. The device does not advertise as an OTA device like the Heartrate_ota
Hello. We are developing a p2p application using two Wio-E5 mini modules based on stm32 WLE5JC.The problem I'm facing is HAL_DELAY not working. I created the project, chose HSE, LSE, then SysTick, and then after I selected SysTick, HAL_IncTick() was well declared in SysTick_Handler, and I also checked NVIC. But when I do HAL_GetTick() at any moment, I get zero. Isn't there a problem with this??The Ping Pong example also uses HAL_Delay, but I cannot understand why this happened. This is very critical for my project becaude when i set modem state in RX, it call timeout in next loop. please help me
I want to disable the AGC and use supply manual attenuation values.Disabling the AGC is pretty straight forward, I just set the AGC_EN bit in AGC0CTRL to zero.This works fine, but the gain/attenuation is fixed at the reset value and I'd like to use a custom value.To set manual attenuation values, I suppose I need to write them to the AGC_ANA_ENG register.However, i noticed something weird: This AGC_ANA_ENG register is not present in the driver files. Its not mentioned anywhere and in the MRSUBG register definitions it is listed as "Reserved". The "Description of STM32WL3 HAL and LL drivers" pdf (UM3438) even lists a couple of LL-functions to modify it, such as LL_MRSubG_SetAgcForceGains, but they exist nowhere in the driver files.Why is this register not mentioned in the official driver files and why dont the LL-methods exist?
Hi together, I have been developping a simple BLE application (that I can attach eventually) on the STM32WB55RG P-Nucleo This application combines BLE + USB Device (FS) But after I upgraded the BLE stack firmware from: FUSVER:1.2.0.0STKVER:1.13.2.2STK@:80CF000FUSOP:3.1.0 To: FUSVER:2.2.0.0STKVER:1.24.0.2STK@:80D0000FUSOP:3.1.0 Then I can no longer get any BLE connection nor bonding to my board, using a smartphone. I'm very suprised of that.
The STM32WB55 it will jump to the SysTick_Handler interrupt handler routine after we have configured the clocks and the RTC and then enable the interrupts. I don't understand why this is happening. I have checked the following registers:SysTick->CTRL->CLKSOURCE is set to processor clockSysTick->CTRL->TICKINT is disabledSysTick->CTRL->ENABLE is activeShouldn't the interrupt have been disabled by setting SysTick->CTRL->TICKINT to '0'?
Hello, I am using different ST MCUs from few years and already have a wide set of development boards, tools and JTAG emulators and so far did not experienced any troubles to attach new board (even custom made) to CuveIDE and to flash and debug my solutions... until this week.I've deceded to get some more experience in low power SubGHz solutions from ST and ordered two NUCLEO-WL33CC1 development boards (Mouser store) and also some Chinese modules based on STM32WL33 (AliExpress).Now I have few different STM32WL33 based boards and 3 different available debug interfaces - J-LINK (stand-alone), ST_LINK V2 (stand-alone) and ST_LINK V3 (embedded in NUCLEO-WL33CC1).The problem is that there is no any combination of boards and JTAGs that can connect to STM32CubeIDE.So far there is only one partial success - Using STM32CubeProgrammer + ST_LINK V2 and Chinese modile - I can connect, flash and verify some ELF file: 08:47:13 : UR connection mode is defined with the HWrst reset mode08:47:1
hello everyone, i am a beginner in STM32cube. i was working on board Nucleo wb55rg. and following this tutorial STM32WB Getting Started Series: Part 12a, STM32CubeMX & STM32CubeIDE lab. Introduction, and it said on 2:33 that i need to activate "system core>IPCC and enable both interrupt". i am using STM32CubeIDE 1.5.0 and it does not show IPCC option on it . any help and guidance is appreciated, thank you
HiIf I develop an application using the STM32WBA25 MCU with BLE, ThreadX, and USBX, is the RAM size sufficient?
Hi everyone, I am working on a Beacon project using NUCLEO-WB05KN. My goal is to broadcast Eddystone-UID and allow a connected phone to update the Namespace ID and Instance ID via GATT characteristics. The Setup: I have a Custom Service with two characteristics: Namespace (10 bytes) and Instance (6 bytes). The device broadcasts Eddystone-UID correctly in connectable mode. I’ve added the GATT_NOTIFY_ATTRIBUTE_WRITE (0x01) mask to both characteristics. I’m using hci_init(hci_user_evt_proc, NULL); for event handling. The Problem: When I write a value from the nRF Connect app, the write is successful on the phone side, but the aci_gatt_srv_attribute_modified_event callback is never triggered on the MCU side. I have disabled EnterStopMode() to ensure the MCU stays awake. I have tried implementing the callback in both app_stm32wb05n.c and stm32wb05n_events_cb.c (overriding the WEAK function), but still no luck. My Device_Init Code: C /* Namespace Characteristic *
Hello, I'm using 2x NUCLEO-WB55RG boards with the unmodified BLE_MeshLightingPRFNode example from STM32CubeWB V1.24.0. Setup:- BLE Stack full v1.13.2.2 (stm32wb5x_BLE_Stack_full_fw.bin)- FUS v1.2.0- Provisioned with ST BLE Mesh app (tested on both iOS and Android)- Both nodes subscribed and published to Default group (0xC000)- Both nodes have AppKey 00 bound to all models Firmware boot logs confirm:- Relay = Enabled- Proxy = Enabled- Friend = Enabled- PB-ADV = Enabled- PB-GATT = Enabled- Default TTL = 8- Different MAC addresses on each board Problem:1. Sending a Generic OnOff command to the Default group (0xC000) from the app only turns on the LED of the node connected via GATT proxy. The other node never receives the message. 2. SW1 button press toggles only the local LED, never the remote node's LED. 3. It is ALWAYS the last provisioned node that responds. If I reverse the provisioning order, it is still the last one that works. The first provisioned nod
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.