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.
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.
36 comments
Unreal, I just saved 3 our of 4 dead ESC’s because of an esc-configurator.com bug killed them (macos chrome bug). Was daunting at first but i had an arduino uno unopened for years sitting around and everything worked perfectly. I did have to guess on the pins but it worked like a charm. based on below input, i did ground.
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.
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.
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 ?
I had to choose the 4wArduino_Nano_PB3PB2 file to flash to the Arduino nano and then it worked all fine.
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.
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 :)
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 :)
Thank you! recovered bricked mobula7 that rebooted in the middle of the esc flash.
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.
is this working for blheli32 too?
No.
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.
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.
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.
Is there a way to do this without Windows?
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
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.
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!
hi bro
can you tell to me whre is pin C2D and C2CK on FC Geprc 12A AIO V.1.4
Thanks
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.
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!
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.
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
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! =)
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 ?
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
By the way in your photos you are showing wrong FC board side. ESC MCUs and C2 pads are at opposite side.
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
Wow, this is amazing! Very informative tutorial.
Today It helped me to recover missing ESC on my Diamond F4 AIO :)
Thank you!
how did you determine which were the D and CK pads without them labeled on the diamond F4 board? at least mine aren’t.
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!
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!
could this also be done with an FTD1232 unit..im trying to unbrick a pyro drone esc.thanks in advance
No, only the Arduino because it needs to be flashed with a special code. Arduino is cheap anyway, only a few bucks.
C2 interface is not your standard TTL serial interface. FTDI adapters will not work here. Only $35 programmer from Silicon Labs… or Arduino :)