Change Bootloader on ESC – ATMEL

by Oscar

Just a quick post on how to change bootloader on an ESC, from SimonK to BLHeli. Or if you are not sure what bootloader you have got, you can just flash it anyway to make sure.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

The benefit of having a bootloader is to allow you to use 1-wire interface or Flight controller pass-through connections, when you configure or update ESC firmware.

If you are not sure what Bootloader you have got on your ESCs, easiest way to check is try to establish 1-wire interface in BLHeliSuite, try both SimonK and BLehli options see which one works. If none of these works, it probably indicates there is no bootloader installed.

To install or change bootloader on a ATMEL chip based ESC, you need to write to the chip directly with an USBASP programmer, something like an Arduino UNO or Nano. 1-wire interface CANNOT change bootloader!

Examples of ATMEL ESCs are: DYS SN20A, Blue Series ESC, Afro ESC, and Armattan ESC.

To connect to the chip, easiest way is to get a ATMEL chip Flashing Tool, which goes on top of the chip directly. Here is a quick demo of how it works.


Some ESC’s ATMEL chips are too small for the flashing tool, so they provide soldering pads such as the SN20A / BL20A, they are connected to the pins on the chip directly. Therefore you can solder wires to the pads and no need for a flashing tool.



Flashing through USBASP, ESC doesn’t require connecting to any battery. 5V source goes thought the harness from Arduino. Note: Steady hands are required :)

arduino-flash-esc-header-pin-solder-pad-clamp-diy dys-sn20a-esc-blheli-flash-firmware


And when you flashing the BLHeli firmware on your ESC, you will be asked to to


We don’t get asked as often with Silabs ESC, because they usually come with BLHeli bootloader already.

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.


Casey Morton 18th August 2016 - 5:16 pm

About the SiLabs remark on at the end: The stock ESCs for the Eachine Racer 250 are SiLabs with the SK bootloader. When flashing through the 3 pads on the boadrd I dont get an option in BLHeli Suite to change the BL. How do you accomplish this?

Oscar 22nd August 2016 - 3:03 pm

It’s likely that you are not flashing the ESC MCU directly but through the bootloader interface.
There should be 4 pads you need to connect on the Silabs i think? (GND, PWR, c2d, c2ck)

Jason 20th January 2016 - 10:22 pm

Oscar, thanks so much for all your efforts!! I have a USBasp tool, and trying to figure out if I am flashing only the bootloader with this tool, or if I can use it to flash firmware also. I do not have an Arduino. I know my SN20a have SK bootloader, so I cannot use the FC to flash the latest BL firmware. If I understand this post correctly, I can use the USBasp to flash BL bootloader, which would allow me to flash firmware with my Naze32 via Betaflight in the future. I don’t want to solder to the 6-pin pads everytime, so flashing the BL bootloader would be helpful. Will this work with my USBasp? Thank you.

Oscar 25th January 2016 - 7:58 pm

Hi Jason, yes a USBASP should work for flashing bootloader as well as firmware.. in fact the Arduino is being used as a USBASP programmer here…
lastly… i would really appreciate it if you could post your questions on the forum: … I only check my blog comments once a week, but I use the forum everyday!

ronald 18th January 2016 - 11:07 am

hi oscar
i got no luck when connecting sn20a with my china nano v3
able to let the nano know the esc is here, but wont be able to write the bootloader can u help?

John 2nd December 2015 - 10:22 am

Hi Oscar, this is great stuff. I tried tonight on my SN20A using a Adruino Nano V3 and BLHeli 14301. I couldn’t get it to connect. I searched online for the proper pin out and used this as reference I verified with a multi-reader that 5v was coming off the lead but still no luck.

What type of interface do I need to use within BLHeli? I tired AdruinoUSBLinker (SK Bootloader). This is what I used to flash BLHeli using pin D3 and GRND on my Arduino. It worked without issue.

Any other advice?

JASON CLEVENGER 1st December 2015 - 2:38 pm

Sorry I was at work and rushed, I have read your blog and understand the difference between sk and bl bootloader. I think my problem is that I only have a afro stick and rcx usb linker which if I read correctly won’t work with bl bootloader, is that correct, and if so what would I need to change settings, oneshot dampened light etc on esc. THANK YOU FOR ANY HELP YOU CAN OFFER.

Oscar 1st December 2015 - 5:12 pm

Not sure if you know Betaflight? you can try flashing ESC via Flight controller!

JASON CLEVENGER 1st December 2015 - 2:18 pm

High Oscar, I have the my rcmart littlebee with blheli, how to I change the settings? I cannot get the esc to connect to blheli suite. It did work with a afro 30a so I know everything is working on the computer side. What am I doing wrong?

Oscar 1st December 2015 - 5:10 pm

maybe you chosen the wrong interface in Blhelisuite? note that littlebee esc are Silabs, Afros are ATMEL.

JASON CLEVENGER 2nd December 2015 - 3:48 pm

Thanks for the reply! I tried them all, what I am reading an understanding is that if I have a silab esc with blheli bootloader I need to use somthing like a arduino nano for programming, does that sound right to you? And thanks again for your help.

Oscar 3rd December 2015 - 10:39 am

yes Arduino should work

Markus 29th November 2015 - 1:27 am

Hi Oscar
Thanks for that! I always ask myself how to change the bootloader on my SN20a’s without programming tool. Could you tell me/us which pins on the arduino uno are needed? 5V and Ground is no problem, but what about the other 4 pins? Thanks and greets from Germany! Markus

Oscar 30th November 2015 - 1:22 pm

Try this

 // pin name: not-mega: mega(1280 and 2560) // slave reset: 10: 53 // MOSI: 11: 51 // MISO: 12: 50 // SCK: 13: 52 // 5V: 5V: 5V // GND: GND: GND 
Marlon 13th January 2016 - 7:32 am

Hi Oscar,

Is there a required written to arduino to make this work?

Oscar 20th January 2016 - 9:57 am

BLHeliSuite has a tool to make your arduino a ESC programmer, maybe have a read in their manual?