Flashlight Firmware Repository

The T1616 DFP error message should point to a readme in /bin IIRC, where there are instructions for installing it (downloading and pointing to its path in build.sh or something).

I use FreeBSD for development and I downloaded the firmware repository:

1. anduril2 : Code : Flashlight Firmware Repository

bzr which I used on FreeBSD 13.0 to download an older snapshot is longer supported on FreeBSD 13.1. brz is available as a port/pkg but I didn’t need it after all as despite the comment above of the download on launchpad not working, I just tried it and it did work:

2. click “Browse the code”, then “view revision”, then “download tarball”.

Then install software:

3 pkg install avr-gcc

4 pkg install avr-libc
This uses avr-libc 2.0.0 so I later modified the port to compile 2.1.0

5 for linuxisms (bash): ln -s /usr/local/bin/bash /bin/bash

6. The README in the zip says to download an Atmel pack for newer attiny1 series (needed as I wanted to change the firmware in the latest version of the SC31pro).

http://packs.download.atmel.com/

and use the environment variable as stated in the README

7. Compiling.
I had already tried to compile for example ‘crescendo’ before downloading the Atmel pack and before updating avr-libc and that worked fine.

===
The 2 pocket lamps I want to reprogram are, with version/type identifier if I counted correctly:

- SC31pro, version check says: 2022 02 08 (then not a zero but a long pause, I guess this is a change in later anduril versions to not give leading zeroes but a long pause) 614 [ From the table of models/firmwares: 614 = sofirn-sp36-t1616 attiny1616, is that correct? ]

- D4V2 219b sw45k + boost driver: 2021 11 12 0273 [ 0273 = noctigon-dm11-12v attiny1634, is that correct? ]

===
I tried hello_world and which gave errors, the inline functions are not recognized or not treated correctly by the compiler it seems:

JonnyC/STAR/STAR:
avr-gcc -Wall -g -Os -mmcu=attiny13 -o STAR STAR.c

/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: /tmp//ccOwF4CX.o: in function `main’:
anduril2-r653/JonnyC/STAR/STAR/STAR.c:(.text.startup+0x8): undefined reference to `ADC_on’
/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: /tmp//ccOwF4CX.o: in function `__vector_8’:

etc.
Same happens in hello_world.
Removing the ‘inline’ keyword makes them compile. Weird, what could be the issue?

Then in ToyKeeper/spaghetti-monster/anduril/

‘make’ gives:
= 40 builds succeeded, 22 failed =

Some give too much code such as:

= emisar-d4s-219c =
/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: anduril.elf section `.data’ will not fit in region `text’
/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: region `text’ overflowed by 10 bytes
collect2: error: ld returned 1 exit status

then the attiny1 series give other issues:
= sofirn-sp36-t1616 =
In file included from …/fsm-standby.c:24,
from …/spaghetti-monster.h:74,
from anduril.c:92:
…/fsm-standby.c: In function ‘sleep_until_eswitch_pressed’:
…/fsm-standby.c:59:9: error: ‘MCUCR’ undeclared (first use in this function)
59 | set_sleep_mode(SLEEP_MODE_PWR_DOWN);
| ^~
MCUCR looks to be defined in many header files in the Atmel pack but not for the attiny1616, unless it uses another include too which for some reason doesn’t get included.

The avr-gcc compiler version number (avr-gcc -v) is 11.2.0

Any ideas on what to do to fix this?

Have you tried this? It shows Python 3.7 to 3.9: FreshPorts -- devel/brz: Distributed version control system based on bzr

Then use Docker with my image to compile. Or use the latest development version of avr-libc and version 11 of avr-gcc without DFP.

There shouldn’t be a pause but a very short blink. But the version and model sounds right.

If it’s what version check says… Emisar/Noctigon got very confusing with their driver and host combinations.

That example is not maintained anymore. Only Anduril/FSM is maintained.

avr-gcc 11 will create larger files than version 10 and it won’t fit.

That is an incompatibility between avr-libc and the DFP. Just use the latest development build of avr-libc without DFP (or my docker image).

There is a port of brz so I could use that but as downloading tarball works I skipped it.

I will have a look at your docker files and devel versions of avr-libc.

Definitely no zero, but instead a pause. I made a video of the output of both lamps so I could check the counting, without having to go into version check multiple times to be sure. I had a look again, no zero…

Yes, but it should compile or not? Is ‘inline’ no longer working correctly? Seems weird.

Different compiler version and language version. You can make it ‘static inline’. inline on its own was never really a good idea.

I tried docker but for some reason the daemon doesn’t want to start, there is some contradictory information about renamed files in the FBSD guide so I will look into that later.

The main thing is to get the firmware for the D4V2 compiled and the SC31pro, not worried about code size as I will remove code anyway, so could you give the steps to compile the devel version of avr-libc? There is no configure file (logically) and though I have automake and autoconf installed, trying those I get errors about missing M4 files. This information would probably be useful for anyone else who wants to do this.

Maybe my build file for the package helps: anduril-buildenv-docker/APKBUILD_avr-libc at master · SammysHP/anduril-buildenv-docker · GitHub

The TS25 has Anduril2 and flash pads. I can wrangle C. Where is the source code for this light?

The code in bazaar.net looks to not have been updated for a couple of years.

The code on Toykeeper’s site is more current, but I don’t see any Wurkkos products.

The version is: 202207250715.

You need a build from @gchart.

Thanks, after looking at @gchart 's posts I came across this, but it’s still unclear where the source is for this light.

It should be in this branch:

https://code.launchpad.net/~gabe/flashlight-firmware/anduril2

Unpinned !

Looks to be it, thank you!

I’m trying to get “dynamic” mode group changes running with bistro.

Meaning that it changes between mode_group 1 and 2 with a triple tap

For that I removed the whole bit after

if (fast_presses > 0x0f)

And added

if (fast_presses > 5) {  // Config mode
            _delay_s();       // wait for user to stop fast-pressing button
            fast_presses = 0; // exit this mode after one use
			mode_idx = 0;
			if (modegroup == 0) {
				modegroup = 1;
			}
			else {
				modegroup = 0;
			}
			save_state();
			restore_state();
			output = modes[mode_idx];
            actual_level = output;

But it doesn’t seem to switch the group on the fly.
It wont switch between mode_group 1 and 2

Has anyone done something similiar before?
I know that lucidrv for example does the Turbo-Shortcut so it must be possible

Hello, on an S2+ with 4 modes 0.1% -3% -30% -100%.

Doesn’t this type have a tiny type micro controller and I can’t change it to 12 modes?

Or does it have a hidden function to change the mode.

I would like to have strobe.

I would like to have something like this 0.1% -3% -30% -100% -Strobe or another mode that includes it.

Thank you.

Many Convoy drivers don’t use the ATtiny microcontroller anymore, but a different controller that cannot be updated.

1 Thank

Ok I thought so, it would be nice if they were all mode 12 but locked in 4 and choose each one the mode.

I didn’t know anything about this and it was the first one I saw I just noticed it was with the sst40.

I still don’t have it, but I know about electrical and programming if I open it I would see it right away but I guess if it warns that they are 4 modes it will have a cheap ic that just does that.

It is a theory, without opening it I do not know.

Even if it matches the pibes could be soldered an atiny I have several models of 8 pins in smd.

Thanks for the heads up nor will I open it will be as you say.

Hi all, It’s been eternity plus 5 months since I’ve flashed any drivers and now I cant remember. I’m working on something very basic. I have the old STAR firmware loaded into Atmel Studio 7.0.

  1. EDIT: Nevermind the first part, I figured that out.

  2. Also I cant remember. When I flash a 7135 driver can I just flash it with OFF time memory code, or does it require different hardware on the driver?

Offtime memory requires an OTC (capacitor) on pin 2. The “noinit” version, star noinit, uses a different method and does not require the OTC. I’d suggest trying the noinit version.

If you’re actually using the AVRISP mkII to flash, (or ATMEL ICE) you can flash without AVR-tools / AVRDude, flashing directly from Atmel Studio, but be aware that these devices do not supply Vcc to the target MCU like the USBASP programmer does. You need to supply 2.8V-5V to the board with a liion or other source in order to flash it.

1 Thank

Are there any “double click” examples for clicky firmware?
I only know 3 clicky firmwares with this functionality and the source code isn’t available for any of them.

1 Thank