Reversing the new ESCs - what am I doing wrong?


OK, so when my homebuilt OpenROV 2.3’s giant Molex connector gave up the ghost, I decided to replace its old gigantic ESCs with the new opto 12amp ones. I neglected to check as to whether or not they can go in reverse - of course, they are multirotor ESCs so they do not, nor are they expected to. Or do they? Obviously in OpenROV 2.7 and 2.8 they are used, and the motors have no trouble going in reverse. What am I doing wrong? Perhaps the OpenROV controller board has some kind of reverse function? I really need assistance on this since I am taking my ROV to Salt Lake City maker faire on Saturday. Thanks!


Ahhhh! Noticed in topic “OpenROV 2.7, bad ESC?” that command sudo bash ./ fixes this problem - but my software is too cobbled together for that script to work. I am running sudo apt-get install openrov-rov-suite on a fresh Ubuntu image, hopefully this works. Anyone let me know if this is likely to cause problems.


OK, that did not work. I can’t seem to get sudo apt-get install openrov-rov-suite to run on the Pi. But I have to get those ESCs reprogrammed pronto, before I go to maker faire on Saturday! Could somebody please help? Perhaps that script can be made to work. I am using Raspberry Pi 2 and an Arduino Uno.


Are you using afroESCs? If so, the easiest way would be to get an AfroESC programmer. You can then flash the ESC using this guide:


The ability to go in reverse is a function of programming the ESCs. Depends on what ESC you have. You will have to look at their programming instructions. For our recent Kits we use the AfroESCs which use the simonk firmware. There is an option for that firmware to enable reverse.


Hi, thanks for replying! So I am using the ZTW Spider 12a Opto ESCs, which also use SimonK firmware. They are supposed to be pretty much the same as the Afros - I got them because they were on Amazon and I didn’t want to deal with HobbyKing. I don’t have time to get the Afro USB programmer device - can I do this using just my Arduino Uno?


This is what you need to use your Arduino as the programmer. Instructions are on his readme.


Thanks -

I uploaded that ino to my Arduino Uno. Hooked up one of my escs to it, and attempted to use kkMulticopter to load the afro_nfet.hex file. I keep getting an error from avrdude: timeout. How do I fix this? I have the esc hooked up to ground and digital pin 2.



I used avrdude from the command line, and now it uploads the firmware - but exits with a verification error on the very first byte. The esc still beeps when it starts, though. I checked around on rc forums and maybe my bootloader is corrupt? I am using the afro_nfet.hex file from the OpenROV software.


Edit, the esc does not beep when it starts, it appears to be dead after that failed firmware upload.


No idea. If for some reason the boot loader gets corrupted, you may have to fall back to using an ICSP programmer to re-flash from scratch. The boot loader is the part of the firmware that handles the serial over servo line communication.

I’m not familiar with the ESC you are using, so double check that it uses the same firmware as the afroESCs.


I would also open up one of your ESCs and see what kind of processor it has. The Afro NFET firmware will only work on an ESC with an ATMega8 or ATMega8A processor. If the loader is failing immediately, it might be because its looking for the signature of an ATMega8 and doesn’t see it.

Also, note that the use of SimonK firmware doesn’t guarantee any particular pinout for the ESC’s processor. If your ESC uses a different set of pin mappings than the AFRO ESC does, then all you’re going to get is smoke when you attempt to power it up. You might want to go to Simon’s GitHub site and see if there’s a configuration file for the ZTW ESCs.



Hi Walt -

My ESCs have the AtMega8A.

The firmware does upload, I just get a “verification error” after it’s all done. And I don’t get smoke (thankfully); when I power the ESC nothing at all happens. But I can still upload the firmware!

And Simon does not have a specific firmware file for the ZTW - but I found somewhere in a forum that maybe the bs_nfet.hex will work. Will try that now …



I attempted using a modified bs_nfet.hex (reverse flag tripped - followed instructions in badevguru’s forum post). Lo and behold - same verification error. But inexplicably, now the ESCs work!!! Forward, reverse, everything - they even work better than they did with my old car ESCs.

Thank you all for your help, and I look forward to a great maker faire SLC!