Ask questions and discuss STM32 wireless solutions and their implementation for running Bluetooth LE, Zigbee, LoRaWAN applications.
Most recent activity
Please go and visit our wiki pages where you can find a lot of information on our wireless product families (WB, WBA, WL) and the supported protocols: BLE, Zigbee, Thread, Matter, Lora, ... To begin your technical journey, please start from this top page: https://wiki.st.com/stm32mcu/wiki/Category:Connectivity This top page will guide you to the first steps to develop a wireless application using connectivity protocols on ST wireless microcontrollers. For BLE protocol, please visit: https://wiki.st.com/stm32mcu/wiki/Connectivity:Introduction_to_BLE_with_STM32https://wiki.st.com/stm32mcu/wiki/Connectivity:Introduction_to_Bluetooth_LE_Audio You can find information on BLE Certification, BLE Features, BLE Mesh, BLE Audio, … For Zigbee protocol, please visit: https://wiki.st.com/stm32mcu/wiki/Connectivity:Introduction_to_Zigbee You can find information on Zigbee certification, Zigbee Features, BLE-Zigbee concurrent mode, … For Tread protocol, please visit: https://wiki
Dear all, The X-CUBE-MATTER Expansion Package is now available on our official website following this link MATTER - Matter software expansion for STM32Cube - STMicroelectronics It is a reference implementation for the demonstration of Matter on STM32. It is ready for prototyping a Matter end-device on a reference development platform. Refer to STMicroelectronics Matter wiki articles at https://wiki.st.com/stm32mcu/wiki/Connectivity:Introduction_to_Matter to get started with matter for the supported STM32 platforms. Kind regards, Ouadi
I have a design with a CR2032 cell connected to VBAT on the STM32WB5MM module. This was set up using CubeMX and there I enabled the LSE.In my code I am able to set the date and time and observe that it increments as expected. However, as soon I power the circuit down and back up the RTC is reset to the default. I have verified that VBAT is 3.1V.I have not yet tried the backup registers.What am I missing?
I’m trying to make the example LoRaWAN_End_Node_LBM] work on my nucleo-wl55jc1.For now i’ve just changed the DevEUI and AppKey in se-identity.h to match my chirpstack configuration.I can see the join request from my object and the join accept answer of the server but here is what i see on the log of the nucleo:LoRaWAN End Node LBMAPPLICATION_VERSION: V1.6.0MW_LORAWAN_VERSION: V1.1.0MW_RADIO_VERSION: V1.4.0L2_SPEC_VERSION: V1.0.4RP_SPEC_VERSION: V2-1.0.4Event received: RESET###### AppKEY: 2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C###### NwkKEY: 2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C###### DevEUI: CA:FE:BA:BE:DF:70:70:35###### AppEUI: 00:00:00:00:00:00:00:00###### DevAddr: DF:70:70:358s053:Add JOIN task8s053: TX MNG REQ time=00008053, final_time=000107888s055: Next TX on freq 868100000, DR 3 10s782: Payload: 00 00 00 00 00 00 00 00 00 35 70 70 DF BE BA FE CA 76 01 0A F0 D4 25 size: 23 995: TX DONE11s041: RX1 LoRa at 4957 ms freq:868100000, DR 3,
System: STM32CubeIDE 2.2.0, Win11 Hi there,I am using the STM32WB09 and I am running the BLE Heartrate OTA Example via debugger.There is only one thing I don’t understand:When I create a release version of this example (= hex file) and execute a “run” command in STM32CubeIDE, the program is running until I powercycle the device. Then suddenly there seems to be an old application in Flash?But when I create a new project, execute the same “run” command the program remains also after powercycle.Here’s a log of my run command with the application which will be reverted back after power cycle: ST-LINK SN : 0044004E3137510E33333639ST-LINK FW : V3J17M11Board : STLINK-V3MINIVoltage : 3.30VSWD freq : 8000 KHzConnect mode: hwRstPulseReset mode : Software resetDevice ID : 0x032Revision ID : Rev ADevice name : STM32WB09NVM size : 512 KBytes (default)Device type : MCUDevice CPU : Cortex-M0BL Version : --Opening and parsing file: ST-LINK_GDB_server_a16044.srecMemory Programming ...File : ST-LINK_GDB
Hello,We have designed a custom RF module based on the STM32WL33, and one of ourcustomers is asking us to demonstrate that the RX sensitivity of our modulematches the values published in the datasheet: - RX sensitivity @ 1% BER: -132 dBm @ 300 bit/s, 433 MHz, OOK -128 dBm @ 300 bit/s, 868 MHz, 2(G)FSK -112 dBm @ 38.4 kbit/s, 868 MHz, 2(G)FSKTo validate this, we would like to reproduce the exact test conditions usingan official ST development board (e.g. NUCLEO-WL33) and theSTM32WL33 GUI, so the result is directly comparable to thedatasheet.In the GUI's "Radio settings" tab we can set: fc, DR (ksps), Fdev (kHz),CHF (channel filter bandwidth, kHz), modulation (OOK/2(G)FSK/4(G)FSK/ASK),Spread Factor, and Pout.Could you please help us with the following:1. What DR / Fdev / CHF / Spread Factor values did ST use internally to characterize each of the three sensitivity points above? In particular: - For -132 dBm @ 300 bit/s / 433 MHz / OOK: Under the test conditions of 1
Hello, I created a project (BLE_p2pServer) in STM32CubeMX (6.18.0), but it won't build.Unlike other projects, this project has a folder-like icon in the Project Explorer.I created the project using the same procedure as other projects (BLE_TransparentMode, etc.), so do you know why this is happening?Deleting and recreating the project doesn't change the situation.
I programmed BLE_TransparentMode to perform RF testing on a custom board equipped with an STM32WBA23.I want to transmit unmodulated CW, but I can't find a way to do this using HCI commands.Is there a vendor-specific command to achieve this? Alternatively, methods such as calling an API or modifying registers would also be acceptable.
Ok, a tricky one. So for services and attributes it's documented that there is 10752 bytes, each service takes up 48 bytes, each attribute 40 bytes, and if you got th number of services and attributes you can compute backwards BLE_ATT_VALUE_ARRAY_SIZE (after you mapped all characteristics to actual attributes), given the upper limit. Easy enough. (GATT_DB_Size_SRAM_NVM.xlsx) My problem is now BLE_MBLOCK_COUNT. There is this macro:#define BLE_TOTAL_BUFFER_SIZE(n_link, mblocks_count) \ (16 + BLE_FIXED_BUFFER_SIZE_BYTES + \ (BLE_PER_LINK_SIZE_BYTES * (n_link)) + \ ((BLE_MEM_BLOCK_SIZE + 8) * (mblocks_count)))What is the limit for BLE_TOTAL_BUFFER_SIZE ? If that is known, I can compute backwards to get "mblock_count" for a known "n_link". Or is the documented 10752 byte number the limit for "BLE_TOTAL_BUFFER_SIZE()" plus the BLE_NUM_GATT_ATTRIBUTES / BLE_NUM_GATT_SERVICES / BLE_ATT_VALUE_ARRAY_SIZE database size ?
I have the nucleo board connected to the STLINK-V3PWR via JP2 and ground connections. Flashed onto the device I have a mioty evaluation stack from LZE. I am taking readings of the current drawn and getting a consistent value of 3mA. I was trying to evaluate the deepstop current so wanted to know if the fact is that I have got my measurements/ connections wrong or that the firmware is preventing me from entering the mode.
The product page and datasheet only mention BLE Core 6.0 but don't call out channel sounding support explicitly like other BLE features. Is it actually supported?
Hi ,I'm currently working with a BlueNRG-332AC and am unable to establish an SWD connection for programming/debugging.Hardware Checks Verified the SWD header continuity – all connections are OK. Tried swapping SWDIO and SWCLK to rule out wiring issues, but it made no difference. The target board is powered. Voltage Measurements on SWD HeaderPin Measured Voltage Pin 1 (VCC) 3.3 V Pin 2 3.3 V Pin 3 (SWDIO) 3.3 V Pin 4 (SWCLK) 0 V GND 0 v Software Tried BlueNRG ST-Link Utility RF Flasher Utility BlueNRG ST-Link Utility Log18:29:21 : Can not connect to target! If you're trying to connect to a low frequency application, please select a lower SWD Frequency mode from Target->Settings menu.18:29:22 : No target connected18:29:32 : Can not connect to target! Please select "Connect with Pre-Reset" mode from Target->Settings menu and try again. If you're trying to connect to a low frequency application, please select a lower SWD Frequency
I have designed a custom board. I have connected SWCLK to PA3 and SWDIO to PA12. I found I can not connect. So I made a patch and connected SWDIO to PA2 which seems to be default after boot. Now I can connect to the board. However after downloading my software the board becomes unaccessible. The code is running fine on a NUCLEO-WL33CC1 board.I can not access the board with CubeProgrammer either. It is like bricked.I found one issue with LSE which I have connected to PB14 and PB15 instead of PB12 and PB13. So I changed my code disabled LSE and enabled LSI and tested this on a new board. Initially I can connect but as soon as I try to singlestep through the code contact is lost and after that the board is no longer accesable in CubeProgrammer either.I am running out of boards if I can not find a way to unbrick them. @STTwo-32
Hi!i made a custom PCB with the STM32WB1MMC. But Ii’m getting hardly 2 or 3 meters range.Seems to be the same issue as but my device is right on the edge of the PCB.My antenna keep put zone is a bit narrower than the reference board. Apart from this I not able to see what else could be wrong. Any pointers would be much appreciated. Thanks!
Hi, I have a custom board with a STM32WB55RG and I’m trying to upgrade the Wireless stack (and the FUS firmware) from a user application (and so without using STM32CubeProgrammer).I'm following the Application Note AN5185.The current FUS version is v1.2.0 and I try to upgrade the stm32wb5x_BLE_Stack_full_fw firmware (v1.14.1 or v1.15 or v1.16).I'm able to send the FUS_GET_STATE command and it returns successfully:the response (HCI command complete event packet) is well formatted, Num HCI is 0xFF, Cmd opcode is 0xFC52 (FUS_STATE) and FUS State value is 0x00 (FUS_STATE_IDLE).I'm also able to send the FUS_FW_DELETE commands:Response command opcode is 0xFC55 (FW_DELETE_STATE), status value is 0x00 (Operation started). Before the delete, SFSA was 0xCE and after complete, the SFSA is 0xf4 Read FUS Infos from STM32CubeProgrammer shows valid STACKS version/address before and v0.0.0.0/NA after the delete.→ The communication to the FUS though IPCC looks to work as expected for the get state and
I want to use the 2-wire Direct Test Mode defined in Bluetooth Core Spec Vol. 6 Part F for RF testing of my STM32WBA custom board.I've already tried BLE_TransparentMode. While HCI / ACI commands work, DTM commands don't respond.Is it impossible to control with 2-wire DTM commands in BLE_TransparentMode?Please let me know if there's any way to do this.
I'm investigating how to change the TX output power for hardware testing.I was able to confirm that the power changes by writing BLE_TransparentMode to the STM32WBA25 and sending the following HCI command via UART.0x01 0x0F 0xFC 0x02 <EnHighPower> <PowerLevel>However, while Table 468 of AN5270 suggests that it can be set up to +6dBm, there appears to be no change in the actual output between setting it to 0dBm and setting it to +6dBm.0x01 0x0F 0xFC 0x02 0x01 0x190x01 0x0F 0xFC 0x02 0x01 0x1FSetting it to a value lower than 0dBm seems to change the output as expected.Is it actually not possible to set it to a value higher than 0dBm?
Hello,I am working on a custom application with BLE OTA on the Nucleo WB55RG. The OTA loader is placed at 0x08000000. My main application is linked to start at 0x08007000.In normal mode, the main application runs an ADC test and continuously prints ADC values. I added a hardware OTA trigger on pin PC2. When PC2 is driven high, the application prepares the BLE OTA request and then calls NVIC_SystemReset(). The OTA request is passed to the loader at the start of SRAM.After this, the OTA loader starts correctly. The loader detects the OTA request from SRAM. The loader erases the application flash area starting from sector 7, corresponding to address 0x08007000. The loader then attempts to initialize the BLE stack and start advertising.The issue is that BLE advertising does not start when entering OTA mode after the NVIC_SystemReset(). Pressing the on-board reset button also does not make BLE advertising start. However, if I completely power cycle the board by removing USB power and reconn
Are there any single MCU + LoRa 2.4 GHz ICs in the world?
HI, I am using stm32wba65i_dk1 board to develop my ble audio application. I choose zephyr as my software platform and tmap as ble audio profile. However, when the TMAP application initiates advertising, the Pixel 9 cannot detect the device name broadcast by the TMAP peripheral. I also captured over-the-air packets using the professional BLE sniffer X240, which confirmed that no BLE advertising packets were transmitted from the STM32WBA65I_DK1 board.I enabled logging for all HCI commands sent by the HCI Core and all received HCI events, yet no obvious anomalies were observed in the HCI logs. I am unable to identify the root cause of this issue. # 1. LE Set Extended Advertising Parameters [v1]Send Command:[00:00:03.106,000] <dbg> bt_hci_core: bt_hci_cmd_send_sync: buf 0x20010c18 opcode 0x2036 len 25[00:00:03.110,000] <dbg> bt_hci_core: bt_hci_cmd_send_sync: cmd params 00 01 00 20 00 00 30 00 00 07 01 00 00 00 00 00
Hi, I’m looking into the WL55JC1 for a project which would require the system to remain dormant (ideally standby) for weeks, maybe months and then resume operation on a set date at a set time. I would like to use LSI as power and space will be very limited.So far I’ve discovered, that of course there is an RTC and it has alarms that can be used to wake from standby mode. However all examples and documentation I can find only ever use times or maybe day-of-week or day-of-month as the set wake up time. Never a full date and time. Looking at the code, stm32wlxx_hal_rtc.h defines a struct RTC_AlarmTypeDef with fields for seconds, minutes, hours and either a day-of-month, or day-of-week.Is it really not possible to give the system a full a date and time yyyy-mm-dd and hh-mm to wake up at? Will I need to build workaround waking up at least once a month to recalculate the next wake-up until the actual target time is within the same calendar month?Or am I overlooking something?I’d appreciate a
Hi ST Team,I am trying to enable Bluetooth LE Privacy (Resolvable Private Address) on an STM32WB55CG.EnvironmentMCU: STM32WB55CG STM32CubeWB Package: v1.23.0 BLE Stack: v1.23.0.3 FUS: v1.2.0.0What I changedI changed the address type from: #define CFG_BLE_ADDRESS_TYPE PUBLIC_ADDRto #define CFG_BLE_ADDRESS_TYPE RESOLVABLE_PRIVATE_ADDRThe generated code calls: aci_gap_init( role, 2, ...);and aci_gap_set_discoverable( ... RESOLVABLE_PRIVATE_ADDR, ...);Initially, aci_gap_set_authentication_requirement() was also using CFG_BLE_ADDRESS_TYPE as the Identity Address Type. I found an ST forum discussion mentioning this is incorrect, so I changed it to: aci_gap_set_authentication_requirement( ... PUBLIC_ADDR);However, the behavior did not change.Observed behaviorWith CFG_BLE_ADDRESS_TYPE = PUBLIC_ADDRPairing succeeds. Device works normally.With CFG_BLE_ADDRESS_TYPE = RESOLVABLE_PRIVATE_ADDRConnection is established. Pairing fails. ACI_GAP_PAIRING_COMPLETE_VSEVT_CODE
NUCLEOWB55RG I set I2C3 in MX. I have 2 x temp sensors & 2 x accelerometers in the bus./* Snippets of code to show how I2C3 is set up & used */#include "main.h"#include "adt7410.h"#include "adxl345.h"I2C_HandleTypeDef hi2c3;ADT7410 temp_0;ADT7410 temp_1;ADXL345 acc_0;ADXL345 acc_1;static void MX_GPIO_Init(void);static void MX_I2C3_Init(void);int main(void){ HAL_Init(); MX_GPIO_Init(); MX_I2C3_Init(); /* ADT7410 set up */ /* temp_0 at 0x48 * temp_1 at 0x49 */ temp_0.adti2c = &hi2c3; // I2C Handler ADT7410_Init(&temp_0, 0x48); // I2C address depends of A0 and A1 pins ADT7410_Reset(&temp_0); // Optional ADT7410_SetResolution(&temp_0, ADT7410_16BITS); // Put the device in 16 bits resolution temp_1.adti2c = &hi2c3; // I2C Handler ADT7410_Init(&temp_1, 0x49); // I2C address depends of A0 and A1 pins ADT7410_Reset(&temp_1); // Optional ADT7410_SetResolution(&temp_1, ADT7410_16BITS); // Put the
Hi,I am working on a Matter-over-Thread firmware project on the NUCLEO-WBA65RI / STM32WBA65RIVx, and I am seeing an issue where the Amazon Alexa app does not detect the board during Matter commissioning.My current environment is: Board: NUCLEO-WBA65RI MCU: STM32WBA65 STM32Cube FW_WBA: V1.9.0 X-CUBE-MATTER: V1.6.0 STM32CubeIDE: 1.17.x Commissioner being tested: Amazon Echo 4th Gen, model L4S3RE Matter / connectedhomeip version: v1.3.0 as packaged in X-CUBE-MATTER V1.6.0 The device boots correctly, Thread and Matter initialize, and the commissioning window opens. From UART logs I can confirm: Thread task starts successfully Matter task starts successfully BLE stack initializes successfully Matter BLE advertising starts Matter service UUID 0xFFF6 is present in the advertising payload Manual pairing code and QR payload are generated Fabric count is 0 Commissioning window opens successfully The device is also visible in BLE scanner tools such as nRF Connect. nRF Co
Have any User Guide to setup matter in STM32WBA65RI? Matter 1.5.0 is supported in STM32WBA65RI?
ST Community highlights – April to June 2026
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.