Possibly failed Basic ESC

First, I want to begin by saying that I am working with a group of Basic ESCs that have a history unknown to me. I don’t know what they have been used for or how they may have been abused. As such, I’m guessing about some things here. Anyway, here’s the situation. I have just come onto a project to create some basic rovers for an exhibit.

I was brought in, partly, because there seemed to be problems with initializing some of the ESCs. The initial ideas was that there were timing problems based on differences in hardware clock rates. That does not seem to be the case. In fact, I have one group of ESCs that work beautifully with my test system. They initialize exactly where you would expect (1500us), then proceed to ramp up/down smoothly and stop again at center. The other group of ESCs is a bit more interesting. My testing suggests that they are all initializing at 1500us. The first difference, however, is that none of them beep their status on startup. I can tell that they are initializing, however, because they DO respond during the time that they should be ramping up and down. The motor (or thruster) that I am using to test the ESCs will thrash every once in a while. It appears that the ESC is trying to spin up the BLDC, but it is failing for some reason. It’s weird though, because I’ve got more ESCs in this later group than in the first group.

So, what I have tried. I’ve got my test programs that initialize at 1500us. There are two tests I’ve done. One ramps up and down continually. The other sets a forward velocity for five seconds and then stops. Both of these programs work perfectly with the “working” group of ESCs, and fail totally with the “unknown” group. I have also tested several of the unworking ESCs using a servo tester. Again, I am able to get them to, apparently, initialize because they begin to try to vibrate after I move the control to the center pulsewidth.

So, I’m trying to verify if the problem is something I am doing wrong or if there is just something wrong with all these ESCs. I don’t have a great solution to checking if all three phases are switching properly. It sounds like there are no calibration routines available, so that’s not the issue. I tried to talk to the ESCs using BLHeliSuite and an Arduino configured for 1-wire communication. I never was able to connect. So, I’m out of ideas.

Given that I have several ESCs doing exactly what I would expect (reading the documentation) and working nicely with the code, I am inclined to trust that the code is correct. That basically leaves a problem with the ESCs. The question is, is there anything else I’m forgetting that I could do to identify where the problem lies? I’d really love to be able to go back to my supervisor and say something better than “I think they’re broken.” Even just saying, “they failed by …” would be much better.

Thanks in advance,
Martin Jay McKee

Are you using a single, known working, motor to test all of the escs? Can you make a video of one of the bad escs showning you plugging it in and trying to run it?


Can you please clarify what ESC you are using? Are all these the R1, R2, or R3 Basic ESC?


Yes, I am using a single known working motor. I don’t have a good solution to a video at the moment, but I’ll see what I can work out.

I have one R2 that is working well and several R3 that work well also. All of the non-working ESCs are R3.

Okay. Videos weren’t too much of a problem. Let’s start with a video of the expected behavior. Note, I am running an old, beat-up, RC airplane motor rather than the T100 thruster, but the response is exactly the same with the thruster (and I don’t care as much about the motor!). The video is here Correct Operation.

You can see (and hear) that the ESC initializes. The motor then ramps (as commanded by the program) to speed forward and backward.

Conversely, we have a video of one of the non-working ESCs. I picked this one at random and it is actually doing a better job of spinning up than some of the others, still, it shows what I’m seeing pretty well. Non-Working Operation

The first thing to note is that there are no start-up tones when power is applied. This is common to all the non-working ESCs. Secondly, when I attempt to power up the motor, it runs roughly for a short time and then simply stops trying. I would almost be willing to conjecture that it is stuck in a loop attempting it’s open-loop startup sequence and failing to spin-up correctly, so starting again.

Thanks again for the help!


Without knowing the previous history of the ESCs, it is difficult to to give an exact answer to what may be going on. Is it possible that the firmware was modified on these ESCs, of attempted to be modified unsuccessfully?

When attempting to use BLHeliSuite to communicate and read the firmware, is it failing on all R3 ESCs, or only the malfunctioning ESCs? If it is on all, it likely there is an error with your setup that once resolved would allow you to communicate and possibly open another troubleshooting avenue.

The ESC stopping operation after a number of failed attempts is actually proper operation. On a good R3 ESC, if it is unable to start up properly after several attempts, most often due to a physical jam, then it will stop until reinitialized. You can see this behavior by holding the motor in place with a good ESC- it will try several times, beep to indicate a problem, and shut down until reinitialization to try again. In your case, the ESCs never start running properly in the first place despite lack of a physical jam.

The three beeps upon startup are intended to give an audible check of all three phases, both on the motor and ESC. Knowing that your motor is good means that the lack of any beeps suggests the low side or high side MOSFETs on all three phases are bad. This is my best guess as the what is wrong. Enough is broken on the ESC to make it fail the audible test and run improperly, but not stop it running altogether. The MOSFET breakage would most likely have happened due to chronic overheating of the ESC or over voltage.


I wish I knew more about the history of the ESCs. I’ve made a bit more progress, however.

It took me a bit of work, but I finally got an Arduino/Computer combination that allowed me to connect with BLHeliSuite. I was able to connect to both the working and non-working ESCs – the configuration and firmware versions were the same. I was able to update one of the non-working ESCs to 16.7 successfully, though it isn’t driving the motor any better. I think it’s fair to assume, therefore, that the issue is in the driver hardware. If I were more motivated to find the exact problem, I would setup a way to probe the drive signals, but all I have at the moment are a couple of old analog oscilloscopes. They’re very nice, but not having a way to capture non-repeating signals is a pain for this sort of debugging.

Either way, I’m more comfortable going to my supervisor with the “it’s a problem with the ESCs” story now than I was before. It sure did seem like a hardware problem, but I couldn’t be sure. Given that I was able to connect to the whole digital side and there don’t seem to be any issues, I’m even more sure.

If anyone has any other ideas for tests I ought to be trying, I’m happy to give them a go. But, for the moment, I think I’m going to move forward with developing the control code. The other ESCs are working like a champ.

Thanks again,
Martin Jay McKee


Glad to help, its good to hear you were able to get communication working and gain a little more insight into the issue. Let us know if you happen to find out what may have been a likely cause of the issues.