Skip to main content
Associate
March 25, 2026
Solved

Steval-FCU001V2 FCU board and Steval-drone02 Drone kit issues

  • March 25, 2026
  • 2 replies
  • 233 views

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.

Manual:
https://www.st.com/resource/en/user_manual/um3117-how-to-build-your-own-minidrone-with-the-stevaldrone02-and-stevalfcu001v2-stmicroelectronics.pdf

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!

Best answer by Elektrooon

Hi, here is an update of the situation:

BOARD PROGRAMMING PROBLEM

The problem of programming the steval-FCU001V2 FCU board using a NULCEO 144 board as programmer/stlink has been solved by "bending" the reset signal pin on connector CN5 so that with the connector present in the kit (making connection from CN5 nucleo to P8 board FCU) the reset signal is not connected. Removed the reset signal as said before, now from stm cube IDE and from stm 32 cube programmer it is possible to flash new code and read the flash without problems.

The problem had to be with the connection with reset signal, the adapter present in the kit seems made for STLINK V2 or for V3 in version STLINK-V3SET, I having only nucleo H7 board or STLINK-V3MINIE but with connector with more pins and therefore not connectable I had to find this method.

Probably to program the FCU board only connections with lines GND, SWD and SWCLK are enough to program and debug MCU. The reset maybe only makes problems and must not be connected.


FLIGHT PROBLEMS, IMPOSSIBILITY TAKEOFF

I managed to reduce the flight problems by doing some modifications to the FW and using well BLE DRONE app and I discovered/executed the following things:

The button "Takeoff" and "Land" indicated in the info window and cited in many posts for its absence in the app is correct that it is not present since in the FW these buttons are not managed and ignored and are not needed, so there is not this problem. It is enough only to increase throttle and that's it.

I was not able to make it lift more than 2 cm from the ground and I was not able to control the drone but analyzing the FW in the file "flicht_control.c" at line about 280 there is the following line:

motor_thr = ((int16_t) (0.05f*(float)gTHR + 633.333f));

this operation in practice maps throttle coming from the app from 0 to 1900 scaling it and applying an offset that in practice should be a PWM value close to making the drone takeoff and stay in hover.
In fact in the code every pwm lower than MIN_THR default 200 is as 0 trottle, this can bring to cases where either motors do not turn on or that they turn on and the drone goes up directly.
Modifying as follows I obtained a greater finesse and more control:

motor_thr = ((int16_t) (0.4f*(float)gTHR + 200.0f));

in practice now effective pwm that system receives should be a value from 200 to about 1000.

In the code many parameters and code are present but commented in version for other drones or setup used by st for some tests I think, and maybe even if there are default values for the official drone frame it could be necessary to modify some things as said before.

Maybe the default settings are a bit too reactive and for sensitivity of someone to the remote with already experience or that knows well the drone, so the PID system values in flight_control.h already present could be necessary to decrease or modify. For example now my drone lifts but tends to rotate on itself first little and then more and more, so I would modify PID of yaw decreasing proportional and integral part.

Some hints on tuning of FW parameters and how to do parameter change are here for version V1 (https://www.st.com/resource/en/product_presentation/steval-drone01_getting_started_guide.pdf) but are applicable also to V2.

In any case the FW of the stm32 cube ide project present on product page (https://www.st.com/en/evaluation-tools/steval-fcu001v2.html#tools-software) is the same as the default already present at purchase on the board. pay attention to use code for V2 since folder contains both V1 and V2.

Buying a second drone kit to have spare parts I received a kit with 4 identical motors with white and black wires, without the presence of the two motors with red-blue wires that rotate in the other direction.
In the first kit bought I had instead found the inversion of white and black wires of the motors, since if connected as in the manual image these rotate in a way to push air up instead of down.

I would recommend well to everyone to execute double check of motors and polarity without relying only on the images.

To verify the correct positioning of motors I suggest to add at the beginning of custom code a check where motors are turned on one by one in sequence from 1 to 4 with very low PWM only to verify that motor that turns on is the one positioned in the right place on the frame as per manual and that it rotates in the correct direction CW or CCW correct (like 1 second at pwm 200). If you add this code pay attention to timer interrupt routines that periodically update and overwrite pwm of motors so if you want to test this thing comment all timer callback otherwise you then set a value and interrupts modify it and motors do not work. Then remember to put back the code as before at end of test.

 

SUMMARY

  • If you want to reprogram the board pay attention to the signals you connect and pay attention that reset signal does not disturb or alter communication with debugger/stlink. I solved by removing completely reset signal, not connecting it.
  • FW provided by st is ok but probably some parameters in the code must be fixed and modified as said before for a more smooth use and to solve problems of hover and climb of the drone. Check especially the line of code that maps throttle and PID values of single axes proportional and integral in my opinion too high.
    It is not said that motors of the kit vary a bit and pwm necessary for hover is not anymore the one of default code.
  • App DRONE BLE has all the buttons necessary for the use of the drone. Even if arming and calibration button I would have made them bigger, it already happened to me to have to turn off the drone because it crashed but not being able to press well ARMING button to deactivate them.
  • Check and verify motor pinout and wiring to FCU board connectors. Check to put the propellers on correct motors and to insert them on the motor shaft.
  • From experience put a drop of hot glue on the wires coming out of the motors to keep them together and protect them from possible pulls and excessive bending that break them, it already happened to me that motor rotates in the housing and twists the wires cutting clean the motor wires or that because of a pull one motor wire detaches and then it is rather difficult to fix.
  • Do not forget the battery attached to the board if you do not use it.
  • Pay attention that drone frame is not symmetrical and that propeller guards have fins with certain inclination and orientation, pay attention from images in which orientation to rotate frame.
  • If you import fw project in stm 32 cube ide it may not compile immediately due to a line of code to comment manually for double declaration of something. Then it works.
    If you want to modify settings from IOC pay attention to overwrites or deletion of folders and files present in original project, you will notice because then there are problems of includes and functions not found.

 

IMPROVABLE ASPECTS AND CONSIDERATIONS

Since we're on the subject, here are a few aspects of the FCU board and the drone kit that could be improved:

APP BLE

-Size of calibration and arming buttons in DRONE BLE app should be increased. Fact that I must click for two seconds and button changes color but I have finger on it that covers it is not the best (on my phone is about a square of 6x6 mm)
-The help page contains useful information but the text is truncated in Italian and goes outside the screen impossible to read fully and It is unclear how sensitivity settings affect values
-It would not be bad to have a document with these indications in full and not truncated version

FW
-In manuals and in obtainable material it is well described at high level but some low level FW info is missing of which it is necessary to do a reverse engineering of the code to understand it and comments are not exhaustive. I do not know why for version V2 of FCU and FW there is more documentation and they do not report on the page of V2 also resources of V1 but that can still be useful since some information are not present in V2 manuals.

Drone kit
-In two kit products bought I already found two problems with motors, problems solvable but it is strange.
-The fixing system of the FCU board is not the best and being flexible frame it is easy that if it bends or during landings it comes out from the guides.

 

 

To conclude in any case it is a very nice drone kit this, complete for experimenting on HW and FW in drone field and certainly it is worth to continue maintenance and development of this kit!

With what said I hope to have been helpful for who is using this kit or will have to use it in future for a better experience with this kit with a lot of potential but to understand how to use at best.

2 replies

Karl Yamashita
Principal
March 27, 2026

Not sure why ST is updating the document when they don't even update the ST BLE DRONE app.

The last app update was in 2020. The app doesn't support the Pixel 4a and the Pixel 8 Pro. I just got the Pixel 10 Pro XL a couple of days ago and it isn't supported either.

My Drone kit is a paper weight, still collecting dust. Come on ST! update the phone apps will you?

If a reply has proven helpful, click on Accept as Solution so that it'll show at top of the post.CAN Jammer an open source CAN bus hacking toolCANableV3 Open Source
ElektrooonAuthorBest answer
Associate
March 29, 2026

Hi, here is an update of the situation:

BOARD PROGRAMMING PROBLEM

The problem of programming the steval-FCU001V2 FCU board using a NULCEO 144 board as programmer/stlink has been solved by "bending" the reset signal pin on connector CN5 so that with the connector present in the kit (making connection from CN5 nucleo to P8 board FCU) the reset signal is not connected. Removed the reset signal as said before, now from stm cube IDE and from stm 32 cube programmer it is possible to flash new code and read the flash without problems.

The problem had to be with the connection with reset signal, the adapter present in the kit seems made for STLINK V2 or for V3 in version STLINK-V3SET, I having only nucleo H7 board or STLINK-V3MINIE but with connector with more pins and therefore not connectable I had to find this method.

Probably to program the FCU board only connections with lines GND, SWD and SWCLK are enough to program and debug MCU. The reset maybe only makes problems and must not be connected.


FLIGHT PROBLEMS, IMPOSSIBILITY TAKEOFF

I managed to reduce the flight problems by doing some modifications to the FW and using well BLE DRONE app and I discovered/executed the following things:

The button "Takeoff" and "Land" indicated in the info window and cited in many posts for its absence in the app is correct that it is not present since in the FW these buttons are not managed and ignored and are not needed, so there is not this problem. It is enough only to increase throttle and that's it.

I was not able to make it lift more than 2 cm from the ground and I was not able to control the drone but analyzing the FW in the file "flicht_control.c" at line about 280 there is the following line:

motor_thr = ((int16_t) (0.05f*(float)gTHR + 633.333f));

this operation in practice maps throttle coming from the app from 0 to 1900 scaling it and applying an offset that in practice should be a PWM value close to making the drone takeoff and stay in hover.
In fact in the code every pwm lower than MIN_THR default 200 is as 0 trottle, this can bring to cases where either motors do not turn on or that they turn on and the drone goes up directly.
Modifying as follows I obtained a greater finesse and more control:

motor_thr = ((int16_t) (0.4f*(float)gTHR + 200.0f));

in practice now effective pwm that system receives should be a value from 200 to about 1000.

In the code many parameters and code are present but commented in version for other drones or setup used by st for some tests I think, and maybe even if there are default values for the official drone frame it could be necessary to modify some things as said before.

Maybe the default settings are a bit too reactive and for sensitivity of someone to the remote with already experience or that knows well the drone, so the PID system values in flight_control.h already present could be necessary to decrease or modify. For example now my drone lifts but tends to rotate on itself first little and then more and more, so I would modify PID of yaw decreasing proportional and integral part.

Some hints on tuning of FW parameters and how to do parameter change are here for version V1 (https://www.st.com/resource/en/product_presentation/steval-drone01_getting_started_guide.pdf) but are applicable also to V2.

In any case the FW of the stm32 cube ide project present on product page (https://www.st.com/en/evaluation-tools/steval-fcu001v2.html#tools-software) is the same as the default already present at purchase on the board. pay attention to use code for V2 since folder contains both V1 and V2.

Buying a second drone kit to have spare parts I received a kit with 4 identical motors with white and black wires, without the presence of the two motors with red-blue wires that rotate in the other direction.
In the first kit bought I had instead found the inversion of white and black wires of the motors, since if connected as in the manual image these rotate in a way to push air up instead of down.

I would recommend well to everyone to execute double check of motors and polarity without relying only on the images.

To verify the correct positioning of motors I suggest to add at the beginning of custom code a check where motors are turned on one by one in sequence from 1 to 4 with very low PWM only to verify that motor that turns on is the one positioned in the right place on the frame as per manual and that it rotates in the correct direction CW or CCW correct (like 1 second at pwm 200). If you add this code pay attention to timer interrupt routines that periodically update and overwrite pwm of motors so if you want to test this thing comment all timer callback otherwise you then set a value and interrupts modify it and motors do not work. Then remember to put back the code as before at end of test.

 

SUMMARY

  • If you want to reprogram the board pay attention to the signals you connect and pay attention that reset signal does not disturb or alter communication with debugger/stlink. I solved by removing completely reset signal, not connecting it.
  • FW provided by st is ok but probably some parameters in the code must be fixed and modified as said before for a more smooth use and to solve problems of hover and climb of the drone. Check especially the line of code that maps throttle and PID values of single axes proportional and integral in my opinion too high.
    It is not said that motors of the kit vary a bit and pwm necessary for hover is not anymore the one of default code.
  • App DRONE BLE has all the buttons necessary for the use of the drone. Even if arming and calibration button I would have made them bigger, it already happened to me to have to turn off the drone because it crashed but not being able to press well ARMING button to deactivate them.
  • Check and verify motor pinout and wiring to FCU board connectors. Check to put the propellers on correct motors and to insert them on the motor shaft.
  • From experience put a drop of hot glue on the wires coming out of the motors to keep them together and protect them from possible pulls and excessive bending that break them, it already happened to me that motor rotates in the housing and twists the wires cutting clean the motor wires or that because of a pull one motor wire detaches and then it is rather difficult to fix.
  • Do not forget the battery attached to the board if you do not use it.
  • Pay attention that drone frame is not symmetrical and that propeller guards have fins with certain inclination and orientation, pay attention from images in which orientation to rotate frame.
  • If you import fw project in stm 32 cube ide it may not compile immediately due to a line of code to comment manually for double declaration of something. Then it works.
    If you want to modify settings from IOC pay attention to overwrites or deletion of folders and files present in original project, you will notice because then there are problems of includes and functions not found.

 

IMPROVABLE ASPECTS AND CONSIDERATIONS

Since we're on the subject, here are a few aspects of the FCU board and the drone kit that could be improved:

APP BLE

-Size of calibration and arming buttons in DRONE BLE app should be increased. Fact that I must click for two seconds and button changes color but I have finger on it that covers it is not the best (on my phone is about a square of 6x6 mm)
-The help page contains useful information but the text is truncated in Italian and goes outside the screen impossible to read fully and It is unclear how sensitivity settings affect values
-It would not be bad to have a document with these indications in full and not truncated version

FW
-In manuals and in obtainable material it is well described at high level but some low level FW info is missing of which it is necessary to do a reverse engineering of the code to understand it and comments are not exhaustive. I do not know why for version V2 of FCU and FW there is more documentation and they do not report on the page of V2 also resources of V1 but that can still be useful since some information are not present in V2 manuals.

Drone kit
-In two kit products bought I already found two problems with motors, problems solvable but it is strange.
-The fixing system of the FCU board is not the best and being flexible frame it is easy that if it bends or during landings it comes out from the guides.

 

 

To conclude in any case it is a very nice drone kit this, complete for experimenting on HW and FW in drone field and certainly it is worth to continue maintenance and development of this kit!

With what said I hope to have been helpful for who is using this kit or will have to use it in future for a better experience with this kit with a lot of potential but to understand how to use at best.