Flashing Betaflight into a Banggood / HappyModel F3 EVO Brushed Flight Controller

By | September 2, 2016

I recently bought a Micro HappyModel F3 EVO Brushed flight controller on banggood.
This is a really nice and small flight controller for brushed quadcopter builds as it features a powerful and future-proof STM32F3 CPU.
A quick test with the betaflight configurator revealed it was delivered with Cleanflight 1.13.0 (Cleanflight/SPRACINGF3EVO 1.13.0 Jun 6 2016 / 00:03:29 (a77bc76)).

Flashing betaflight

As i run betaflight on all my quadcopters i want to run it on this target as well. As flashing for F3 targets is a bit different here is a short tutorial how to upgrade this little board.
happymodel_f3_evo_brushed_board_pinoutIn order to upgrade the firmware you have to short the boot pads on the PCB. They are on the USB side and are labeled BOOT. Get some small tweezers and short the pads while inserting the usb connector. Wait some seconds and remove the short.

What comes next is a bit different of what you might be used to in comparison to the older F1 boards. The bootloader on F3 targets does not register as a virtual USB to serial converter (VCP) but uses the DFU protocol instead. Therefore we need a special DFU uploader tool in order to upgrade. Have a look at my instruction page how to install the dfu-util tool. Executing dfu-util -l should show something like this:

dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
 Copyright 2010-2016 Tormod Volden and Stefan Schmidt
 This program is Free Software and has ABSOLUTELY NO WARRANTY
 Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Found DFU: [0483:df11] ver=2200, devnum=59, cfg=1, intf=0, path="4-1", alt=1, name="@Option Bytes /0x1FFFF800/01*016 e", serial="206C354E2037"
 Found DFU: [0483:df11] ver=2200, devnum=59, cfg=1, intf=0, path="4-1", alt=0, name="@Internal Flash /0x08000000/128*0002Kg", serial="206C354E2037"

The board was detected. Just to make sure we can go back to the current state let’s download the current version using the DFUse mode. Open a command line (Windows: Start->Run cmd.exe) and enter:

dfu-util -a 0 -U sp3evo_cflight_1.13.0.bin -s 0x08000000:131072

This should download a 128KByte firmware image. The important parts are the memory address to load from (0x8000000 = FLASH memory) and how many bytes to load (128KBytes = 128*1024 = 131072).

Now we can try to upload the betaflight firmware. We will use version 2.9.1. Please be patient and DO NOT interrupt this. It will take some time. In case you interrupted it: don’t worry the usb bootloader is unbrickable, it is stored in the STM32 rom and can not be overwritten, just restart with the BOOT pins shorted.

First, download the revision you want (we will use betaflight 2.9.1 for the SPRACINGF3EVO target) and if you are using Windows save it in the same folder where you extracted dfu-util. Execute the following command in the command line:

dfu-util -a 0 -s 0x08000000:leave -D betaflight_2.9.1_SPRACINGF3EVO.bin

The board should reboot after flashing and enter the normal mode. Again, you should have a blinking board and a new USB device registered (VCP, virtual com port). Now fire up the betaflight configurator, select the right com port and hit connect.

If everything worked you should get a connection and the betaflight CLI should give you:

Entering CLI Mode, type 'exit' to return, or 'help'

# version
# BetaFlight/SPRACINGF3EVO 2.9.1 Aug 2 2016 / 22:49:56 (0ef6c3d)

Next: setting up betaflight for brushed control