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
Hello ST Community,I am encountering an issue with X-CUBE-AI v10.2.0 (embedded in STM32CubeMX 6.14.0) when trying to deploy a PyTorch model with a custom layer to an STM32H7.I have enabled "Custom layer support" in the X-CUBE-AI settings. I am required to provide a JSON configuration file to map my custom ONNX node to my C implementation. However, I am unable to pass the Analyze step due to a JSON schema validation error.Environment:STM32CubeMX: 6.14.0X-CUBE-AI: 10.2.0Target: STM32H7Backend: ST Edge AI Core v2.2.0-20266My Goal: I need to map the following custom operator to a C function prefix:Operator Name: SpectralConvDomain: MyCustomImplementation Prefix: spectral_convHeader: custom_spectral_conv.hThe Issue: I keep receiving the error E010(InvalidCustomLayerImplementation) from stedgeai.exe. It appears the JSON format I am using is incorrect for this specific version of the core.Attempts:1. Using the "prefix" key (Standard Key-Value format):JSON { "MyCustom::SpectralConv": {
Dear ST Team,I would like to ask whether you provide any tools or recommended workflow to measure the accuracy drop of a neural network when converting a .tflite model into the STM32 binary format using STM32Cube.AI.I am looking for a simple way to compare the model’s performance before and after conversion (e.g., running the same test dataset on both versions and checking accuracy).Do you have any built-in tools, scripts, or guidelines to benchmark this accuracy difference?Best regards,Adam
Hello,First of all, I'm a newbie in STM32N6 boards, so I apologize in advance if my question is fairly basic.I am trying to deploy an application for object detection using the STM32N6570-DK.I am following the "Object Detection STM32N6 Model Deployment" tutorial from stm32ai-modelzoo-services/object_detection/docs/README_DEPLOYMENT_STM32N6.md at main · STMicroelectronics/stm32ai-modelzoo-services · GitHub.In my case, for testing I am trying to deploy the "yolov8n_256_quant_pc_uf_od_coco-person-st_tflite" file as the object detection model in combination with the Python script "st32ai_main.py". I planned to use my own YOLOv8-based object detector with other classes, but first I tried with an available tflite yolov8 model from ST and Ultralytics.Running the script I get the following output:(st_zoo) PS C:\Users\andres\Desktop\stm32ai-modelzoo-services\object_detection> python stm32ai_main.py --config-path ./src/config_file_examples/ --config-name deployment_n6_yolov8_config.
I want to train some small DL models with Nvidia's RTX 50 series GPU, which can work properly only with CUDA 12.x. I've learned that the CUDA 12.x is only compatible with ONNX Runtime 1.17.x or newer version. So I want to know if the X-CUBE-AI 10.2.0 support ONNX Runtime 1.17.x or newer version? If it can, I would like use the X-CUBE-AI 10.2.0 to deploy my DL models on the STM32 MCUs.
Hi,I am working on an STM32N6 project inspired by the peopleDetection example in which I try to run a yolov8 for instance segmentation.My pipeline uses camera (DCMIPP) + LTDC display + NPU inference (ATON / X-CUBE-AI).Each subsystem works correctly on its own:If I comment out the inference code in the main while, camera + LTDC work perfectly.If I comment out the camera/display code and keep only the inference (LED toggle + delay), the LED blinks, meaning NPU inference works correctly.This behavior is consistent when programming through CubeProgrammer.However, when everything is enabled at the same time, the display stays completely black.The portion of code that causes the issue is:LL_ATON_RT_Init_Network(&NN_Instance_Default);/* Run Inference */do{ll_aton_rt_ret = LL_ATON_RT_RunEpochBlock(&NN_Instance_Default);if (ll_aton_rt_ret == LL_ATON_RT_WFE){LL_ATON_OSAL_WFE();}} while (ll_aton_rt_ret != LL_ATON_RT_DONE);/* End of Inference */LL_ATON_RT_DeInit_Network(&NN_Instance_De
I’m currently testing the system with different configuration options, and I am trying to understand the impact of the --enable-epoch-controller option flag.Could you explain what functional or performance differences occur when this option is enabled versus when it is disabled?What I know so far is that when the option is enabled, the network_ecblob.h file is generated, and when it is disabled, the file is not generated.
Background:I am using the STM32N6570-DK board and trying to use the NPU for acceleration. For now, I want to run the official demo (x-cube-n6-ai-people-detection-tracking-main) to learn and verify the workflow. However, I have encountered some issues:1. When I debug and run the official x-cube-n6-ai-people-detection-tracking-main example directly in CubeIDE, the screen turns on but it only shows a gray display, as if the program is blocked or stuck somewhere.2. I have already programmed the network_data-dk.hex file to the board using STM32CubeProgrammer.I would like to know why the demo is not running correctly and what might be causing the program to get stuck.
Dear ST staff, Recently, while using STM32CubeMX with CubeAI to deploy the yolov8n_192_quant_pc_uf_od_coco-person.tflite model from object_detection onto the STM32N6570-DK development board. Subsequently, following CubeAI's configuration, I programmed the network_atonbuf.xSPI2.bin file into the 0x71000000 memory locationIt is worth noting that this model is of type float, not int8 quantisation (as I understand it), and both member pointers inLL_Buffer_InfoTypeDef's const float *scale; /**< */ const int16_t *offset;are NULL. This should indicate that the output requires no normalisation conversion.void MX_X_CUBE_AI_Process(void) { /* USER CODE BEGIN 6 */ LL_ATON_RT_RetValues_t ll_aton_rt_ret = LL_ATON_RT_DONE; const LL_Buffer_InfoTypeDef * ibuffersInfos = NN_Interface_Default.input_buffers_info(); const LL_Buffer_InfoTypeDef * obuffersInfos = NN_Interface_Default.output_buffers_info(); buffer_in = (uint8_t *)LL_Buffer_addr_start(&ibuffersInfos[0]
Hey!I have a ResNet model that I have deployed on my NUCLEO-N657X0-Q, and I want to run a training step on the board itself. I'm fine even with training just the last 1-2 layers of my model on a single sample, so that the memory on the board will suffice. Is the NPU itself capable of it? is there a assisting tool for on-board training? Is it more likely to succeed by using the ARM cpu for that?Thank you,Amir
Dear ST Team, I'm trying to deploy models on STM32N6570-DK, and there is the issue:Followed tutorial below:stm32ai-modelzoo-services/object_detection/docs/README_DEPLOYMENT_STM32N6.md at main · STMicroelectronics/stm32ai-modelzoo-servicesEncountered error message below:(st_zoo) PS C:\Users\ricky\git\stm32ai-modelzoo-services\object_detection> python stm32ai_main.py --config-path ./src/config_file_examples/ --config-name deployment_n6_ssd_mobilenet_v2_fpnlite_config.yaml C:\Users\ricky\anaconda3\envs\st_zoo\lib\site-packages\mlflow\utils\requirements_utils.py:12: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. import pkg_resources 2025-11-30 21:33:53.440551: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cuda
Hello,I have a solution which I am trying to port to STM32 MCUs which are able to run a machine learning/deep learning model. i wanted to know is it possible to generate a combined network.c from two models? Or do I have to generate multiple network.c files like network1.c, network2.c etc.How does it work? I have more than one(2-3) DCNN models.please adviceregards,
Hello ST team,I am currently trying to deploy an rPPG (remote photoplethysmography) model to the STM32N6 using the ST Edge AI Developer Cloud.My model’s input tensor has the following 6-dimensional shape:(B, 8, 3, 36, 36, 3)B = batch size8 = temporal frames3 = feature channels36x36 = spatial resolution3 = RGB channelsI uploaded a fully quantized ONNX model (int8_qdq.onnx) through the web UI and ran Analyze using a custom profile.However, the analysis fails with the following error: ST Edge AI Core v2.2.0-20266 2adc00962 WARNING: Unsupported keys in the current profile n6-allmems-O3 are ignored: memory_desc > memory_desc is not a valid key anymore, use machine_desc instead INTERNAL ERROR: Unexpected combination of configuration and input shape To help reproduce the issue, I have attach
Good day Folks, Firstly, is it possible to put NN weights on the external Flash, but not use it in memory mapped mode? BSP_XSPI_NOR_Init_t NOR_Init; NOR_Init.InterfaceMode = BSP_XSPI_NOR_OPI_MODE; NOR_Init.TransferRate = BSP_XSPI_NOR_DTR_TRANSFER; BSP_XSPI_NOR_Init(0, &NOR_Init); BSP_XSPI_NOR_EnableMemoryMappedMode(0); Secondly is it possible to run an AI model with NO flash access at all, i.e. to only use internal RAM for the case of a small model? I have an application that is already using the flash for storing data such as Logs & settings, via a XSPI Read/Write interface. However that interface is broken when configuring the flash to use the memory map. The image classification STM32N6570-DK example code runs fine and can use the external flash, however it then appears I can't use the Flash for anything else but the NN tables & weights. I then tried updating the .mpool to exclude using the Flash, but the model is then not working or giving the same inf
Device : STWIN.Box (steval stwbxcs1a) with DATALOG2 3.1.0 firmware. WIFI : Updated the MXCHIP firmware Objective: Running WiFi connection with APP and/or PnPL messages, Data retrieving with FTP. Currently this is my application as viewed in ST BLE Sensor app (iOS) I have first tried with the iOS app, it doesn't let me to use the Wifi connect button or disconnect. Then, I tried using PnPL messages with PythonSDK ( Board is connected by USB): message = PnPLCMDManager.create_set_property_cmd("wifi_config", "ssid", "Nothing")print(message)print(hsd_link.send_command(hsd_link_instance, device_id, message))message = PnPLCMDManager.create_command_cmd("wifi_config", "wifi_connect" , "password", "11223344")print(message)print(hsd_link.send_command(hsd_link_instance, device_id, message))message = PnPLCMDManager.create_set_property_cmd("wifi_config", "ip", "0.0.0.0")print(message)print(hsd_link.send_command(hsd_link_instance, device_id, message))time.slee
Hi,i'm currently working on a school project with the STM32n6570-DK and I'm pretty new into the STM scene. So my project will mainly be an object detection of different objects. The question is not directly about the STM, it's more about how to implement YOLO into STM. I heard something about the stm32-ai-model-zoo but I didn't go to deep into it yet. But is it possible to train a custom dataset with e.g. Google Colab and then implement it into STM or do I need a specific model-zoo file? And last but not least if someone has experience with STM32n6570-DK connected with YOLO, which YOLO version should I use? I heard YOLOv8n isn't that bad but I wanted to hear some more opinions. Hopefully someone can help me.Thanks for reading!Best Wishes
Hey!I'm trying to run my AI model on my NUCLEO-657X0-Q, following @Julian E. great guide in here.I have 2 questions:1. My model has some running issues during booting.In the FSBL code that suppose to jump to the application (JumpToApplication) there is some crash between the start of __set_MSP() and the start of _set_PRIMASK(), I would say it maybe an error in the pointer to the application code, but when I run it step by step in the IDE's debugger it works just fine.Do you have an idea of why would that happen / how to debug it? (I don't have printings at this stage, and turning in the LEDs in the middle of stack switch makes it fail in the debugger too).2. When my model do run (in the debugger) I get to the point where I start the epoch block, but no outputs / epoch end, and it just gets stuck in the loop. Does it happens because it's in debugger mode, or maybe my model is not compatible? when I validated it in CubeMX AI extension it looked ok.Is there any way to debug
Hello,Im trying to use the stedgeai generate command and want to move the data that gets located in the octoflash which seems to default to name=octoFlash offset=0x71000000 at times. Id like to relocate it at another position in the octoflash because i need to run several models. I tried adding the following that I found in an example and the output does not change at all from running it with the following options or not:--binary --address 0x810000or --binary --address 0x810000 --copy-weights-at 0xD0000000I found these examples via a search but as I said they dont seem to change the output.What am i doing wrong, I would like to change the default 0x71000000 to say something like 0x73000000, how can i accomplish this? I also tried to just change that in the network.c file, that didnt go well, just locked up the project at run time. Thanks
Hello STMicroelectronics Community,I’m excited to engage with this platform and explore the wealth of resources available here. STMicroelectronics has long been at the forefront of innovation in semiconductors and embedded systems, and this community is a great space to exchange knowledge, ask questions, and collaborate with experts.From product forums and knowledge bases to learning materials and developer news, the community provides essential tools for both beginners and experienced professionals. I’m particularly interested in exploring:Latest product updates and development toolsBest practices shared in the knowledge base and FAQsLearning opportunities for embedded systems, IoT, and microcontrollersNetworking and collaboration with other developersLooking forward to contributing to discussions, sharing insights, and learning from the expertise within this community.Thank you for maintaining such a valuable resource for developers and tech enthusiasts!
Hi I am using the STM32N6570 with AI application models. I have seen the STM Model Zoo and STM32 AI Services. In the services, the application code is generated automatically based on the model selected from the Model Zoo. My question is: how do I develop my own AI application from scratch in STM32CubeIDE, without using the Python scripts? I have already run the Python scripts and they work fine, but I want to know how to build the application manually from scratch in CubeIDE.
Dear STEnvironmentItem Version / Details BoardSTM32N6570-DKOSUbuntu 24.04 LTSPythonConda, Python 3.10STM32AI Model Zoostm32ai-modelzoo-services/object_detectionOperation modedeploymentModelyolov8n_256_quant_pc_uf_od_coco-person-st.tfliteSTM32CubeIDE1.19.0ST Edge AI Core / STM32CubeAI10.2.0Local tool/opt/ST/STEdgeAI/2.2/Utilities/linux/stedgeaiDescriptionI am using the STM32AI Model Zoo deployment workflow on Linux to deploy a YOLOv8 object detection model to the STM32N6570-DK.The deployment pipeline reaches the final flashing stage and aborts because no ST-LINK device is connected, even though all previous steps (Neural-Art, code generation, project patching) completed successfully.Console log excerpt building.. Debug flashing.. Debug STM32N6570-DK board programming is SKIPPED! -> No valid STM32 development board is connected (ST-LINK/swd port).. ... raise STMAICToolsError('Board programming failed!') E400: Board programming failed! Expected behaviorEven when
Hello, I am working with the STM32N6570‑DK discovery kit and using the ST Edge AI Developer Cloud to generate code for my neural network. The tool produces a project with multiple files (model, runtime, headers, etc.), but I am struggling to understand how to actually integrate this into my STM32N6 application.Specifically, I would like to know:What is the expected input format (tensor dimensions, quantization type) and how do I feed my sensor/camera data into it?How do I retrieve the output from the inference (classification vector, bounding boxes, etc.) and use it in my application logic?How should I connect the generated code with my application (main loop, data acquisition from camera/audio, etc.)?I have looked through the STM32N6 examples and documentation, but they don’t clearly explain how to bridge the generated AI code with a working application. Any guidance or pointers to documentation/examples would be greatly appreciated.Thanks in advance!
Hello,I am trying to test a deployed application for object detection.I have tested out of the box object detection application code.I can successfully build the project and I can run the code on my board.Unfortunately it doesn't detect any objects. It is supposed to detect person but it never detected.I have tried to use different pre-trained models and built and run them successfully but none of them work.The screen shows the live camera image, shows inference value and detected object number is always zero.Is there anything that I miss? By the way, the factory demo AI application works perfectly, it successfully detects people. So the hardware is OK.
Hi,I’m working on benchmarking and deploying a 33 MB half-INT8 model. During benchmarking, the measured inference time in ST dev cloud was about 264 ms. However, after compiling the model locally using STEdgeAI and deploying it, the inference time was found to be 405 ms.Additionally, when using the “Generate Code” option in the ST Dev Cloud, the generated artifacts—when deployed—showed the same inference time of 405 ms.I have verified that the weight and activation memory allocations are consistent with those used in the ST Dev Cloud (please refer to the attached logs).Could you please confirm whether this difference in inference time is expected, or if there is a known delta that should be addressed?logs:ST Dev cloud:>>> stedgeai analyze --model arcface_halfint8.tflite --st-neural-art custom@/tmp/stm32ai_service/7369b431-60e1-4924-9783-5f76cbd6b229/profile-27ac5fbe-1304-4c95-9d4e-44268ad9580f.json --target stm32n6 --optimize.export_hybrid True --name network --works
Hello,I am trying to run a Transformer model with Multi-head self attention on the STM32N6570-DK board.The model is this one : https://github.com/arx7ti/cold-nilmHere is what I did so far:Convert the .ckpt I got from the above repo into a .onnx format.Import and Quantize the model using your ST Edge AI Developer Cloud tool.Try to use stedgeai `generate` command:From the standalone tool on my Linux machineFrom STCubeMX plugginFrom the ST Edge AI Developer Cloud--> None of thoses attempts were succesful. Here is the command I used in the first case:stedgeai analyze --model cold_stm32_float32_final_ready_PerChannel_quant_random_1.onnx --st-neural-art default@user_neuralart_STM32N6570-DK.json --target stm32n6 --name network --workspace workspace --output outputI got several issues that I tried to fix in order to make the Developer Cloud tool quantize my initial onnx model:Removing Constant operationsConverting LayerNormalization layers in compatible layersRemoving Pow operatio
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.