Building Anduril with Docker

There are many to choose from. Here’s a partial list, which has only about 40 or 50:

https://git-scm.com/download/gui/windows

A while ago I updates my Dockerfile to support the new format, but it’s not really refined. It works basically the same. When executed, “make” is called and all extra arguments are passed to it.

I don’t think it’s necessary to merge something to the main repo. The image doesn’t include the source, just the build environment. So as long as the environment is properly defined, the Docker image can live its own life. Maybe I have time in the next weeks to fix some minor issues with my image and check it’s compatibility with the DD architecture.

1 Thank

That was my primary question about it. I wasn’t sure if it’s better as a separate thing or if it’s better to include in the main repo. Regardless, I should put some time into actually using it and documenting it to make things easier for new users.

Yeah, it should work. If you use -e DEBUG=1 then it should give more info about what it’s doing and what it sees.

I made a PR to incorporate docker build support into the build scripts in the main repo, might be referencing that PR. I’ve not been working much on anduril recently due to various health complications but hopefully will be able to again soon.

2 Thanks

What is this .jar .py and so on, I mean an .exe windows program or maybe android app where we can download updates from server , choose options without scripting and just press button to build .hex .

My dream would be to have UI fully customisable via Smartphone. Like a air filter machine for instance.

There was once Manker with such feature but somehow it didn’t make any revolution in flashlight world.

Yeah, I know. Bluetooth module or Wi-Fi is not such straightforward to implement.

Well, luckily dreaming costs nothing :innocent:

With Atmel Studio you can code “Anduril69” from scratch, compile .hex and flash it to your driver with integrated AVRdude. Its all in 1 solution for Atmel MCus, but yea, who likes easy way.

I’m not coding. At all. I can barely navigate here :upside_down_face:

3 Thanks

It’s a program, it’s just written in Java. Works on Windows.

1 Thank

Where do I put that ? It doesn’t go inside the docker run command.

Does the image need to be built on linux ?

Ah, I just noticed you were using a locally built version. I have a version on Docker Hub that Ipush changes to, so if you run it with --pull then it will automatically get the latest updates.

docker run --pull=always --rm -v E:\light_fw\tk\anduril-trunk:/src -e DEBUG=1 siterelenby/anduril-builder <build args>

At the moment with the new repo it needs a bit better integration with the new build scripts, e.g. it wants to install the DFP even when not needed, but I have a PR open for that.

Any OS that can run Docker and is the same architecture as you intend to use the image will be able to build it. My prebuilt image is multiarch and will work on multiple different CPU architectures (currently x64, armv7, and arm64).

thanks, that worked, well it doesn’t build, like you said it wants the DFP , but no file or directory error :+1:

edit: ah it gets the DFPs with

docker run --pull=always --rm -v E:\light_fw\tk\anduril-trunk:/src -e DEBUG=1 siterelenby/anduril-builder dfp

then it works for T85/T1634 builds, but not AVRDD nor T1616

/usr/lib/gcc/avr/10.3.0/../../../../avr/bin/ld: address 0x807038 of ui/anduril/anduril.elf section `.data' is not within region `data'
/usr/lib/gcc/avr/10.3.0/../../../../avr/bin/ld: address 0x8070cf of ui/anduril/anduril.elf section `.bss' is not within region `data'
/usr/lib/gcc/avr/10.3.0/../../../../avr/bin/ld: address 0x807038 of ui/anduril/anduril.elf section `.data' is not within region `data'
/usr/lib/gcc/avr/10.3.0/../../../../avr/bin/ld: address 0x8070cf of ui/anduril/anduril.elf section `.bss' is not within region `data'
collect2: error: ld returned 1 exit status

The FLEX Asgard did that.

It kind of bombed, so they stopped trying to do bluetooth-configured flashlights. It sold poorly, was difficult to pair with a phone, and cost way too much to develop and maintain the app.

It probably didn’t help that the flashlight itself wasn’t great, and the configurable options were fairly limited.

Maybe it’ll happen someday… but that day isn’t here yet.

For now, a pogo pin USB dongle is a cheap, easy solution. Touch 3 spring-loaded pins to a driver, press a button, wait a few seconds, and it can give the flashlight a whole new personality.

1 Thank

there’s that one too : Foursevens Quark Smart QSL-X measurements (bluetooth controlled, cr123a)

But also very limited (and not maintained beyond initial release ?) I can’t help but notice the unusually large switch boot, maybe for better radio transmission.

1 Thank

Ah, I vaguely recall seeing that one at some point… I think they put the radio under the conspicuously large, raised switch on the side?

Anyway, phone OSes are a quickly moving target, and the light’s companion app might work today but there’s not much chance it’ll still work several phones down the line in 10 or 20 years. So I try to stick to standard programs that someone else is going to maintain long-term. It’s a lot of work to keep a phone app working over time, and I might get hit by a bus or something. Plus, I just don’t like phones very much. The phone ecosystem has been a corporate mess ever since Android arrived and pretty much ended all the community-based mobile OS projects.

Yeah, that makes sense - since the body tube is the battery negative, that makes it close to impossible to get a signal with an internal antenna contained within it. Having a coiled antenna under a switch boot makes sense (it might also be possible to integrate into the optics or bezel in some way, but that’s a lot harder and probably more expensive)/.

There is no need to worry about a companion app. If this functionality is really desired, a data model should be defined. If BLE is used, its as simple as creating the GATT model. Interoperability and open protocols / standards are just as important as open source.

On that note, lets hope 20 years from now we’ve figure out something better than C :stuck_out_tongue:

I think we’re talking about fundamentally different layers of the software stack. BLE/GAP/GATT are basically a link / transport / protocol layer sort of thing, and I’m talking about stuff a few levels up in the application and content layers. Like, if I want to build a web site full of things people want to use, merely defining a standard for HTTP isn’t enough. That just takes care of one low-level prerequisite before work can begin on the bulk of the project.

1 Thank
docker run --pull=always --rm -v E:\light_fw\tk\anduril-2023-12-17_20h:/src -e DEBUG=1 siterelenby/anduril-builder avr32dd20
latest: Pulling from siterelenby/anduril-builder
Digest: sha256:a1166571fefabec09c5668c35f7d1923c5ee1600268583c466f1f7cbf7bb76a4
Status: Image is up to date for siterelenby/anduril-builder:latest
+ set -e
+ set -o pipefail
+ [[ ! -d /src ]]
+ [[ 1 == \1 ]]
+ export DEBUG=1
+ DEBUG=1
+ [[ 1 == \0 ]]
+ POSITIONAL=()
+ for arg in "${@}"
+ [[ avr32dd20 == \-\-\s\h\e\l\l ]]
+ [[ avr32dd20 == \-\-\i\n\s\t\a\l\l\-\d\f\p ]]
+ [[ avr32dd20 == \-\-\d\e\b\u\g ]]
+ POSITIONAL+=("$1")
+ shift
+ set -- avr32dd20
+ [[ '' != \1 ]]
+ export SKIP_DFP_INSTALL=1
+ SKIP_DFP_INSTALL=1
+ [[ -x /src/make ]]
+ [[ '' == \1 ]]
+ exec ./make avr32dd20
bin/version-string.sh: line 34: git: command not found
bin/version-string.sh: line 50: git: command not found
===== anduril 0. : thefreeman-avr32dd20-devkit =====
avr-cpp: fatal error: cannot read spec file 'device-specs/specs-avr32dd20': No such file or directory
compilation terminated.
ERROR: build failed
===== 0 builds succeeded, 1 failed =====
FAIL: thefreeman-avr32dd20-devkit

With latest Anduril, T1616 builds now compile but not AVRDD.

Have you tried the steps/commits in this issue?

1 Thank