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:
- loosen tailcap;
- hold button;
- tighten tailcap; and
- 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.