Steval-FCU001V2 FCU board and Steval-drone02 Drone kit issues
Hi,
for a project involving a custom educational flight controller, I need to use the following hardware:
- steval-FCU001V2 board
- steval-drone02 drone kit
For clarity, here are st product page links that i used.
Steval-drone02 Drone kit companion:
https://www.st.com/en/evaluation-tools/steval-drone02.html
Steval-FCU001V2 FCU board:
https://www.st.com/en/evaluation-tools/steval-fcu001v2.html
My main issues are as follows: I can’t get it to fly with the factory-loaded firmware, and I can’t even reload the firmware.
I followed the UM3117 manual to assemble the kit and perform the initial tests. Compared to the materials and manuals available for version V1 of the drone kit and the Steval FCU001V1, this one seems less comprehensive, and in some images the connections aren’t very clear.
When I connected the motors according to the manual, I found that the motors with white and black wires (motors that should rotate CCW) are reversed compared to the manual; if wired as per the manual, the propellers push air upward instead of downward… so I connected the motors with the white and black wires reversed from what was indicated. (I saw an errata sheet mentioning something like this, but only for a specific batch of version 1; but nothing for v2....) And by doing this, the motor rotation makes sense. Could there be other hardware manufacturing defects?
The board already had the factory firmware, and with that I couldn’t get it to take off using the ST_BLE_DRONE app or stay stable in flight; it only rises about 2 cm, spins in place, or sometimes accidentally hovers at a height of 2 cm but spins wildly in yaw, making circles, and then crashes into something.
I downloaded the reference firmware from the STM website, “STSW-FCU001 Reference Design Firmware for Mini Drones,” at the link https://www.st.com/en/embedded-software/stsw-fcu001.html
This appears to be the firmware on the device, as when I connect a UART-USB adapter to the FCU’s P7 connector on the serial terminal, I see printf debug output that exactly matches the version and date in the printf line in main.c
Thinking it might be a PID or parameter issue, I connected an H7 core board to use solely as an STLink and debugger via STM32CubeProgrammer (removing the power supply and reset jumpers from the MCU on the core board) to reload the FW.
The programmer connects successfully and correctly detects the target MCU as the STM32F401 on the FCU board, but when attempting to read the flash to save an existing program, it reads all 0x00000.
Furthermore, upon checking, it appears that the control bytes are incorrect, enabling a flash read/write protection that should not be present. in flied "Read Out protection" RDP i see value 0 when it should be AA or BB or CC and in "Write protection" all WRP0 to WRP5 are unchecked meaning write protection active.
Furthermore, when manually setting the read protection to inactive and clicking “Apply,” the programmer freezes and the program stops responding, so I can’t even modify them… I can’t even perform a full flash erase; the sector erase always fails.
This makes me suspect that the option bytes might be corrupted in the default firmware that was loaded, or that they have been modified in some way I can’t explain—simply connecting a programmer doesn’t alter them on its own. At this point, I’m not sure how to recover the device if they cannot be reset or modified through the programmer. This could potentially mean the MCU is effectively locked, and the only workaround might be replacing it with a fresh, non-compromised one—which is obviously not ideal.
- Has anyone managed to get it flying with the default firmware, or can anyone provide their final wiring diagrams or modifications made to the firmware and hardware to get it flying correctly? Which motor should be connected to which part of the frame, and in which direction should it be connected to connectors P1, P2, P4, and P5?
- Has anyone successfully reprogrammed the MCU, or encountered a similar issue and managed to resolve the flash lock problem? What programmer or setup did you use?
- Are there other ways to reset the flash and fix any corruption so I can load the FW again?
- Is there a correct procedure for importing the reference project and modifying the IOC settings without corrupting it? I was able to successfully import the project into the STM32 Cube IDE using the version prior to 2.xxx, specifically 1.19.0. However, if I open the IOC settings, the project no longer compiles; the middleware folders get altered, and if I try to add a peripheral or change any settings in the IOC, the project and necessary includes get corrupted, resulting in numerous compilation errors… When opening the IDE, there’s an option to “Continue” to remain compatible or “Migrate,” but nothing changes—in both cases, the project gets corrupted.
- Also, regarding the reference firmware, I don’t understand which modules or folders are auto-generated by the IDE used in the past by the firmware developers, or if it’s all custom code imported or copied from another project and manually adapted without enabling auto-generated driver generation.
The most recent changes and revisions to the drone kit documents date back to 2025, So it should still be supported, right?
In addition, many people have encountered similar issues, as I’ve seen on other pages and in other discussions, but it’s unclear whether or how they’ve been resolved.
It’s a bit of a shame because it’s a great kit with everything you need, open HW and FW to start play and do your FCU, but getting started with it seems very laborious… especially if there are already these initial issues.
I hope I've made myself clear, and that this might also serve as a starting point for solving other people's problems
Thank you for any suggestions or help!
