How to Unbrick ESC – Flash BLHeli_S Firmware through C2 Interface

by Oscar

If your BLHeli_S ESC died or is simply not responding after getting a “Flash Failed” error, or somehow your ESC is bricked, you can try re-flashing BLHeli firmware through the C2 Interface to “revive” it.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

Your ESC could be bricked when the bootloader is corrupted, flashing through the C2 interface might be able to fix that.

Preparing Arduino

You will need an Arduino board to flash ESC through C2 interface. Either Arduino Uno or Nano would work fine and they only cost a few bucks. I will be using the Arduino Nano in this tutorial, you can get it from here: https://amzn.to/3uAzcJL

  • Download BLHeliSuite here: https://github.com/bitdump/BLHeli
  • Plug in your Arduino, a new COM port should appear. Pick the Arduino COM port in BLHeliSuite
  • Go to the “Make Interfaces” tab, and click on “Arduino 4way-interface” option

You will be asked to select a firmware for the Arduino, choose the one that contains “PD3PD2”.

And that’s all you have to do to enable your Arduino to flash ESC via C2 interface.

Identifying the C2 Pins on ESC

You will need to connect two pins on the ESC: C2D (Data) and C2CK (Clock).

These pins are normally broken out to two small solder pads near the ESC MCU (processor, BB21). By following the traces and checking the pinout diagram above, you should be able to identify which pads are C2CK and C2D.

To give you an example, here’s the Zeus5 AIO FC, and the C2CK/C2D pins for each ESC on the board.

Connections

From Arduino Nano to ESC

  • GND => GND
  • D2 => C2D
  • D3 => C2CK

From Arduino General to ESC

  • GND => GND
  • D12 => C2D
  • D11 => C2CK

Soldering to those tiny pads are tricky, just be patient and careful.

Flashing BLHeli Firmware via C2 Interface

In BLHeliSuite, select “SILAB C2 (4way-if)” under SILABS Interface.

Plug in the battery to power the ESC.

Then hit the “Connect” button in BLHeliSuite, and “Read Setup”.

If everything works correctly, you should be prompted to re-flash your ESC with BLHeli firmware. Just click “Yes” and follow the instructions and flash the latest official firmware.

Hopefully this rescued and unbricked your ESC. You should repeat the same steps for all four ESC’s.

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.

35 comments

travissimo 24th May 2024 - 2:28 am

My previous post refers to the SpeedyBee F405 V4 55A ESC 4-in-1. We did not have to have the FC plugged in at all. Just the ESC.
PB3PB4 FILE: We used an Arduino Uno. So in BLHeliSuite, when it asks which file to load, you want one that says PB3PB4.
Manuals: the manual folder for BLHeli Suite (in the root folder) has a bunch of info and the pin protocol. Even has instructions for multi setup.

Reply
travissimo 24th May 2024 - 2:20 am

For us: NEEDED GROUND PIN AS WELL For our SpeedyBee BLS 55A 4-in-1 ESC: we also had to connect the ground from the Arduino Uno to the ground of the ESC (negative terminal).

We used a multimeter to confirm that the ground pin (#3) on the BB21 had continuity with the negative battery terminal.
Without it, we couldn’t get the Arduino and BLHeli Suite to connect. With the ground, it worked like a charm.
(Only problem was that we lost one of the pads – it pulled up and broke off despite careful soldering. Those pads for pin 5 and 6 are so small!).
Warning: we touched one of the diodes near the soldering pads on the ESC with the wire going to the Arduino and it shorted or juiced the Arduino and ruined it. We ruined two Arduino in the process from the wires moving slightly and touching a nearby diode (they are so dang close). Next time we will just hold the pins on the pads (then again that is how we fried the first Arduino because my hand slipped and the pin hit the diode – just can’t win…).
Thank you for this article! Super helpful and it works.

Reply
Hristian 5th March 2024 - 8:19 pm

Hello, when I try to reflash a 4in1 AIO FC, Speedybee F745, I get the message:
“Serial Interface “4wANm328P16″ connected successfully.
Connection to ESC#1 failed!
Please check data- und power-connections to the ESC!.
Hint: Allinterface lines are LOW: Esc seems to be disconnected or not powered up.”

The AIO is powered up via the normal battery input. The voltage btwn c2d and c2k is 3.2V for escs 2,3,4 and 0v for ESC1.

Tried connecting to esc1 and esc2 and I get the same messagge.
I have INAV 7 on the FC.

Anyone had the same message and managed to solve this ?

Reply
Hristian 9th March 2024 - 4:34 pm

I had to choose the 4wArduino_Nano_PB3PB2 file to flash to the Arduino nano and then it worked all fine.

Reply
M. Taylor 20th December 2023 - 6:08 pm

I attest that the instructions here for unbricking BLHeli_S ESCs do work. I successfully resurrected 2 ESCs using the documented method. I was ready to give up and abandon these steps and go buy a new ESC, but I decided to give it one last successful try.

Reply
Krotow 8th October 2023 - 11:56 pm

From info in this instruction recovered Bluejay ESC firmware in Meteor75, bricked because forgot to turn out radio on table nearby before flashing. Thanks!

Is worth to know that cheap Arduino clones from AliExpress, especially lesser models like Arduino Nano, often come blank without bootloader. Bought a bag of these 2 years ago, mostly Arduino Nano with 328P MCU and CH341 USB serial interface. Turned out that no one is recognizable and flashing stopped with “stk500_getsync(): not in sync: resp=0x00” Luckily had one original Arduino Uno board. Used it as ArduinoISP programmer and recovered all dead boards by flashing bootloader in these from Arduino IDE. Now they are alive and kicking. In end bricked ESC recovery turned into 2 evenings long flashing fest :)

Reply
Irek 18th August 2023 - 7:39 pm

Thank You !
betafpv f4 1-2s (meteor85) recovered. esc-configurator didnt see esc 1 before and couldnt flash it.
Now all esc are visible and without problems flashed with blujay :)

Reply
Serhii 16th July 2023 - 8:38 pm

Thank you! recovered bricked mobula7 that rebooted in the middle of the esc flash.

Reply
Scot Needham 26th March 2023 - 8:25 am

If you mistakenly flashed BLheli32 onto Blhelisuite esc(Betafpv Xknight) is this the remedy? I can’t get configurator or blhelisuite to connect to my esc.

Reply
pooria 21st February 2023 - 5:04 pm

is this working for blheli32 too?

Reply
Oscar 21st February 2023 - 5:11 pm

No.

Reply
Josh 9th December 2022 - 11:06 pm

What if it’s only 1 esc on a 4in1 that has disappeared? Like your pic of BLHeli Suite it shows as ESC#1 but it looks like you’re wiring is to the #4 esc? I can’t see how to change from esc #1 to esc#4(the one that vanished on mine) in BLHeli Suite.

This happened flashing to Bluejay(all 4 worked on BlHeli_S previously). After Bluejay 3 esc’s were fine, #4 disappeared. Flashed back to Blheli_s but it was still gone. Followed these instructions but it’s saying it not connecting to #1 esc.

Reply
Stuart B 19th December 2022 - 2:17 pm

Josh , I have 3 esc’s lost [100%] with only #4 motor showing. Will arduino board restore these esc’s so BLH can refresh them. Anyone know?? I won’t be using Bluejay again.

Reply
Krotow 30th September 2023 - 2:47 pm

There is nothing to do with Bluejay. Turn off any strong electromagnetic interference sources around the spot where you are flashing your 4-in-1 ESCs.

Reply
JETTY 22nd November 2022 - 1:06 pm

Is there a way to do this without Windows?

Reply
Krotow 30th September 2023 - 3:11 pm

Not without computer/laptop in your hands. But it is doable in Linux or Mac as well. This should work in terminal for any BBxx MCU with C2 interface.

https://github.com/conorpp/efm8-arduino-programmer

Reply
Krotow 9th October 2023 - 9:06 am

Correction – it is complicated. EFM8 programmer mentioned by me is written for Python version 2. In latest desktop Linux distros and MacOS default Python is version 3. You need to install Python 2.7 before. Also this programmer seems tailored to particular tty port. At least I had no success with it. Tried to recover my ESC with it at yesterday under Linux Mint 21 and Arduino Nano at /dev/ttyUSB0 without success. All is good till you call client prog_client.py – then process simply freeze. Will look into it later if I will find time for that.

Reply
Darrel 14th September 2022 - 1:53 am

Thanks Oscar I had a bricked ESC as I flashed my diatone gt200 on 4.x
With blheli pass threw and couldn’t get it to work direct to normal pad.
My diatone sat for well over 2 years until I came across this.
🍻From ONT 🇨🇦 thanks for all the great info!

Reply
Alfa 26th May 2022 - 8:17 am

hi bro
can you tell to me whre is pin C2D and C2CK on FC Geprc 12A AIO V.1.4
Thanks

Reply
Krotow 30th September 2023 - 2:54 pm

According to picture in GEPRC web site, ESCs in GEPRC 12A AIO board have the same BB21 MCUs

https://geprc.com/wp-content/uploads/2019/04/28-6808620563.jpg

Pin 5 on chip is C2CK and pin 6 is C2D. Find appropriate pads in a 4-pad row on board nearby BB2 chip with multimeter as Oscar said above.

Reply
Zack 25th October 2021 - 2:24 am

Would like to add myself to the list of those having issues with Babyhawk II Escs. Flashed JazzMaveric, everything worked great, then went to reverse motor direction on ESCs for props out rotation. Now only three motors were turning. After repeated attempts to reflash the ESCs firmware, I am down to only one motor turning in Betaflight and only two motors show non corrupted firmware in BLHeliSuite. I would like to try to flash using the direct connection with Arduino, but like others, have not found any solder pads to use, I’m guessing its one of the pins on the escs themselves that would have to be soldered to? Those things are microscopic!

Reply
Ivan 25th September 2021 - 12:13 am

Thanks a lot. This article helped me to restore the Flywoo Goku EVO AIO F4.

I was trying to flash JazzMaverick, but it failed at all 4 ESCs: motors didn’t rotate, I wasn’t able flash anything to it. After soldering and reflashing the regular BLHeli_S the ESCs came to live. Then I flashed JazzMaverick successully. idk, why it failed it first time.

Soldering to C2 pads was the trickiest part, I even partially teared off one pad.

Reply
Humberto 14th August 2021 - 12:14 am

in blheli_s when I read my 4 in 1 esc I get a sign that tells me: ESC connection # 1 failed, channel number 1 exceeds the capabilities of the current interface. …What do I do..? Thank you

Reply
Eric Li 23rd September 2022 - 7:42 pm

Hey Humberto!

I know this is a year later, but I had the exact same issue on my friend’s drone and I fixed it. I went thru C2 interface and it all flashed and was able to read and write to Bluejay/BlHeli S Firmware, but the FC still wont recognize it. It turned out the fix was SUPER SIMPLE. No need for C2 interface at all!

My friend had accidentally updated Betaflight to a newer firmware but wrong board target. Instead of choosing the proper AIO, he chose the HD board. And the resource pin mapping of the motors were incorrect and assigned to some other stuff that’s why I get that error “ESC connection # 1 failed, channel number 1 exceeds the capabilities of the current interface”

Best of luck! =)

Reply
Radek 7th August 2021 - 2:59 pm

Hi just happend to me on babyhawk 2 hd itis all in oneboard I can not see where are the spots to solder cables do not know it might not be there can sny one help where to conect arduino on babyhawk 2 hd board please ?

Reply
ImpFPV 12th August 2021 - 1:14 pm

here are diagramms of the FC with some undocumented solder pads, don’t know if it can help you. rcgroups.com/forums/showthread.php?3900915-EMAX-BabyHawk-II-HD-and-GPS-with-Softserial-LED-Strip-fixed#post47175787

Reply
Krotow 30th September 2023 - 3:00 pm

By the way in your photos you are showing wrong FC board side. ESC MCUs and C2 pads are at opposite side.

Reply
ImpFPV 3rd August 2021 - 7:38 am

so I was flashing BLHeli_m 16.9 via the BLHeli configurator (the chrome app) to the EMAX Babyhawk, like I did it with a bunch of my other quads befor.I powered the board by using the vifly v2 smokestopper, I just read in the wiki, you should use some kind of current stopping security.
Next, the flashing process on all 4 ESCs faild with some kind of chrome-app error message.

I tried again without the smokestopper, but not only couldn’t the programm read the ESC settings in 8 of 10 cases, the times I came up until the flashing process, it failed again.
After some trys I change to BLHeli Suite, just hoping to save the ESC by flashing the original 16.7 firmware.
Long story short, until now, I wasn’t able to flash the correct, error free firmware on all 4 ESCs.
One time, I thought I did it, …was cheering. But as I teste the Motordirections in Betaflight, only 3 out of 4 Motors started spinning up.
Could my problem be related to the above mentioned? I read about ESC not showing up all the time, and sure thats a bootloader problem….but I haven’t found any other problem exactly like mine…
Thanks for help
ImpFPV

Reply
Simonas 6th July 2021 - 9:38 pm

Wow, this is amazing! Very informative tutorial.
Today It helped me to recover missing ESC on my Diamond F4 AIO :)
Thank you!

Reply
Jim 26th September 2021 - 6:11 am

how did you determine which were the D and CK pads without them labeled on the diamond F4 board? at least mine aren’t.

Reply
Plamen 25th October 2021 - 8:39 pm

You should be looking where the chip is facing (orientating by the 1st pin).
Then identify the 5 and 6 pins , 5 is C2CK and 6 is C2D.
I was able to do it via this method on Diamond F4 as well. Good luck!

Reply
Jack 14th June 2021 - 1:23 am

Which pad would be comparable to the signal wire? I saw a video how you could save a 4-1 board with a fried mosfet, by using an equivalent amperage stand alone esc and just pulling that motors wire from the wire harness soldering straight to signal wire of stand alone esc. I’m attempting that on an Iflight 40amp/F4 AIO board. It has four tiny pads next to each esc and group of mosfets, 3 round 1 square. Any suggestions? thanks!

Reply
Levi Thompson 11th May 2021 - 11:44 am

could this also be done with an FTD1232 unit..im trying to unbrick a pyro drone esc.thanks in advance

Reply
Oscar 11th May 2021 - 12:54 pm

No, only the Arduino because it needs to be flashed with a special code. Arduino is cheap anyway, only a few bucks.

Reply
Krotow 30th September 2023 - 2:57 pm

C2 interface is not your standard TTL serial interface. FTDI adapters will not work here. Only $35 programmer from Silicon Labs… or Arduino :)

Reply