Howto Flash chinese 8-bit simplebgc with 2.40b8 firmware using an Arduino as ISP

Some month before I went to the States in 2016 I had the idea of filming some of my friends adventure into biogas. In order to film in a somehow viewer friendly setting I was looking for camera stabilization. From my drone-flying friends I did know about the latest development in brushless gimbals. So I decided to check for a brushless gimbal. I started my search for the baseboard and found the simplebgc, which is now part of Basecamelectronics. Their 8-bit board is available at Aliexpress as cloned version. Ordering that was were the trouble started.

To cut it short. The gimbal was laying around for half a year. It wasn't stabilizing at all and the 2.2 firmeware, or which is outputed as 0.53b, can't be upgrade to the latest 2.40b8 because the bootloader is locked. Basecamelectronics offered their latest 8-bit firmware for free, but still you have to go a different way then the ususal as it is not a geniune board.

What equipment / parts do wee need?

  • Arduino, prefered Duemilanove
  • 2 x 10 ohm Resistor
  • 1 x 100 ohm Resistor
  • 1 x 10 kohm Resistor
  • Chinese simplebgc with 0.53b firmware (perhaps other versinos can be flashed as well)
  • perhaps a breadboard
  • Windows 

Procedure on how to flash the firmware

We first flush the Arduin ISP onto the Arduino. Some points might be critical here. We are basically using as a base of information. Make sure that you understand it. 

1. At the Arduino ISP sketch make sure you set the right speed. We are going to use 115200 baud. Comment the standard 19200 out. 

// #define BAUDRATE 19200
define BAUDRATE 115200
// #define BAUDRATE 1000000

2. We are also using the old style of connecting the Miso / Mosi, etc. Comment the following line out:


Old style means that we use the following pin setup:

10 = Reset
11 = MOSI
12 = MISO
13 = SCK

Once we flashed the Arudio ISP file onto the Arduino we disconnect the Arduino from the USB. Now we connect a 120 ohm resistor (100 + 2x 10) between V5+ and Reset. The setup is basically described at and is necessary to disable the AutoReseting. But thats not all. We also need a 10 kOhm pullup resistor between the Reset that goes to the simplebgc (that sits at Arduinos port 10) and V5+ that goes to the simplebgc. Now we are set at the Arduino site.

Setting the cabling up at the simplebgc

On the simplebgc there are some yet to solder headers. Check the image:

ISP pin setting

On the simplebgc board is one point marked with a triangle, thats the point that correspondes with the square at the ISP6PIN image. Connect the Arduino in correspondence with the image while it is off power. Once everything is in place connect to the USB.

Simplebgc flashed with an Arduino as ISP

Flash the software using AVRdude

As pointed out at Basecames website we first need some additoinal software and files.

Extract all files and copy the optiboot_atmega328.hex from the Optiboot bootloader directory into Avrdudes subdirectory where the actual exe-file avrdude.exe sits. We now gonna perform some commands via Windows CMD.

avrdude avrdude.conf -c Arduino -P COM11 -b 115200 -p atmega328p -e -u -U lock:w:0x3f:m -U efuse:w:0x05:m -U hfuse:w:0xDC:m -U lfuse:w:0xEE:m

Make sure that the -P parameters fits your Arduino connection. We now gonna flash the new bootloader Optiboot onto the simplebgc

avrdude avrdude.conf -c Arduino -P COM11 -b 115200 -p atmega328p -U flash:w:optiboot_atmega328.hex -U lock:w:0x0C:m

If there weren't any errors we can switch over using AVRDudes Gui. From there we simply check that the baud rate is correct and the COM port fits our needs. We now select the firmware hex file, check verify and hit flash firmware. Voila.