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
helloI'm working on a STM32WB55 P-NUCLEOI'm trying to make a binary that will self update Wireless stack (WL FWI took inspiration from https://github.com/stm32-hotspot/STM32WB-FUS-Command-Line-Interface.gitthe objective is to embed new FW in a C byte array and to let the user binary to call FUS for :delete current stackcalc the good adress for WL FW (@SFSA -clean flashcopy the new WL FW C blobcall upgradeall the rest is ignored right now to simplify explainationshere you can find my app_entry.c APPE_SysEvtReadyProcessing function (everything is here)static void APPE_SysEvtReadyProcessing(void * pPayload) { uint8_t fus_state_value; SHCI_CmdStatus_t res; TL_AsynchEvt_t *p_sys_event; SHCI_C2_Ready_Evt_t *p_sys_ready_event; SHCI_FUS_GetState_ErrorCode_t ec; p_sys_event = (TL_AsynchEvt_t*)(((tSHCI_UserEvtRxParam*)pPayload)->pckt->evtserial.evt.payload); p_sys_ready_event = (SHCI_C2_Ready_Evt_t*) p_sys_event->payload; /* Traces channel initialization */ TL_TRACES_Init();
I've been doing some BLE development using STM32WB55RG mounted on Nucleo-68 board. Our end product is very space constrained & doesn't need all the headers, switches etc that the board provides.So I took a loser look at what we could save space by removing & immediately noticed that there is a STM32F130CBT6 on the board. I take it this is dealing with the ST-Link?I am relatively new to the STM32 eco-system so am aware that this my be a dumb question but, is it possible to still use ST-link without this & just use the STM32WB55 with ST-Link?
STM32WB55RG not showing when using STM BLE Toolbox. In fact NO Bluetooth devices are showing at all.When I use the LightBlue app or scan using the Bleak Python library on my laptop, all discoverable devices are showing, including the STM32WB55RG with all its correct advertising data.
I'm trying to fix a P-Nucleo-WB55 board using CubeProgrammer.However, the board shows a 0.0.0.0 version of FUS and Stack and I cannot start FUS.I don't know why there is no version because the FUS cannot be deleted forever in the FUS upgrade document.So, How can I update FUS in this version?The SBRV option byte is 0x3ffff is it common?
Hey,I have two problems regarding custom clusters and sleepy end devices. I want to create an SED that periodically sends custom long string messages (via attribute reporting) to a coordinator.1.Question:For this I implemented a custom cluster with a custom long string character attribute. For testing I only write to the attribute once the SED starts up.enum ZclStatusCodeT status;uint8_t Custom_str[255] = " PAYLOAD";Custom_str[0] = 68; // length of string (ZCL format) LSBCustom_str[1] = 0; // length of string (ZCL format) MSBstatus = ZbZclAttrStringWriteLong(zigbee_app_info.custom_ls_server, MY_ZCL_DEV_LS, Custom_str);APP_DBG("Attribute write status = %d", status);This works as intended. My motivation to use the custom cluster was the ability to send long custom strings. If I change Custom_str[0] = 68; to Custom_str[0] = 100; the reporting stops and the message does not comes through (attributeWrite still successful). Fragmentation should be enabled by default in custom cluster, but ap
Hi,I am currently getting familiar with the STM32WB15 microcontrollers using two WB1M-WPAN1 boards.On the server/peripheral side, everything works correctly (the declaration of services and characteristics in the .ioc file is very convenient), and I based my implementation on the HR_p2p_sensor example.I have the following services and characteristics:Service p2pServer (0xFE40 - 128 bits) based on the HR_p2p_sensor example:Characteristic 1 (0xF41 - 128 bits) / length = 2 / Read-WriteCharacteristic 2 (0xF42 - 128 bits) / length = 2 / NotifyService sandbox (0xFF60 - 128 bits):Characteristic 1 (0xFF61 - 128 bits) / length = 10 / NotifyService battery (0x180F - 16 bits):Characteristic 1 (0x2A19 - 16 bits) / length = 5 / IndicateOn the client/central side, my goal is to interact with the server's services, but I am struggling to find the proper way to add the services/characteristics I want to read.Based on the explanations in AN5289, I modified P2P_SERVICE_UUID and P2P_NOTIFY_CHAR_UUID with
I'm unable to enable STM32_BLE in "sofware and middleware" on the STM32WB07CCVX in STM32CUBEMX as it's greyed out. Also, "RADIO" is greyed out too. Are there any guides on how I can set up BLE in STM32CUBEMX or does anyone know why these options are greyed out.
STM32CubeIDEVersion: 1.12.1Build: 16088_20230420_1057 (UTC)I am trying to use one of the examples from the STM32Cube_FW_WB0_V1.1.0 package, but I am unable to build any of them.After importing the project into STM32CubeIDE (I have tried BLE_Beacon and BLE_Power_Consumption), I attempt to build it, but I get the error shown in the image. At this point, I have to force close CubeIDE from the Task Manager because the program gets stuck with hundreds of error windows popping up.I'm obviously missing a step, but I can't figure out which one. Has anyone encountered this issue before?
Hello, I'm looking for advices to place the module STM32WL5MOC in bootloader mode from different methods : Through BOOT0 and NRST but I can not find the communication interface that I can communicate with (for example UART) this specific mcu in the application note AN2606. Also, I'm interested to know how can I access to the new firmware stored in the External memory flash for firmware update as the flash that is in the dev board B-WL5M-SUBG1 using as an example. Is it possible to place this module in bootloader mode in the software if I can not have access to the BOOT0 and NRST from an external device that can control it? Any example to do FUOTA point to point if I want to use the SubGHz modulation and not LoRaWAN server?
I am running a bluetooth application using freeRTOS on a Nucleo-WB55 (STM32WB55RG). I am in the process of implementing Emulated EEPROM (X-Cube-EEPROM) to store som data. After implementing eeprom emulated in a ble_heartrate_freertos example I have had problems understanding the execution of the Emulated EEPROM operation after a pagetransfer + cleanup (obs. for simplicity I use EE_CleanUp here)Without BLE activated (in SingleCore mode) EEPROM Emulated write and pagetransfer+cleanup looks just fine:Pagetransfer + cleanup takes ~40-50ms With BLE activated (in DualCore Mode) the following EEPROM operation occupies much more time than expected:Pagetransfer + cleanup still takes ~40-50ms, but a long delay is introduced in the next EEPROM operation: Here is an example of the additional delay introduced in the following EEPROM (after a pagetransfer + cleanup) operation: Here is the code: int main(void) { ... osKernelInitialize(); defaultTaskHandle = os
Hi, I want to report two code generation bugs in Cube MX for Zigbee projects:Color Control: having a color control functionality requires to fill out capabilities, such as XY or HS color settings. Those capabilites are not saved when regenerating the project, even though there is a custom code fieldMoisture Sensor: for moisture sensor, the Endpoint ID is not saved, e.g. I use 3 endpoints with moisture sensors and after each regeneration they use Endpiont 2 instead of 2,3,4I hope you can follow what I mean and fix those bugs. Thanks
Hello,I'm trying to implement BLE functionality on a custom board equipped with an STM32WB55CC using CubeMX.I managed to successfully (or so I think, the option bytes look good) install the BLE stack binary, but the device is not advertising. I managed to get a working test program on a P-NUCLEO-WB55 and I created the program running on my custom board identically.Using the debugger, I found out that the APP_BLE_Init() function is actually never reached, so I assume the stack on the M0 is not responding.I have searched the forum quite extensively without results, so any help or ideas would be greatly appreciated.Thanks,Stephan
Hi,I'm doing tests based on the LoRaWAN_AT_Slave. One of the modules often appears tMAC txTimeOut, resulting in JOIN FAILED. Same firmware downloaded, but some devices are working, is there any doubt? Is it a hardware problem? [14:47:35.933]发→◇AT+JOIN=1 □ [14:47:35.965]收←◆1s890:TX on freq 470900000 Hz at DR 0 OK [14:47:39.965]收←◆5s893:MAC txTimeOut +EVT:JOIN FAILED
Hello, hope someone can help me, thx! I successfully completed the SensorDemo_BLESensor-App by connecting NUCLEOWB05KN1 with NUCLEO-U575ZI-Q, and carefully followed the manual X-CUBE-WB05N_GettingStarted. I have also verified that we can send data by Bluetooth on NUCLEOWB05KN by only connecting the VDD, GND, and the RX, TX to the TX and RX of the NUCLEO-U575ZI-Q. However, we built a PCB that exactly copy from stdes-wb05kv2ld (two-layer board), and assembled the stm32wb05kn and the components (same as stdes-wb05kv2ld) onto the PCB. When we connected the PCB with NUCLEO-U575ZI-Q by 3V3, GND, RX to PCB's USART TX, and TX to PCB's USART RX, the WB05KN is not responding; by the logic analyzer, we can see that the NUCLEO-U575ZI' TX is sending out the data, but stm32wb05kn is not responding; it remains logic high. I was thinking if the chip has been lock-up accidentally, so we have also tried the stm32programmer, by connecting the swdio, swclk, NRST,
I am using a STM32WB55RCV6 for a BLE project. I did initial development on the NUCLEO-WB55RG development board and it works ok. Ignoring all other functions, the basic feature I am trying to see work is BLE advertising. However, when I move that code to a custom designed board the coprocessor software (that handles BLE wireless functions) seems to be stuck in the FUS state, and never emits the WIRELESS_FW_RUNNING event. This indicates the coprocessor has not entered the WIRELESS state, so it is not ready to issue advertisements, etc. I have confirmed the initialization function is called on the Custom board, as it is in the Nucleo board. I have checked key clocks on the Custom board as configured by MX and they seem functionally equivalent to the Nucleo board, namely a SYSCLK of 32 MHz on both, and a RF Timeout clock of 31.25 KHz (compared to the Nucleo board which has a RF timeout clock of 32.768 KHz). My assumption is the minor difference i
Hello Sir, I am working with STM32WB55CGU7 bluetooth MCU for Client and server for our application.Our application is Client and server connect 3 minutes once for 20 seconds.I need to enable the sleep mode in this controller for reduce power consumption.Because Iam using Lithium iron battery to power on the board.So Need to use Battery voltage for long days. And I have included my doubts of 2 points. Please find and help me solve as soon as possible to achieve our Project. 1. We enable the sleep mode in this controller using inbuild functions. These functions are I have used, PWR_EnterSleepMode(); PWR_ExitSleepMode(); Its working. We test this scenerio, Initial Voltage(V) Time(Hrs) With sleep mode (V) VoltageDifference(mV) 3.445 13.5 3.005 440 Initial Voltage(V) Time(Hrs) Without sleep mode (V) VoltageDifference(mV) 3.577 13.5 3.515 62 We faced, without enabling the sleepmode the voltage was drop
Hello team, I am working with STM32WB55CGU7 bluetooth MCU for Client and server for our application.Our application is Client and server connect 3 minutes once for 20 seconds. While connecting, Need to calculate the distance .How to find the distance using RSSI value? How to find the accurate distance from the server between connection. Here below, hci_read_rssi(gConnHandle,&gRssiVal); gDistance = pow(10, (((float)TX_POWER-gRssiVal)/(20.00))); based this type I calculated the distance.This method is correct or not. Is there are need to add or change maethod to calculate the distance. Thanking you.
I have a project that needs standby mode for switching the device on/off and stop mode to save energy between measurements. I use the IWDG for safety, but it restarts the board while in standby mode...I used this code to switch on the IWDG: IWDG->KR = 0x0000CCCC; IWDG->KR = 0x00005555; //Enable the IWDG Registry access IWDG->PR = 0x06; //Prescaler 256 IWDG->RLR = 0x0FFF; //Reload value 4095, around 30s while (IWDG->SR != 0) {} //Wait for the registers to be updated IWDG->KR = 0x0000AAAA; //Reload/start the IWDG*/ To switch off the IWDG_STBY bit, I had to unlock flash and the option bits for flash, as recommended by AN0434 page 98. And the CPU has to restart to take in effect. I made this code, started before initializing the IWDG:bool mustRestart = false; if (FLASH->OPTR & FLASH_OPTR_IWDG_STDBY) mustRestart = true; FLASH->KEYR = FLASH_KEY1; //Flash unlock sequence (pg 98 of the reference manual) FLASH->KEYR = FLASH_KEY2; //First unlock flas
Edit by ST Moderator: This post has been translated from Chinese to comply with the ST Community Terms and Conditions (§10.2). When I burned the Bluetooth protocol stack onto the new chip, my code was not executed efficiently and the Bluetooth broadcast was not enabled. I checked the documentation and found that the protocol stack needs to be started, but the corresponding buttons in my STM32Programmer are greyed out. I would like to know how to solve this problem. 当我将蓝牙协议栈烧录到新芯片上时,我的代码没有得到有效执行,蓝牙广播也没有启用。我查看了文档,发现协议栈需要启动,但是我的 STM32Programmer 中相应的按钮是灰色的。我想知道如何解决这个问题。
Hello,I'm trying to make an OnOff Switch emitter using zigbee on the STM32WB55 Nucleo Board. I started my project from the Zigbee_OnOff_Client_Distrib applications exemple.The receiver that I use is not made to send back APS ACK. Because of this I add problems with Toggle command on the OnOff ZCL Cluster because the emitter was sending frame retries.I figured out that I could disable Ack requirement in the APS Frame Control usingzigbee_app_info.onOff_client_1->txOptions &= ~(ZB_APSDE_DATAREQ_TXOPTIONS_ACK);after cluster allocation.Now, my problem is with the Zdo. In the find and bind process, I send a Simple Descriptor Request:// /** Simple_Desc_req */ // struct ZbZdoSimpleDescReqT { // uint16_t dstNwkAddr; /**< Destination network address */ // uint16_t nwkAddrOfInterest; /**< NWKAddrOfInterest */ // uint8_t endpt; /**< Endpoint */ // }; // Request simple descriptor struct ZbZdoSimpleDescReqT req_simple_desc; req_simple_desc.dstNwkAddr = zigbee_app_info.SW1_endpo
We have a Zigbee network, working as a coordinator, and we want to know which devices are connected. In order to know which devices are connected, we use this code: while (ZbNwkGetIndex(zigbee_app_info.zb, ZB_NWK_NIB_ID_NeighborTable, &neighbor, sizeof(neighbor), i++) == ZB_NWK_STATUS_SUCCESS) { if (neighbor.relationship == ZB_NWK_NEIGHBOR_REL_CHILD) { neigbors.device[neigbors.length].mac = neighbor.extAddr; neigbors.device[neigbors.length].address = neighbor.nwkAddr; neigbors.length++; if (neigbors.length >= MAX_DEVICES) break; } } And in order to remove a device from the network, we use this code: req.destAddr = device->address; req.deviceAddr = device->mac; req.flags = ZB_ZDO_MGMT_NWK_LEAVE_FLAG_REMOVE_CHILDREN; status = ZbZdoLeaveReq(zigbee_app_info.zb, &req, NULL, NULL); But several times, after remove a device, the device is still in the neighbor table.What's wrong? We should handle the network in other ways? Which is the best
hi there,i'm currently working on a project with the STM32WB1MMC, which is (as far as i know) based on a STM32WB15CCY.in final configuration there should be 9 services (incl. GAP and GATT) with all in all 17 characteristics.in now configured my 5th own service and encountering the following log outputi saw in the code that error 0x98 means BLE_STATUS_OUT_OF_MEMORY.after some recherche this leads me to the assumption that the gatt db size may be too small for my needs.now my question: what possibilities do i have to get my BLE configuration into this module.i tried increasing CFG_BLE_NUM_GATT_SERVICES, CFG_BLE_NUM_GATT_ATTRIBUTES and CFG_BLE_ATT_VALUE_ARRAY_SIZE but i can not add the desired services.in some cases the module does not even start.how can i determine the macimum VALUE_ARRAY_SIZE?is it possible to give the module more ram for holding the gatt database?thank you for your helpgreets peter
Hello,In my project, the initial Bluetooth scanning time (I am using STM32WB5MMG) takes around 10 seconds due to the GAP discovery procedure. Is there a way to reduce it to 5 seconds or less? I have tried adjusting the scan interval and scan window values, but they don't seem to make a difference—the scanning duration remains 10 seconds. Even if I need to manually terminate the scanning midway, I would like to know how to achieve a shorter scan time.Thanks
Hi AllI have the B-WL5M-SUBG1 board this uses the STM32WL5MOC mcu.The datasheet for the B-WL5M-SUBG1 board says that the RF switch uses PINS:SW_RFPC_5PC_3In the datasheet for the STM32WL5MOC I cannot locate SW_RF it does not exsit. Also in the datasheet for the B-WL5M-SUBG1 Table 18 I/O assignment there is no reference to SW_RF. I do see SW_CTL?PC_5 and PC_3 are not in the table. I assume these are interal. Help...
hello Communityplease help me i am using STM32WB55RG please verify the schematics using Chip antenna and UFL
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.