Anduril Flashlight Reflash Reference

Quick compilation of Anduril Flashlights and their firmware reflash procedures. Updated version of an older Reddit post (which has also been updated) - For more details, visit Unofficial Guide to Updating Anduril Firmware — Unofficial Guide to Updating Anduril Firmware


Anduril-based flashlights make use of Atmel ATTINY microcontrollers (MCUs) for output/mode control, which can can be reflashed with updated or modified firmware.

Reflashing any light (except for AT1616-equipped models) will require the use of a USBasp AVR programming board. This is a cheap device which plugs into a USB port and allows for interfacing with AVR MCUs. They can easily be found on Amazon and Aliexpress. (link1, link2)

The reflashing process may depend on the light in question. Many flashlight drivers have exposed pads on their underside that allow for easy access to the MCU programming pins, making reflashing simple. Lights that do not have exposed flashing pads will require interfacing via other means, such as MCU programming clips (Amazon SOIC8 Clip)

Reflashing can be done with a PC, Mac, or Android phone. These guides cover the software side of reflashing: (ATTINY1634, 85) (ATTINTY1616 - AVRDUDE)

IMPORTANT!!
Before reflashing, verify the firmware build used by your flashlight. 15C from off will enter version check mode, which blinks to display the date and model: YYYY-MM-DD ####

The last four-number model code must be matched to the firmware build you decide to flash onto your light. A list of builds can be found at these links: https://toykeeper.net/torches/fsm/anduril2/MODELS

~gabe/flashlight-firmware/anduril2 : contents of ToyKeeper/spaghetti-monster/anduril/MODELS at revision 631

One of the most popular MCUs is the ATTINY1634. This MCU is used by:

  • All Emisar/Noctigon flashlights (except Emisar D18) - 2:4 pinout
  • Older high-end FireFlies lights (E07x Pro, E12R, NOV-Mu, T9R) - 2:4 pinout
  • Lume 1 drivers (Found in Lumintop FW3X) - 2:4 pinout (newer drivers, 01/20 rev B, have two pins swapped)
  • Jetbeam EC26 - 6 pinout (unique)

The kit for flashing lights with the 2:4 pinout can be purchased here:

This kit contains 1 USBasp programming board and an adapter cable with pogo pins for interfacing with the pads on the driver. The USBasp is a generic component and can be easily replaced. This guide covers the use of the adapter:
Emisar D4V2 Flash Kit Instructions (Official How To) - LED Flashlights – General Info - BudgetLightForum.com

The other most common MCU used in Anduril lights is the ATTINY85. This is found in:

  • Many Lumintop lights (FW-series, BLF-GT/GT mini, EDC18)
  • Older Emisar/Noctigon lights (D1, D1S, D4, D4S, D18)
  • Many FireFlies lights (E07, rot66/rot66G2, PL47, E01, PL09Mu) - 3:4 pinout, effectively 3:3 as one pin is unused
  • Wurkkos TS21 (older 2021/22 version)
  • Several Sofirn lights (LT1, SP36) - LT1 and some SP36 lights have a 3:3 pinout
  • Astrolux/Mateminco Anduril lights (MF01s, MF01 mini)

Some of the these lights will have a 3:3 pad layout on the driver, but most do not have exposed flashing pads. These are going to take more effort to reflash. The Emisar adapter can be used for this, though some extra effort will be required. Please refer to the guides below:

(Lumintop FW3A): FW3A Firmware Flashing Guide

(Sofirn LT1): https://www.reddit.com/r/flashlight/comments/msiiqb/a\_brief\_guide\_for\_flashing\_your\_lt1\_with\_new/

(FireFlies PL47G2): Flashing a Fireflies PL47G2 with new firmware - pingle.org

Some lights will require disassembly to reflash. Please refer to these guides:

(Emisar D18): https://www.reddit.com/r/flashlight/comments/krvuup/guide_on_updating_an_emisar_d18_to_a_diy_version/

(Sofirn SP36 Pro): Flashing a 2020 Sofirn SP36 Pro with new firmware - pingle.org

Finally, there are an increasing number of Anduril-based lights with ATTINY1616 controllers:

  • Sofirn SP10s/SP10 Pro, Q8, some versions of SP36, SC31 Pro, LT1 Mini - SP10 pro uses 3-pad pinout (layout variations exist)
  • Wurkkos TS10, TS25, TS11, FC13, New TS21 - 3-pinout (similar or same as SP10 Pro)
  • New Lume X1 drivers
    • Fireflies E07x Pro, E12C, T1R, T9R, NOV-Mu (updated 2022/23 versions) - same 3-pad pinout
  • Sofirn SC21 Pro - Unique 6-pads with 3 pads in use (this guide covers reflashing the SC21)

These lights will require a different USB Serial to TTL module (Amazon link)

The procedure for these lights will be different, please refer to this guide: Flashing a 3-pin ATtiny1616 Flashlight with New Firmware - pingle.org (includes info on the AVRDUDE and pymcuprog methods)

For the TS10/3out Drivers, US buyers can reach out to user gchart to purchase custom flashing adapters (BLF, Reddit), or you you can purchase from JLHawaii808:

Those outside the US can purchase from thefreeman: WTS : USB-UPDI Flashing adapters for Attiny1616/AVR32DD20 drivers (Sofirn/Wurkkos/Firelylite)

While any of these lights can be reflashed if desired, if you are looking to start experimenting with firmware, the Emisar/Noctigon lineup is a great place to start, as they all use a standard system that is easy to work with.


Thanks to u/jim-p, @Zumlin, @Adair21, @DerMaxPower, u/CrentistDDS, @containerfan, @jon_slider, @gchart, @Terry_Oregon, @crgbt, @thefreeman, @ToyKeeper for much of the information and links here.

CHANGELOG:
2-20-2023 - Added new lights, links to ATTINY1616 instructions
2-22-2023 - Added freeman’s reflashing adapter
2-23-2023 - Added extra info for Sofirn/Wurkkos lights, added version check/firmware build instructions

17 Thanks

What a fantastic, comprehensive resource. This will be bookmarked here and in my browser’s bookmark manager.

I nominate & encourage this post to be stickied!

Thank you so much LuxWad! - JC

3 Thanks

Excellent and amazing post. I wish this had been here a few months ago as I had to do some extensive research before updating all.my lights.

This needs to be stickied!

4 Thanks

There are different 3-pad layouts, so I’ve been referring to the standard one as Gchart’s 3-pad layout, since he came up with it. The layout is + - R with a 1.27mm (50mil) pitch.

I also sell an USB-UPDI adapter for drivers using Gchart’s layout, mainly for people outside the US since shipping costs less for me, well except that I’m out of stock at the moment :sweat_smile:

There is also AVRDUDESS, a GUI for AVRDUDE, and ZflasherAVR for Android that people tend to prefer using over command line software.

4 Thanks

Thanks for the added info, I put your flashing tool link into the main post.

Do you know which lights have which layout? It’s gotten quite difficult to keep them all straight at this point

1 Thank

I ordered a TS21 Jan 19th 2023 direct from Wurkkos and it has flashing Pads R-G-V
Firmware: 2022-02-08 0614 (Sofirn-sp36-t1616 attiny1616)

Left an older TS21 from July 2022, right new TS21
So we have both μC versions.

5 Thanks

Thanks for putting this info together! Guides like this are a great help for people trying to navigate complicated topics.

It’s too bad we haven’t gotten manufacturers to abide by any standards, no? It’d be nice if there was only one pad layout for each of the 3- and 6-pin MCUs… and only one adapter needed for each MCU family.

Anyway, it’d probably be a good idea to mention one of the most important steps in reflashing:

  • Run Version Check Mode first, and write down what it says.

This helps the user find the correct firmware to put on it. In particular, the last 4 digits (model number) are useful in figuring out which files are compatible.

3 Thanks

Btw. Do we have any old firmware for clicky drivers? I think they use the Attiny13 or 25??

1 Thank

Awesome, thanks for sharing this info and the image! I’ll update the guide.

The firmware repository has several projects which run on old clicky-switch drivers. However, Anduril requires an e-switch, and a tiny85 or better.

Firmware for clicky-switch lights is listed in the repository’s INDEX file, under “Button-Type” and then “clicky:”. Projects are also tagged with the type(s) of MCU they support, to help people locate suitable code to run on their hardware.

1 Thank

Does any of these projects run on Convoy S2+ forward clickies?

For any of the e-switch Convoys, is there an Andurilb port?

I’m really trying to get into Convoys, but without Anduril, no way.

1 Thank

I’m not aware of any Convoy lights which run Anduril. However, some can run a reasonably wide variety of attiny13a clicky-switch firmwares, and even more are compatible with standard-sized drivers.

I use my “s7” firmware on most of mine, written for the Convoy S7 (but it runs on any nanjg-style driver). It’s an offtime-no-memory interface, so it advances to the next mode on short press, or resets to the beginning on long press (or off). Modes go from low to high, and then it has extras like battcheck and several interesting strobes, beacons, bike flashers, etc. It’s one of my oldest and most primitive UIs, but also still one of my favorites.

Some models can also run Crescendo, but I don’t recommend it because it really needs a 2-channel driver to make the ramping work well. Also a tiny25 MCU. And Crescendo is a bit awkward, since it’s a clicky-switch ramping UI, and that’s simply an awkward fit.

Some Convoy models ship with Biscotti, a very stripped-down version of Bistro. But most now ship instead with a derivative of Biscotti that Simon had made… mostly so he could do all his development locally instead of asking me to do it. I don’t think the derivative uses the same hardware, so it isn’t compatible for reflashing.

Or there are several other compatible firmwares in the repository.

Or it’s still possible to buy 17mm drivers to put into Convoy lights. That one can ship with Bistro, Crescendo, or some other UIs…


2 Thanks

Most Convoy drivers use a Sonix MCU, no idea if Anduril could be ported on it.

Edit : that one : SN8F5700 - 松翰科技 :: Sonix Technology Co., Ltd. :: SN8F570200

3 Thanks

Yeah that would be extremely nice, or at the very least, manufacturers should provide easily accessible info on what MCU and flashing layout they’re using, and notify us when changes are made.

Even better, I wish companies like Sofirn/Wurkkos, Fireflies, etc would provide their own flashing kits and documentation, especially if they want to use something different from everyone else.

Thanks for reminding me to add the version check information!

1 Thank

I have a D4SV2 purchased from Hank in mid 2021. It’s running Anduril 1 and I plan to upgrade it to Anduril 2 using the Android app and Hank’s kit.

Following the good advice to record the current firmware version before starting, but 15C does not seem to do anything, not even provide the date. I notice that the Anduril 1 UI diagrams I’ve seen don’t seem to show this feature, but several places mention it for both 1 and 2.

Was that feature not included in some Anduril 1 builds that Hank used?

1 Thank

Yes, some older (and manufacturer custom) builds do not include the model check feature.

However, all D4SV2 models before late 2021 used the FET+3+1 driver, which should be the emisar-d4sv2.hex (model no 0133)

2 Thanks

Thanks for clarifying

1 Thank

Most Convoy drivers use a Sonix MCU

Had a look and the Sonix costs $0.05 ea. in 1000 quantities: This product is no longer available.

A dyed-in-the-wool attiny1616 costs $0.10 ea. at the same quantities: ATTINY1616-MFR Microchip Technology | Integrated Circuits (ICs) | DigiKey

So, everything else being the same, Simon is saving 5 pennies on the Sonyx. :unamused:

I’m pretty sure most people would happily pay a dollar for a Anduril-capable light, which would net him a 1900% profit by offering Anduril.

All of this, of course, being applicable only for his e-switch lights.

EDIT: and it seems there’s no shortage of people wanting Anduril Convoys: https://www.reddit.com/r/flashlight/comments/118cc4f/would_you_be_willing_to_pay_a_reasonable_extra/

3 Thanks

Thank you TK for the very detailed, comprehensive answer!

1 Thank

I’m using the USBASP flash kit from Hank and it works perfect from my pc using avrdude command line. However, when I try to use Zflasher AVR on my Android phone, it does not detect the programmer. I’ve verified OTG is working, meaning I can connect a USB flash drive to it and it reads and writes just fine. Has anybody run into something like this and were you able to work around it?