SimonK Firmware
A fellow named SimonK has written custom ESC firmware that is optimized for quadcopters and can be loaded on to many common ESCs. My understanding is that the new firmware sends speed changes directly to the quadcopter motors rather than averaging the changes. To use the SimonK code an ESC must be flashed using an AVR programmer. I recently purchased some 25Amp ESCs and gave it a try.
OpenPilot, RCGroups and SimonK’s GitHub are excellent resources full of information on flashing ESCs with the SimonK code.
Warning – It is possible to ruin an ESC when attempting this process. Also, factory installed flash is overwritten.
That said, I found it to be an easy process and all of my ESCs work with the SimonK code. Continue reading to see how I successfully flashed my ESCs…
Update 9/20/12 - This Atmel Atmega Socket Firmware Flashing Tool is probably the fastest and easiest way to connect a USBasp programmer to an ESC.
Update 8/11/12 - Recently I discovered a much easier and faster way to flash better all N-Fet ESCs. You can read about it in my post called Simple Flashing of HobbyKing Blue Series with SimonK Firmware.
Choosing ESCs to Flash
To flash ESCs with the SimonK firmware they must have an Atmel processor. ESCs with SiLabs processors may be able to use BLHeli firmware. Also, it is easiest to flash ESCs that have pads intended for flashing. If the ESCs don’t have pads, connections have to be made directly to the Atmel processor. These connections are tiny and much harder to accomplish. The ESCs I chose met those two requirements.
I changed the flash on 25 Amp Dynam Detrum ESCs that I bought at HobbyPartz.com. I like their site because they are pretty cheap and they ship from the US. These ESCs use a programming card that looks just like the one the Turnigy Plush ESCs use. So, I ordered them hoping they could be programmed with the Turnigy version of SimonK’s flash. When they arrived I cut off the heat shrink to compare the chip layout to a picture of the Turnigy/Hobbywing 25A ESC on the RCGroups ESC DIY Firmware Flashing thread.
As you can see, they look very much like the Turnigy 25A ESCs pictured on RCGroups. These are actually old style ESCs. The new Turnigy 25A ESCs use chips from Silicon Labs and will not work with the SimonK firmware. Since these looked flashable, I decided to give it a go.
N-Fet and External Oscillator ESC Design
I later learned that these ESCs have N-FETs and P-FETs (little electronic switches). ESCs with only N-FETs and an external oscillator run cooler and perform better with the SimonK code and would have been a better choice.
You never know for sure what will be under the heatshrink and I haven’t tried or tested any of these ESCs, but here is a list of some ESCs that others suggest using. Keep in mind that many of these may not have flashing pads and may require connecting directly to the processor or other places on the board.
Mystery 12A Brushless Speed Controller (Blue Series)
Mystery 20A Brushless Speed Controller (Blue Series)
Mystery 30A BEC Brushless Speed Controller (Blue Series)
Mystery 40A Brushless Speed Controller (Blue Series)
HobbyKing 12A BlueSeries Brushless Speed Controller
HobbyKing 20A BlueSeries Brushless Speed Controller
HobbyKing 30A BlueSeries Brushless Speed Controller
HobbyKing 40A BlueSeries Brushless Speed Controller
Hobby King 20A ESC 3A UBEC
Hobby King 30A ESC 3A UBEC
Hobby King 40A ESC 4A UBEC
Flashing Rig
First, I had to build a rig to flash the ESCs. After seeing many rigs built with clothespins, I used the following materials I had on hand to build my own flashing rig:
- 1 Clothespin
- 2 Servo Connectors
- 1 Hacksaw blade
- Duct tape
- Hot glue gun and glue stick
- USBasp AVR programmer (these can be purchased on ebay
)
Building the Flashing Rig
The objective of the rig is to connect 6 pins on the USBasp AVR programmer to the corresponding programming pads on the ESC. The pins that have to be connected are MOSI (master out slave in), MISO (master in slave out), SCK (serial clock), VCC((2.7 – 6.0 V power), GND(common ground), RESET(reset). Here is a document with more information on how Atmel AVR programmers work. I didn’t power the ESC. The only power was what was coming from the USBasp programmer.
- To make the connections, I used two servo connecters, each one has three wires.
- I used a small screwdriver to lift up the tab holding the male and female connectors inside their plastic casing.
- The male connectors make contact with the programming pads on the ESC, while the female connectors attach directly to the USBasp.
- I connected the six female connectors to the pins labeled MOSI, MISO, SCK, VCC, GND and RESET on the USBasp programmer then lined them up in the order needed to make the connections to the correct programming pads on the ESC.
- To help hold the male connectors together in the correct order I wrapped them in a piece of duct tape.
- I then sawed off one end of a wood clothes pin and used hot glue to attach the male pins wrapped in duct tape to the end of the sawed off clothes pin.
- I had to bend the male pins a little to make them line up with the programming pads.
Firmware to Flash the ESCs
To flash and ESC you have to have the appropriate .hex flash file. Since my ESC is a clone of the Turnigy/Hobbywing ESCs, I used the file called tgy.hex. All of the SimonK .hex flash files can be downloaded here. There is also a spreadsheet that matches up ESCs with .hex flash files.
Software to Flash the ESCs
A software program is used to write the .hex file to the ESC using the USBasp device. The appropriate drivers must also be loaded for the software program to recognize the USBasp device. Download information about some of these software programs and drivers can be found at www.fischl.de. I used the Khazama AVR programmer software. It is very easy to use and an excellent program.
Flashing the ESCs
The actually flashing was very easy and here are the steps I used:
- I connected the USBasp to my computers USB port.
- I touched the male pins of my flashing rig to the programming pads on my ESC.
- I didn’t use any external power other than what was coming from my USBasp to power the ESC.
- I ran the Khazama program.
- I chose “Load FLASH file to Buffer” from the File menu and chose the tgy.hex file I had downloaded.
- Under “AVR:” I chose the ATMEGA8 processor to match the processor on my ESC.
- Finally, I chose “Write FLASH Buffer to Chip” from the Command menu.
- The program showed a little progress bar showing that the flash was being written.
- After a few seconds it completed successfully.
The only challenge with the above process was to make sure the pins were making a good contact with the programming pads on my ESCs. When there wasn’t a good connection, the flashing process failed, but I just kept trying until I had a good connection.
Calibrating the ESCs
The final step was to calibrate the throttle with the ESC. Here is how I did it:
- I connected each ESC to my quadcopter.
- I removed all of the propellers.
- One by one, I attached the BEC connection from each ESC to the throttle connection on my receiver.
- I powered the quadcopter.
- I turned on my transmitter with the throttle stick all the way up at max throttle and heard a beep.
- I moved the throttle stick all the way down to min throttle.
- I heard a few more beeps.
- The ESC is then calibrated and the motor runs smoothly.
Conclusion
That is how it worked for me. My quad is more stable and quicker to react, but these ESCs run a little hot. I probably should have flashed an all NFet design ESC instead. The ESCs I flashed are 25 amp ESCs and they run hot with my KDA motors that have a max current of 20 amps. However, when I run them on my SK3 Motors that have a max current of 13 amps, they only get warm. Here is a youtube video that does a before and after comparison test:
If you decide to attempt this, I recommend reading all of the information I linked to in this post to make sure it is being done correctly.
Hat Tip – Donate to SimonK for all of his hard work!



Hi! I’m new in this “war” and i need some help: 1) I build a +quadcopter with 4 Mystery 20amp connected to a hk board atmel V2.1 168. I cannot calibrate throttle. After follow all procedures when i turn on flight board instead receive the usual 2 beeps i receive only one beep and immediatly motors goes to full power!! Can you help me with some sugestion to cross this problem? (EScs not flashed yet).
2) I pretend to flash this esc, but if i do, i will cross this problem with throttle calibration?
3)And after flash is still need to do throttle calibration?
4) After flash any esc, does it still work with program card? or after flash no need anymore that cards?
Hopping your best help!
Regards and congratulations for all excellent job!
Paulo
How are you doing the throttle calibration? What are the specific steps you are following?
1) I turn on radio
2) Throttle stick full up
3) yaw pot at board to “zero”
4) I turn on board
5) i listen 1 beep
6) all motors start run at full power
Can be some problem with ESC? (MYSTERY 20amp – blue series)
Note: Please give me some coments about points 2,3 and 4 of my last post.
Regards,
Paulo
I don’t have that board so I am not sure if calibrating the escs will work that way. Another way to calibrate them is to do it individually by connecting the ESC bec directly to the receiver throttle connector.
No, you won’t be able to use the programming card and yes you will need to calibrate them again.
Thanks a lot for help. So, after ESC been flashed we only can calibrate throttle. No more acess to ESC features with programing card. In this case i presume after flashing ESC all features needed to control quad are already inside esc. Correct? Thanks again and congratulations for so good job! Paulo
Yes, that is correct.
very nice guide, thanks
Thank you for this good article, very informative.
One question, it’s works for Turnigy TY-P1 25Amp HEXFET® Brushless Speed Controller?
Thanks.
It looks like according to this spreadsheet they are flashable with the bs.hex firmware.
thanks..
hi, is possible on HK redbrik 20A? thank!
There seems to be an issue with those escs being locked where they can’t be programmed per this post from timecop who is an expert on flashing. Here is a post he wrote about it:
http://www.rcgroups.com/forums/showthread.php?t=1513678&page=292&highlight=redbrick+lock#post22037207
I have a hobbyking blue series 20A ESC but some people say don’t need custom firmware that blue series ESC is can change the 8k/ 16k frequency at programming and some people say need it. i don’t know who right the issue.let me know do i need custom firmware or no?
I would try them first and if they perform well don’t flash them. If not, it may be worth giving it a try. I have some 30amp blue series on order. I will try and give an update on how they work for me.
Britt..Is there any specific ESC in 30A range for quadcopters that are flashable with Simonk’s firmware and that are available in the market as of now?. I had a Hobbywing Skywalker 20A ESC, When i opened it seems they have the new SIL chipset, can’t flashed i think.
Did you see this one?
http://wiki.openpilot.org/m/view-page.action?pageId=24150569#ESCreferences-RcTimerDYS30A
Maybe it would work.
I got it thx.
Check this out:
http://forums.openpilot.org/topic/10476-best-simonk-flashable-escs/page__st__60
Hmm, I don’t see those on the rc timer website, but they show up other places.
I’m using the Hobbywing Skywalker 20A ESC’s as well and you are right, you can’t flash them with Simon K’s firmware since they use the silabs chips
. Too bad because i think they give a little sluggish throttle response.
I wonder if there is a solution. It seems to be an <a href="http://helifreak.com/showpost.php?p=4176007&postcount=1762" ESC based on the F330. (click)
There is a picture of the 20A PCB and some other guy reported success with a Hobbywing Platinum 10A. Maybe it’s possible to compare both based on the layout.
Thanks for the information Britt.
Is this the same procedure for Dynam Detrum 30A ESC (3A BEC) ?.
http://www.hobbypartz.com/60p-dye-1003-30a-esc.html
I think the process would be the same, but I would look for an all NFet ESC instead of the Dynams. The folks in the RCGroups thread above have found the best ones.
Here is a good link for possible ESCs
http://wiki.openpilot.org/pages/viewpage.action?pageId=24150569#ESCreferences-TurnigyPlush18ATurnigyBasic18AHobbywingPentium18A
Another problem though is that some of the brands have switched to non atmel chips. The firmware only works on atmel chips.
Very nice article.Did you test them on the quad and how do they perform so far?.Is it necessary to completely cut the heat shrink wrap or jut remove where ever the pads are for this model ESC’s?
When I used them they ran fine, but too hot. I would suggest only doing it with an all NFet design ESC. I quit using them because I had one fail. I think the overheating was why. The rcgroups thread pretty much confirms this. I have yet to try it with an all NFet ESC. And yeah, you can just cut the pad area away.
Hello, I can load the firmware on the ESC, but it does not work on my esc (MAG8 tower pro 18A)
What can I do??
Thanks for the answer
Have you calIbrated the throttle? What happens? Hearing any beeps?
Thank you very much for this well-written and easy-to-follow guide. You are great at teaching. Much appreciated.
Regards,
Andy