Flash & Burn, ESC edition

Many ESCs produce a high-pitched whining noise while running the motors. This is a result of the current switching that happens at the ESC. In many models, the frequency of switching is in the high audible range, and this translates to whining noise. If you’ve been following this blog for some time, you’d know that one of my main goals in my builds is to reduce noise. whether it’s prop noise or anything else, its cause is a potential target for review and rebuild. My QBrain ESC is a victim of the high-pitched whining noise. I’ve read elsewhere that custom firmware such as Blheli or SimonK performs switching at higher frequencies, so I decided that flashing my QBrain might be worth a try. Unfortunately my effort was met with a burnt ESC.

DISCLAIMER: This is a step-by-step outline of the procedure I followed to flash my QBrain ESC. It’s not meant to be instructional in any sense, and I’m mentioning up front that it was met with disaster (i.e. burnt ESC). I never managed to figure out the reason, but in any case I do not suggest it and will not be performing the same procedure again. Also beware that the procedure is quite geeky, and if it is your first time and have little experience in messing with electronics you’ll be going through steps where you don’t really know what’s going on.


I started as usual by searching online for information on which firmware to pick, which software and hardware are required, and obviously how to do the flash. I found the video below to be mostly compatible to my use case:

The QBrain 20A ESC is based on a Silabs chip, which is supported by Blheli. In fact, I found out that Blheli flashing of Silabs ESCs is more mature than SimonK, so being a first-timer I went with that.

The original firmware of the ESC does not support programming over the PWM input, so BlHeli flashing needs to be done via specialized programming pads on the ESC. The location of these pads is shown for many ESCs in the video and linked PDF above.

I needed a programming interface before I could do any flashing. I used an Arduino UNO, simply because it was laying around. In order to use the Arduino as a flashing tool, you’ll need to reflash it with specialized programming firmware that will make it possible to flash your ESC chips. Good news is that BLHeli suite can do this for you quite easily.  Go to the Make Interfaces tab, and there you can select which Arduino model you wish to flash and which bootloader you wish to upload.

I went on to make a poor-mans flashing pad connector, out of three glued together female-male cable. You need to bend the center pin a bit, because you’ll need to touch the three out of four pins on the board. So it is a bit asymmetrical. I tested the connector with the unpowered ESC, just to make sure it touches properly.

Read also:  Tinymovr: Project state & next steps

The hardware

  • QBrain 20A ESC (i.e. the lab rat)
  • Arduino UNO (clone)
  • USB Cable
  • 3 female-male jumper cables, with the male ends glued together, center pin bent.
Flashing “toolchain” good to go!

The result

I selected Silabs 4-way if from the BLHeli Suite menu; my COM interface; hit connect; hit flash BLHeli; chose Skywalker 20A Multi; accepted the warning, and finally, the flashing was on it’s way. Writing.. reading.. success! Yay!

Less than a second later..


A loud popping sound came from the ESC. It took me a couple seconds to realize what was going on, and by that time, the motor connected to the flashed ESC had already started sizzling and producing a considerable amount of white smoke.

I took out the battery connector as fast as I could, and waited for a couple minutes for things to cool off. Especially the motor was so hot I couldn’t touch it for more than a second or so. It was evident that at least some coils in the motor were fried.

iPower IPM2212 with four fried coils, i.e. the result of my ESC flashing "skills"
The result of my ESC flashing “skills”: iPower IPM2212 with four fried coils.

The aftermath

Honestly, I could not figure out what went wrong. My primary suspicion is that either the Arduino UNO I was using was not entirely compatible for the task, or that, in a stroke of misfortune, the programming pads misaligned momentarily, touching who knows what else.

But if the first is the reason, why did the flashing complete successfully, as was reported by the tool? And regarding the second one, I find it highly unlikely, as throughout the process I had my eyes fixed to the pads, only occasionally looking at the PC screen.

On the positive side a burnt ESC is a chance to upgrade and get rid of my annoyances without messing around with stuff I am most likely going to screw up. I ended up getting 4x Tiger Air 20A ESCs. I am really happy with my choice. The Air are not only quiet and lightweight, but they also drive the motors much smoother (especially at low RPMs), than the QBrain ever did.

Eventually the burnt ESC became a source of all sorts of electronic components. I used a hot air gun to desolder most of the components on the board.

T-Motor Air 20A ESC packaging
T-Motor Air 20A ESC packaging
T-Motor Air 20A ESCs
T-Motor Air 20A ESCs


Flashing ESCs is not for the faint of heart, and can leave you with a burnt ESC. I’d suggest trying it only if you are confident of yourself, or have experience already. Otherwise, make sure you get one of those ESCs that are pre-flashed with BlHeli or SimonK. These guarantee easier flashing and configuring through the signal cable, and even through the Flight Controller, if you use a flight control software such as Cleanflight. In any case, best of luck!

For more exciting experiments and tutorials, subscribe to our email:

2 replies on “ Flash & Burn, ESC edition ”

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.