Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and find answers on how to deploy, debug, and optimize AI models on ST microcontrollers, microprocessors, and smart sensors.
Most recent activity
Hi, Summary. The ONNX importer in ST Edge AI Core 2.2.0 (X-CUBE-AI 10.2.1) ignores the dilations attribute of Conv. It applies the padding but convolves as if dilation = 1, so the output length is L + 2*pad - (k-1) instead of L. The TFLite importer handles the same operator correctly. Minimal reproducer (attached, 51 KB): a single Conv1d(64->64, kernel 3, dilation 4, padding 4), input 1x64x80. The ONNX node is Conv {pads:[4,4], strides:[1], dilations:[4]}. Per the ONNX spec the output is (80 + 4 + 4 - ((3-1)*4 + 1)) / 1 + 1 = 80. PyTorch and onnxruntime both produce 1x64x80. stedgeai analyze --model dil_f32.onnx --target stm32u5 | model handed to stedgeai | reported output | expected | |------------------------------------------------------|-------------------------|--------------| | ONNX float32 | f32(1x64x86) | 1x64x80 | | ONNX int8 QDQ (per-channel) | int8(1x64x86)
Hi,I am trying to use NanoEdge AI to develop an N-class fault classification model for helical gearboxes that will eventually run on an STM32 MCU.The challenge is that I have many different helical gearboxes, and their physical parameters vary significantly, including:Input RPM and output RPM Gear ratios Number of teeth Bearing types and sizes Gearbox dimensions and load capacitiesI currently have around 20 fault classes that I would like the model to detect.Has anyone successfully created a generalized model that can classify gearbox faults across multiple gearbox variants rather than training a separate model for each gearbox?What would be the recommended approach in NanoEdge AI for handling such variability while still achieving good fault classification accuracy on embedded hardware? Any guidance, examples, or best practices would be greatly appreciated.Thanks!
Hi all,I’m trying to follow this guide here but when I try to run the model on target I always got an error failed to erase memory.Here is the log. I’ve also set external loader from cubeprogrammer to MX66, and if I try to erase memory from cube programmer I also have an error, loose comunication with the boardSaving workspace.[36m[01m -------------------------------------------------------------------[39;49m[0m[36m[01m STM32CubeProgrammer v2.23.0 [39;49m[0m[36m[01m -------------------------------------------------------------------[39;49m[0m[39;49m[0m[90mST-LINK SN : 004700233234510E37333934[39;49m[0m[90mST-LINK FW : V3J17M11[39;49m[0m[90mBoard : STM32N6570-DK[39;49m[0m[90mVoltage : 2.75V[39;49m[0m[90mSWD freq : 8000 KHz[39;49m[0m[90mConnect mode: Under Reset[39;49m[0m[90mReset mode : Hardware reset[39;49m[0m[90mDevice ID : 0x486[39;49m[0m[39;49m[0m[39;49m[0m[39;49m[0m[90mRevision ID : Rev B[39;49m[0m[39;49m[0m[39;49m
We have been evaluating the pre-trained model yamnet_e1024_64x96_tl_qdq_int8.onnx from the STM32 Model Zoo (ESC-10 variant) and noticed a potential discrepancy between the class label order in the provided YAML configuration and the actual output behaviour observed on target.While the model itself appears to perform well, the mapping between output indices and class names does not seem to match the order documented in the YAML file. Observed behaviour:The YAML file lists the classes as:0: dog1: chainsaw2: crackling_fire3: helicopter4: rain5: crying_baby6: clock_tick7: sneezing8: rooster9: sea_waves However, on our target, the outputs appear to correspond to the following order:0: chainsaw1: clock_tick2: crackling_fire3: crying_baby4: dog5: helicopter6: rain7: rooster8: sea_waves9: sneezing This is consistent across multiple input samples, which makes us suspect a systematic label remapping rather than random misclassification. Preliminary hypothesis:We suspect that this could be caused
Subject: YOLOv8n ONNX conversion fails with "region 'ROM' overflowed by 5601536 bytes" on STM32N6570-DKI am trying to convert and generate a YOLOv8n ONNX model for the STM32N6570-DK using STM32Cube AI Studio / ST Edge AI Core.My target configuration is:Board: STM32N6570-DK Accelerator: ST Neural-ART RAM: 4200 KB Internal Flash: 0 KB External RAM: 32 MB External Flash: 128 MB Mode: On targetHowever, the generation fails with the following error:region 'ROM' overflowed by 5601536 bytesSince the STM32N6570-DK has 128 MB of external Flash, I would like to understand why the ROM region overflows and whether the model/data can be placed in external Flash.What memory configuration or settings should I use to deploy YOLOv8n on the STM32N6570-DK?I have attached the complete log and the ONNX model. YOLOv8n Data↓https://github.com/ultralytics/assets/releases/download/v8.4.0/yolov8n.pt
Context : I want to write a FSBL load and run application on a custom minimal PCB based on STM32N6-DK design. The board uses SMPS power supply and not the default power supply of the STM32N6-DK. I follow this original tutorial as a main example. Problem faced: CubeProgrammer SigningTool version compatibility and header size 1) Write a custom external bootloader to write and read external flash memoryModify the power supply parameter (System Core --> RCC --> SupplySource) in CubeMX to `PWR_SMPS_SUPPLY`Generate ExtMemLoader template from CubeMX Build ExtMemLoader to generate .stldr filemake sure the post build script can be executedmanually copy the .stldr file generated in `/STM32CubeProgrammer.app/Contents/Resources/bin/ExternalLoader/` if necessary 2) Modify SigningTool header generation command in FSBL post-build Build FSBL & Application following the original tutorialCheck heading size, it might be different from the 0x400 that is defin
Hi,I was trying to figure out how to use external memory and flash with xcubeai, and I found a video posted by STM32 says there is an example food recognition code in stm32ai-modelzoo-services on Github. However, I couldn't find it. Was it deleted?thanks.
HelloST Edge AI: Guide for STM32MPU 、 Section 3.2.1. Referring to “Generate NBG from TensorFlow™ Lite or ONNX,”I converted the .tflite file downloaded from ModelZoo to .nb, but I’m getting an error.$ /opt/ST/STEdgeAI/4.0/Utilities/linux/stedgeai generate -m ./yolov8n_256_quant_pc_uf_od_coco-person-st.tflite --target stm32mp25ST Edge AI Core v4.0.1-20581 7ed50de05E102(CliArgumentError): stm32mp25 not recognized as target. Supported targets areispu --device DEVICEmlcstm32f4stm32l4stm32l4pstm32g4stm32f3stm32wbstm32n6 [--st-neural-art]stm32f0stm32l0stm32g0stm32c0stm32wlstm32v8stm32u3 [--hsp]stm32h7stm32f7stm32u5stm32l5stm32h5stm32c5stm32mp157cIf you change the target name slightly, you'll get the following error: $ /opt/ST/STEdgeAI/4.0/Utilities/linux/stedgeai generate -m ./yolov8n_256_quant_pc_uf_od_coco-person-st.tflite --target stm32mp2ST Edge AI Core v4.0.1-20581 7ed50de05E102(CliArgumentError): stm32mp2 is not availableCould you tell me how to convert a .tflite file to
Hi everyone, I have a N6 Discovery Kit with a camera. Additionally, I have an N6 Nucleo Board. Now I want to use the CubeMX and CubeIDE to capture a frame on the Nucleo with the camera. I copied most of the things from the `DCMIPP_ContinuousMode` example but I still can't get it working... The I2C communication works (over I2C2) CAM_NRST => GPIO O5 get set to high. CAM_EN => GPIO A0 get set to high. Then I successfully call the IMX335_Probe(..) And finally, it fails here: https://github.com/rphii/NUCLEO_N6_DCMIPP_MB1854B/blob/main/Appli/Core/Src/main.c#L137 (contains the full, minimal, reproducible code) I never get into the `HAL_DCMIPP_PIPE_FrameEventCallback`... If anyone has more experience with the DCMIPP and CSI-2 (which is both new to me) and could help, it'd be greatly appreciated, thanks!
This account only shares restored community content posted by members between May 22 and June 9, 2026, who did not register for the new community.Dear ST Community, I'm trying to integrate my ST Edge AI model C code (generated from ST Edge AI Cloud) to my current application.- Part Number: STM32F411CE6- Environment: STM32CubeMX: 6.17; ST Edge AI Core v4.0.0-20500 359356bb0- Detail of my issue: At line 63 below: huart2.Instance = 0x40004400 After successfully execute stat_network_run() (line 65): huart2.Instance = 0x582cc4de -> This causes Bus Fault to be triggered in line 70. My main function: void print_to_uart(UART_HandleTypeDef *huart, const char *format, ...) {char buffer[256];int cx;va_list args;va_start(args, format);cx = vsnprintf(buffer, sizeof(buffer), format, args);va_end(args);if (cx >= 0 && cx < (int)(sizeof(buffer))) {HAL_UART_Transmit(huart, (uint8_t*) buffer, cx, 1000);} }// ...STAI_ALIGNED(STAI_NETWORK_CONTEXT_ALIGNMENT) static stai_network net
Hello, I have just updated STM32CubeAI Studio to version 1.2. In the previous version, the AI Studio generated: Middleware Application code Raw files (e.g., network_atonbuf.xSPI2.raw) My workflow was to add the middleware and application code to my project, then convert the raw file (network_atonbuf.xSPI2.raw) to a hex file. Everything worked fine until I updated the studio. In version 1.2, instead of generating the raw file, it now generates a C source file: network_atonbuf.xSPI2.c. I am unsure what to do with this new .c file. I placed it in my project, but nothing works as expected. Could someone please advise on how to proceed or explain the change in workflow?
EnvironmentI am trying to deploy a U-Net segmentation model on STM32N6 using ST Edge AI Cloud.ST Edge AI Core:ST Edge AI Core v4.0.1-20581Target:stm32n6Current StatusThe model conversion and quantization steps complete successfully.The workflow is:PyTorch U-Net ↓ONNX FP32 export ✓ successful ↓Per-channel quantization ✓ successful ↓ST Edge AI optimization / Neural-ART compilation ✗ failedTherefore, the issue does not occur during ONNX export or quantization.The failure happens specifically during the Neural-ART optimization/compiler stage.Model ArchitectureInput:[1, 3, 320, 320]Output:[1, 1, 320, 320]The network is a U-Net-like segmentation architecture.Encoder channels:64 → 128 → 256 → 512Bottleneck:1024Decoder channels:512 → 256 → 128 → 64Each convolution block consists of:Conv2D→ BatchNorm→ ReLU→ Conv2D→ BatchNorm→ ReLUDownsampling:MaxPool2Dkernel_size = 2stride = 2Upsampling:ConvTranspose2Dkernel_size = 2stride = 2The encoder feature maps are concatenated with the
Hello,I am trying to create a custom AI model and run inference on the NPU of an STM32MP255F.At the moment, my goal is only to verify the model creation workflow. Therefore, inference accuracy is not important yet.Environment Target device: STM32MP255FInference engine: NPUNumber of training images: 116 (mouse images)Steps1. Dataset creation with RoboflowAnnotated all images. Resized images to 256x256. Exported the dataset in YOLOv8 format.2. Training and export with UltralyticsTraining:yolo detect train data=data.yaml model=yolov8n.pt epochs=100 imgsz=256Export:yolo export model=runs/detect/train/weights/best.pt format=onnx imgsz=256 quantize=8 data=coco83. Conversion with ST Edge AI Developer Cloud Uploaded the exported model to ST Edge AI Developer Cloud. Selected the platform: "STM32 Microprocessors embedding Cortex-A loaded with X-LINUX-AI" Executed Optimize. However, the following error is displayed and no .nb file is generated:Error while generating optimized file. Generation
Hi,I recently erased the external flash of my STM32N6570-DK board while experimenting with STM32CubeProgrammer, and I'd like to restore the original out-of-the-box demo (the multi-application menu demo with image classification / pose estimation / face detection etc.).I found the "n6-ai-demos" entry under Tools & Software on the product page, but clicking "Get latest" leads to a 404 page not found error.Could someone please:Confirm whether this link is currently broken on ST's side, or Share a direct working link / attach the "STM32N6570-DK Out-of-the-box demo binary" fileBoard info:Board: STM32N6570-DK, Revision ID Rev Z Device ID: 0x486Thanks in advance!
Dear ST Edge AI Support Team,We are deploying a YOLO11n person-detection model on the STM32N6 NPU using the relocatable(LRUN) generation flow. While decoding the generated runtime buffer descriptors on-target, wefound that the top-level *input* user-IO buffer's channel-position metadata disagrees with itsown reported memory shape, and does not change when explicitly requesting a channel-last inputlayout.Configuration Target: STM32N6 ST Edge AI Core v4.0.1-20581 7ed50de05 Model: yolo11n_256_quant_pc_uf_od_coco-person-st.tflite (quantized, uint8 input, 256x256x3) stedgeai cli command (as echoed by network_generate_report.txt): "stedgeai generate --model yolo11n_256_quant_pc_uf_od_coco-person-st.tflite --relocatable split --target stm32n6 --no-inputs-allocation --no-outputs-allocation --optimization balanced --st-neural-art user_profile@profile-neural-art.json --name network --verbosity 1 --c-api st-ai --inputs-ch-position chlast --workspace ./workspace --output ./outputs"Issue
I am integrating X-CUBE-AI and the STM32H7 Safety STL into the same STM32H743 Keil/ArmClang project.The X-CUBE-AI Keil runtime requires short enums and 16-bit wchar_t (-fshort-enums -fshort-wchar). However, the Safety STL library appears to require full-size enums and 32-bit wchar_t.Configuring the project for X-CUBE-AI causes the Safety STL library to fail linking. Configuring it for the Safety STL causes Arm linker ABI errors when linking the X-CUBE-AI runtime, including enum-size and wchar_t mismatches.Is there an officially supported compiler configuration or compatible library variant that allows X-CUBE-AI and the STM32H7 Safety STL to coexist in the same ArmClang application?
Hello,I’m using STM32Cube AI Studio to optimize and validate an ONNX model on a NUCLEO-N657X0-Q board. In general, everything works fine. However, I would like the board to be configured in overdrive mode (npu_freq = 1000MHz, mcu_freq = 800MHz) by Cube AI Studio for the validation runs on the target because I’m hoping to achieve a better inference time.When executing new “runs” in Cube AI Studio, the device attributes are always as seen in the screenshot below.Results overview of a run in Cube AI StudioIf I use the the ST developer cloud to optimize and benchmark my model with the STM32N6570-DK board (because the NUCLEO-N657X0-Q is not available in the DC), the device attributes are as follows:Device attributes for the benchmark in the developer cloudSince those two boards have the same STM32N657X0H3Q MCU, I expect a similar inference time on my NUCLEO-N657X0-Q board with Cube AI Studio if I could just activate the overdrive mode. I didn’t find any settings in the Cube AI Studio user i
Somesays ago, I successfully used STM32Cube.AI Studio to deploy a model to an STM32U585CIU6 board and test it.However, yesterday evening I upgraded STM32CubeIDE, STM32CubeProgrammer, and STM32CubeMX. After that, when I tried to run the same process again, I started getting an error.I searched online and found some similar cases. The suggested solution was to update all related software, so I updated the tools accordingly. However, the same error still occurs.I also tried using another laptop. On that laptop, I performed the same software upgrades and then tested with an STM32H743VIT6 board, but the same error occurred there as well.Because of this, I suspect that I may have missed updating some required software or package.Has anyone experienced this issue before or found a solution? I would greatly appreciate any advice or guidance.ps : stedgeai version is v4.0.1.
我在尝试用STM32Cube AI Studio运行一个STM32F407ZGT6项目时遇到了“启动失败运行”错误,我不确定问题的原因。一开始运行正常,但之后错误一直出现。使用“主机”模式时,它正常工作。2026-07-13 10:49:46 错误:以下路径中找不到4.0.0版本的可执行文件:C:/*ST*/*STEdgeAI*/4.0,C:/*ST*/*STEdgeAI*/*2026-07-13 10: 49:47 错误:以下路径中找不到4.0.0版本的可执行文件:C:/*ST*/*STEdgeAI*/4.0,C:/*ST*/*STEdgeAI*/*2026-07-13 11:14:59 错误:从公共IP获取国家时出现错误:获取失败2026-07-13 11:15:00 错误:以下路径中找不到4.0.0版本的可执行文件:C:/*ST*/*STEdgeAI*/4.0,C:/*ST*/*STEdgeAI*/*2026-07-13 11:15:01 错误:以下路径中找不到4.0.0版本的可执行文件:C:/*ST*/*STEdgeAI*/4.0,C:/*ST*/*STEdgeAI*/*
In file included from Middlewares/ST/AI/Misc/Src/ai_device_adaptor.c:19:Middlewares/ST/AI/Misc/Inc/ai_device_adaptor.h:655:8: error: unknown type name 'UART_HandleTypeDef'; did you mean 'DMA_HandleTypeDef'? 655 | extern UART_HandleTypeDef UartHandle; | ^~~~~~~~~~~~~~~~~~ | DMA_HandleTypeDefMiddlewares/ST/AI/Misc/Inc/ai_device_adaptor.h: In function 'port_io_get':Middlewares/ST/AI/Misc/Inc/ai_device_adaptor.h:664:12: error: implicit declaration of function 'HAL_UART_Receive' [-Wimplicit-function-declaration] 664 | status = HAL_UART_Receive(&UartHandle, (uint8_t *)c, 1, timeout); | ^~~~~~~~~~~~~~~~Middlewares/ST/AI/Misc/Inc/ai_device_adaptor.h: In function 'port_io_write':Middlewares/ST/AI/Misc/Inc/ai_device_adaptor.h:676:12: error: implicit declaration of function 'HAL_UART_Transmit' [-Wimplicit-function-declaration] 676 | status = HAL_UART_Transmit(&UartHandle, buff, count, HAL_MAX_DELAY); | ^~~~~~~~~~~~~~~~~make: *
Hi ST Community,I am working with an STM32N657 and would like to use the integrated NPU directly from my own C/C++ application.I understand that X-CUBE-AI together with the Neural-ART can generate the code required to execute a neural-network model on the STM32N6 NPU.However, I would like to understand whether it is possible to use the NPU without X-CUBE-AI.Does STM32CubeIde provide HAL APIs that allow an application to directly initialize, configure, load, and start the STM32N6 NPU?
Hello everyone,I am encountering errors when running Semantic Segmentation, Object Detection, and Pose Estimation models on my STM32N6570-DK board using STM32 Model Zoo Services. Here are the details of my setup and the errors I am facing:Hardware and Versions:Board: STM32N6570-DKModels: Semantic Segmentation, Object Detection, Pose EstimationTools: STM32Cube.AI 4.0.0, GCC 14.3.1, HAL 1.3.0, STMCubeIDE 2.1.1I followed the README instructions from the STM32 Model Zoo Services repository to test the mentioned models. I compiled and flashed the firmware onto the STM32N6570-DK board.Errors Encountered: plaintextCopyBus interface interrupt BUSIF0 ERR: 0x0 BUSIF1 ERR: 0x20 Epoch Controller ERROR interrupt: EC_IRQ = 0x0000000a Epoch Controller opcode counter: 0x00000000 Epoch Controller label: 0x00000000 ATON_STD_IRQHandler()@871: irqs=0xlx assertion "0" failed: file "[...]/stm32ai-modelzoo-services/application_code/.../ll_aton_runtime.c", line 875, function: __LL_ATON_RT_IrqErr&nb
hey i am struggling to flash by custom onnx model on stm32N6570-DK . I tired using the stm32 cube ai cloud website but it only gives me option to generate c code and not a project or elf file . So i shifted to stm32cube Ai studio but it keeps me throwing this error - (*) 'input'/'output' buffers are allocated in the activations bufferRunning the ONNX model...Running the ST.AI c-model (AI RUNNER)...(name=network, mode=TARGET)E200(ValidationError): TARGET: Unable to bind the ST.AI runtime with "network" c-model: [] E801(HwIOError): Invalid firmware - COM3:115200 can anyone help me to get started with the same
Hi ST Community, I am trying to deploy a YOLO-FastestV2 INT8 object detection model on the STM32N6570-DK. The model is successfully converted and runs on the board, but I am facing issues with the detection results.Model InformationModel: YOLO-FastestV2 (INT8) Number of classes: 6 Parameters: 235,120Model InputInput_0_out_0uint8 [1,1,320,320]Model OutputsQuantize_297_out_0int8 [1,12,20,20]Quantize_313_out_0int8 [1,3,20,20]Quantize_311_out_0int8 [1,6,20,20]Quantize_330_out_0int8 [1,12,10,10]Quantize_346_out_0int8 [1,3,10,10]Quantize_344_out_0int8 [1,6,10,10]Issues I am FacingThe bounding boxes are not displayed at the correct positions on the camera image. The detected bounding boxes appear to be shifted or incorrectly scaled. Even when the camera is not viewing any object (or the camera feed is unclear), random bounding boxes continue to be displayed. These false detection remain on the screen even though there should be no valid detection.Verification PerformedI also tested the quanti
Hi,I am working on a project using STM32H743ZITx and trying to deploy an ONNX model using X-CUBE-AI.My .ld file was doing just fine until I add the X-CUBE-AI in the middleware. It will split the BSS range across DTCMRAM and AXI‑RAM. The startup file’s BSS‑zeroing logic accesses invalid non‑hardware‑backed addresses between the two RAM regions and results in a HardFault right after Reset_Handler.My configuration is:MCU: STM32H743ZITx STM32CubeMX: 6.18.0 STM32Cube FW_H7: 1.13.0 STM32CubeIDE for Visual Studio Code: 3.9.0 Enabled X‑CUBE‑AI 10.2.1Files before and after the configuration of X-CUBE-AI are attached.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.