Programming cheap ESCs for reverse

Hi all,

I got some cheap ESCs from Amazon and I’m trying to get the to work in reverse. I’ve built a small jig with pogo pins and I’m able to flash SimonK using avrdude. It’s a generic atmega8 and it looks like it supports tgy just fine.

What’s got me stumped however is configuring SimonK to go in reverse. So far, this is what I’ve tried:

  1. get the latest version from GitHub, compiled it, uploaded it. It works just fine, but only forward.
  2. looks like the documentation on how to enable reverse is outdated, no idea how to enable it on the latest version. RC_PULSE_REVERSE is no longer a config option.
  3. got an older version from 2015, set RC_PULSE_REVERSE to 1, compiled it, uploaded it, and it still will only go forward?

I tried a bunch of other things, such as kkMulticopter flash tool, but it was completely broken for me, just threw a NullpointerException trying to download the firmware. Did it manually by following the steps the tool was trying to make, found tgy_reverse.hex and flashed it, but still only forward.

I also tried but that looks broken, too.

Any ideas what would be causing this?

I’ve recently gotten started myself in this area, trying to find an ESC that is easy to program and something I can purchase more of in the future. Rather than messing about with building custom firmware or trying to download files from sketchy file sharing sites, I did some looking around and it seems like BLHeli-S or BLHeli-32 devices are the way to go. They seem to be standardized and you use the same tool to configure them all, and they all seem to support reverse by just setting a flag with the USB programmer. I went with BLHeli-S myself, the tools are all free, and I’ve purchased multiple ESCs from Amazon and HobbyKing and they all work. I also found a 4-in-1 ESC that works too. So this is what I’d recommend to others right now.

After some frustration, I was able to get it to work. For future reference, In tgy.asm I now have:


the second line is what took me time to figure out. You have to set FULL_RC_PULS to the midway point of your throttle, so in my case, in between 1860 and 1060 pulse width. I just compiled and flashed and it worked.

This is the ESC in question:

It’s basically a tgy compatible hobbywing 30A esc. They’re dirt cheap, I think you can get them for about $5 on banggood and similar.

edit: also, I am not sure BLHeli supports forward/reverse, I think the ‘reverse’ option just reverses the direction the motor spins in, but don’t quote me on that.

Wayne3 I am interested in this, my daughter and I are building an ROV for MATE. we are looking at do you think these would work? do you have or know of a good way to flash the firmware? Sorry new at this

Yes, those ESCs look like they will work. I am using the BLHeliSuite tools from and that links to a download here

You will also need a USB adapter for the ESC, it has a plug that connects to the servo wires.