Astrolux FT03 ‘upgrade’ to Anduril2

I purchased an Astrolux FT03 torch / flashlight which was advertised with NalsilM firmware.

Some research indicated that I should be able to ‘upgrade’ it to Anduril2 so that its UI was compatible with some other torches I have.

Above is the Astrolux FT03 as received.

Above is a pic of the driver end of the torch with the barrel removed, the driver is behind this ring and insulating disk. I did not gouge the ring, it came from the factory like that and I have yet to disassemble it.

Carefully removing the ring and disc, we see the driver plate with 6 pads for ISP. Four of these had dobs of solder on them (which seemed strange), so I reworked them all to have a similar size dob of solder. The driver pads are not on even pitch, much less a standard pitch.

Above, a USBASP was used with a probe of 6 pogo pins (P50-LM2 pins pushed into an ordinary female header) to make contact with the driver board. This existing probe was good enough to make reliable contact and permit re-programming the firmware. There are better pogo ends to use, but this probe exists and it worked ok.

A batch file was written to capture the commands and configuration.

@echo off
rem Use 3.3V to target

echo.
echo Processing
echo.
set FL=
if *%FL%==* set FL=D:\src\Anduril2\anduril.2020-03-18.mateminco-mt35mini.hex
echo FL=%FL%
if *%PRG%==* set PRG=usbasp
echo PRG=%PRG%
set PORT=usb
set OPTS=-B 1
set DEVICE=t85
set AVRDUDE=avrdude
rem AVRDUDE now likes unused fuse bits set to 1
set EFUSE=0xFF
set HFUSE=0xDE
set LFUSE=0xE2


:flash
echo.
echo Write (%FL%)...
echo.

echo on
%AVRDUDE% %OPTS% -c %PRG% -P %PORT% -p %DEVICE% -e -Uefuse:w:%EFUSE%:m -Uhfuse:w:%HFUSE%:m -Ulfuse:w:%LFUSE%:m -U flash:w:%FL%:i
@echo off
goto cleanup

:usage
echo %0
goto end

:cleanup
echo.
:end
pause

Above, the bat file content.

D:\src\Anduril2>write

Processing

FL=D:\src\Anduril2\anduril.2020-03-18.mateminco-mt35mini.hex
PRG=usbasp

Write (D:\src\Anduril2\anduril.2020-03-18.mateminco-mt35mini.hex)...


D:\src\Anduril2>avrdude -B 1 -c usbasp -P usb -p t85 -e -Uefuse:w:0xFF:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xE2:m -U flash:w:D:\src\Anduril2\anduril.2020-03-18.mateminco-mt35mini.hex:i

avrdude: set SCK frequency to 750000 Hz
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e930b (probably t85)
avrdude: erasing chip
avrdude: set SCK frequency to 750000 Hz
avrdude: reading input file "0xFF"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFF:

Reading | ################################################## | 100% 0.00s

avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDE"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDE:

Reading | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xE2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xE2:

Reading | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse verified
avrdude: reading input file "D:\src\Anduril2\anduril.2020-03-18.mateminco-mt35mini.hex"
avrdude: writing flash (7868 bytes):

Writing | ################################################## | 100% 2.08s

avrdude: 7868 bytes of flash written
avrdude: verifying flash memory against D:\src\Anduril2\anduril.2020-03-18.mateminco-mt35mini.hex:

Reading | ################################################## | 100% 1.65s

avrdude: 7868 bytes of flash verified

avrdude done.  Thank you.


Press any key to continue . . .

D:\src\Anduril2>

Above is the console log of the operation.

Plug a USB3 cable into the charging jack before tightening the brass ring, it will hold the module located so that a cable can be plugged in after it is reassembled.

After reassembling the torch, the thing was reset to factory settings to clear any residual EEPROM data. (This should be done at around 21° to calibrate the temperature sensor.)

The process for this is:

  1. loosen tailcap;
  2. hold button;
  3. tighten tailcap; and
  4. keep holding button for about 4s.

The light should flicker while getting brighter, then briefly burst to full power. Hold until it reaches full power to do a reset, or let go of the button early to abort.

Some newer models appear to use an ATTiny1616 (or another tinyAVR 0-series chip) and UPDI programming. I have a SP10Pro which appears to have three pads for UPDI programming.

Above is a pic of the back of the driver board of an SP10Pro.