Anduril ... 2?

I think it would be pretty difficult for lockout to be turned off in an accidental manner (not talking about mistaken # of presses, but rather “in a pocket” or “in a bag” or something) due to how close together all three presses have to be. That said, if I were a user of lockout mode, it might be a bit startling to suddenly start getting lights with 3C lockout and 4C battcheck vs. the dozen I might already own that are the other way around. And not everyone can flash updates. But then again, maybe that’s why we’re calling this Anduril 2/something else, and not just continuing to call it Anduril. Change is hard, but change for the better is worth it.

Honestly, I’m still in the camp that strongly dislikes lockout as a principle. So maybe my opinions shouldn’t count much. My D4 is a nightstand and desktop light, not a carry light, because I can’t rely on it to stay off in my pocket. The D4V2 offers me a raised side switch, but that’s adding chonk to the light around the head where it’s already a barely tolerable width for me to pocket. Even my FW3A didn’t get carried before the o-ring mod, because I was always turning it on when clipping it and sliding it down the pocket. What I do use lockout mode for is night-time light. I deliberately set the stepped-ramp floor to one level, and the ramp-floor to “1”, and lockout the light at night. Single-hold is then “dark-adapted eyes appropriate and I won’t step on a cat” and click-hold is good for a slightly higher output when needed (“is that cat vomit or just a cat toy”). I don’t have to worry about blinding myself or waking my wife if I accidentally click into ramp instead of hold into moonlight (normally not an issue, but in this case it’s the middle of the night, who knows what my brain does). On a light with indicator LEDs, it would further be useful to dedicate lockout to “low” so I can see it on my nightstand but not be bothered by whatever my current daytime setup may be (high, off, blinking, whatever my whims were that day). Wait, what was my point. Oh right, I don’t use lockout for lockout, I use it for nighttime light restriction. It would bother the heck out of me to un-lock for useful operation every time I pulled the light from my pocket, whether three clicks or four.

Some possible ways to organize things...

3C lockout

Off        Any 3C  Lockout mode
Off     Any 4C  Battcheck mode

Ramp Any 3C Lockout mode
Ramp Any 3H Tint ramping (on some lights)
Ramp Full 4C Enable manual memory at current brightness
Ramp Full 4H Disable manual memory
Ramp Full 5C Change ramp style (smooth / stepped)
Ramp Full 5H Sunset timer on, and add 5 minutes
Ramp Full 7C Ramp config mode

Lockout Any 3C On (ramp mode, memorized level)
Lockout Any 3H On (ramp mode, floor level)
Lockout Full 5C Auto-lock config menu
Lockout Full 5H Disable Auto-lock
Lockout Full 7C Aux LEDs: Next pattern
Lockout Full 7H Aux LEDs: Next color

4C lockout

Off        Any 3C  Battcheck mode
Off     Any 4C  Lockout mode

Ramp Full 3C Change ramp style (smooth / stepped)
Ramp Any 3H Tint ramping (on some lights)
Ramp Any 4C Lockout mode
Ramp Full 5C Momentary mode (?)
Ramp Full 5H Sunset timer on, and add 5 minutes
Ramp Full 7C Ramp config mode
Ramp Full 10C Enable manual memory at current brightness
Ramp Full 10H Disable manual memory

Lockout Any 4C On (ramp mode, memorized level)
Lockout Any 4H On (ramp mode, floor level)
Lockout Full 7C Aux LEDs: Next pattern
Lockout Full 7H Aux LEDs: Next color
Lockout Full 10C Auto-lock config menu
Lockout Full 10H Disable Auto-lock

With so many things packed in, any change like this has cascading effects like what happens when turning a Rubik's cube. So, it's helpful to consider all the changes involved instead of just one part. I marked the changes in bold text.

Personally, I use voltage check much more often than I use lockout. I think maintaining consistency with lights running earlier versions of Anduril would trump the fraction of a second in time savings or the extreme minority of people that can’t count to 4 while clicking.

Yeah, Honestly it’s just getting from lockout to “on” that is the most important part of this discussion for me. I leave it to ToyKeeper to figure out what makes the most sense as far as 3 or 4 clicks, clearly she is smarter than I am when it comes to solving that.

If some changes in UI has to be done, it's better to introduce them now with Anduril 2.0 than to wait Anduril 3.0.

My vote goes to :

Sounds good, but I’d prefer these changes:

Ramp       Any 3C  Lockout mode
Ramp        Any 3H  Tint ramping (on some lights)
Ramp        Full    4C  Enable manual memory at current brightness
Ramp        Full    4H  Disable manual memory
Ramp        Full    5C  Momentary mode
Ramp        Full    5H  Sunset timer on, and add 5 minutes
Ramp        Full    7C  Change ramp style (smooth / stepped)
Ramp        Full    7H  Ramp config mode

Same 5C also in strobe mode. Then you can directly enable momentary from the current mode.

Firstly, I have never tried Anduril so I might not be entitled to comment. But let me start with some background information. Back in 2010 I had some work related requirements for a good flashlight, and I ended up on CPF. For a couple of years after that I gradually built up a small collection of small EDC lights from different brands, both expensive and budget lights, trying to find the perfect light (for me). I ended up with a couple of HDS, a ZL headlamp and two 6P Surefires with drop-ins. I tried and sold Jetbeam RRT-01, Sunwayman V11R and Eagtac D25C (among others) because I did not really like their UIs.

In 2017 I had a new period of lurking on the forums, but I quickly realised that there was not much to gain in replacing any of my lights. The only thing that actually got my attention was a Petzl Nao, due to the “reactive lightning” and the bluetooth connection with an app. But based on reviews I decided that my ZL was probably still the better option.

Fast forward 3 years and Covid-19 gave me some extra time so I decided to see what had happened in the flashlight world lately. And honestly, I was underwhelmed. A couple of extra lumens, a few new HCRI emitters, and more lights with built-in charging. I really believed that all electronics manufactured in 2020 would be part of IOT, with OTA updates of FW and all the customization you could imagine. I quickly realised that this was not the reality, most lights still used old drivers with old UIs.

Then I discovered Anduril, and although still a bit disappointed over the lack of easy FW updates I honestly think this is the biggest evolution within the flashlight world in the last decade. Imagine an open-source FW which allowed any manufacturer to actually use a great UI, with almost all the customization you could imagine. I immediately had to order a light to test :slight_smile: (although it is still stuck in transit somewhere)

Then I saw this thread, and initially I was really really pleased. My biggest regret (within the flashlight world) is that i passed on an opportunity to buy a Liteflux LF3XT 10 years ago, and I believed that Anduril 2 would actually be a better version of that UI. Then I realised a few points which I would really like to comment, only because I am actually afraid that it can take Anduril a step backwards and not forward:

1: No turbo in “Compact UI / Default mode”
Which commercial flashlight company will willingly hide their biggest selling point? For everyone outside communities like this “XXXX LUMENS” is the first and only thing a customer looks at. I am afraid that with such a UI Anduril will only be used for “BLF-special runs”, and not widely distributed in ordinary production lines. The only persons actually interested in this UI would be people here who would like to have a safe muggle mode with some extra features. I honestly believe that it should be up to the manufacturers to make such changes in the code if they believe that their light is not safe to use, this is nothing Toykeeper or anyone else can be held responsible for.

My clear recommendation here would be to keep the shortcut to turbo enabled by default, but let it be possibly to disable it in the «Full UI / Advanced mode». And off course it can be done the other way around by the manufacturers themself if they believe it is not safe.

2: Unwillingness to change
From all the post I’ve read it seems clear to me that TK would like to have 3c for lockout and 4c for battery check. I believe that you should not be so afraid to change. Most people already have several lights with different UIs, and any change to the better should be encouraged. If the fear of breaking backwards compability is stronger than the desire to improve, then anduril will for sure die. I can also see this in some off the suggestions where the response is “this is not anduril, that would be a new UI” (in regards to implementation of momentary, function button and customization menu). I am not in a position where I can say if these suggestions are good or not, but I do believe they deserve a better response. If they are good ideas, but not easily implemented due to breaking other code, lack of memory or other reasons than that should be stated. I cannot see how any ideas of increased functionality that is not changing the basics of the UI can be seen as a different UI. All these suggestions would just add more customization, not take any functionality away. If the ideas are crap, ok, then be clear about that as well.

Hope you don’t see this as to hard, that is not my intention. I really appreciate all the work you put in to this, and I am really impressed by what I have read and seen on YouTube. So now I have to update the tracking information of my first Anduril light one more time today.

I agree it doesn’t make sense for “backward compatibility” to be a high priority. Perhaps the solution would be to have “Anduril Classic” which would just be the current Anduril with the new features/etc. as a flashable version for those who would prefer it, and maybe have a separate “branch” for Anduril 2.0 that isn’t limited in that manner. I do understand the fragmentation issue that could create, but I would think MOST manufacturers would go with the latest and greatest. Those in this community who are actually going to have THAT strong of a preference for the old version, can just flash their own version. It is of course up to ToyKeeper whether or not she would want to put out the effort of maintaining a “Classic” version and a current version.

That all said, I personally am 100% on the side of making whatever changes are needed to make it more capable and usable, even if that fundamentally changes the UI. I can learn a new UI… in fact unless I have ONLY Anduril lights, I kind of have to, and will continue to have to, which is fine.

Thanks! So far, we’ve managed to get a few companies to use free software, but it’s still a relatively niche sort of thing.

Er, a few, actually. Some companies are pretty worried about their customers burning things and getting angry about it. With massively-overpowered lights making 4000+ lumens in a very small form factor, a few items have earned reputations as “nut roasters” which have literally burned holes in people’s pants while the pants were being worn. It takes only a few seconds.

So they’re interested in shipping with safer settings by default, while still allowing people to unlock the full power after they’ve bothered to read the manual.

Not every light is like that, though… so the defaults are configurable for each model, and some models will enable full power by default even in simple mode. It depends on the light’s power-to-mass ratio, target market, and the desires of the company who makes it.

Additionally, the user can choose to enable full power in simple mode… but it requires reading the manual to figure out how.

As a general guideline, the simple mode’s default limit is a little higher than what each model can thermally sustain during use. Sometimes that means full power, sometimes not.

Aside from companies, the main people whose requests are being addressed by the Simple UI are people who wrote very angry reviews about how Anduril is a useless, overcomplicated toy, and they want it to just do normal things like a normal tool so they can get some work done without having their tool spaz out.

The way people expressed the idea may have been rude, but the underlying point was solid. There is a design philosophy that a creation is not finished when there is nothing left to add, but rather, when there is nothing unnecessary left to remove.

So the Simple UI is an attempt at that design philosophy. It takes the full-featured original UI and then removes things until only the essentials remain.

I hope we can get to that point eventually. But so far, very few manufacturers seem to do any safety testing… and none have attempted to modify the code. Mostly they just don’t want to get returned items, or reviews complaining about the product being too dangerous or complicated.

It sounds crazy, but one of the top reasons for returns and refunds is: people have difficulty figuring out that they need to remove a legally-mandated sticker from the end of the battery. And they return the item instead of reading the manual. So it needs to ship, by default, in a state which is compatible with that type of user. Anything complex or confusing gets locked behind a knowledge gate, so new users won’t bump into it by accident and panic.

Anyway, every company I’ve asked about this has said they like the idea and look forward to it… because it’ll hopefully make their lives easier. But we still have to work out the details of where the default limits are for each supported light.

I’m honestly not sure what would be better. I’ve been using 3C lockout for over a week, and the extra speed is nice… but I kinda prefer 4C so far — especially now that there are direct shortcuts between ramp and lockout.

About Anduril dying, I’m not too worried. It’s reaching a point of diminishing returns, where further optimizations don’t provide much benefit.

So I’d like to focus future development on the FSM library, and on other UIs. People have had some really interesting ideas for other types of interfaces, and I think those ideas deserve more attention.

Also, on the ecosystem in general. Like, making it so more lights are easy to reflash, making it so people can choose whatever UI they want at time of purchase, and generally getting companies onboard with the concept of free software.

Exactly. Those ideas generally need to be developed into their own complete applications, not just tacked onto something else as an afterthought. I can cram some things into Anduril in a relatively coherent manner, but some ideas are different enough that they don’t fit… and they make a good starting point for a completely different interface.

Like, let’s say I’m making a salad. A lot of ingredients can go into a salad and it’ll still be good. But if someone wants to remove the lettuce add replace it with bread, melted cheese, and tomato sauce… I think what they want is actually a pizza, not a salad.

Both are good. But they’re better as separate items, instead of blended together.

As for what Anduril is, it’s mostly three things:

  1. A solid core designed for a single e-switch and a single light source
  2. A bunch of extra stuff I personally like
  3. A bunch of extra stuff suggested or contributed by the community, when it can be made to fit in a coherent manner

The solid core is what I found when I did an informal survey of various flashlight communities to see what people liked best for interfaces with one e-switch. Around the world, people mostly settled on a single idea. It needed just a few essential functions:

  • Off 1H -> moon or low
  • Off 1C -> med or mem
  • Off 2C -> high or turbo
  • On 1C -> off
  • On 1H -> up / down
  • On 2C -> to / from high or turbo

Other details varied, but the part above was almost always exactly the same no matter where I looked. So that is the core of Anduril, and anything which doesn’t fit the above description is … not Anduril.

For example, changing “Off 1H” to be a momentary function… is a big enough change that it probably should be its own UI. One implementation of how that works in practice is tterev3’s wonderful MELD firmware.

Also, ideas about multiple buttons or multiple sets of LEDs are great… and worth developing a brand new UI for. Trying to retrofit Anduril over that would be really awkward and would likely produce a poor result.

But my time is limited, so I’m trying to finish this project before I start on any new projects.

My feeling whenever “muscle memory”, “backward compatibility”, etc. are brought up as reasons for not changing UI mappings and flow:

The more I’ve turned this over in my head, the more I agree with your two points.
For number one, I think there will really just be a lot the first manufacturer to use Anduril 2 will have to figure out. I’m sure there will be backlash from “10k lumen light only did 1k lumens wtf”, but will it be any better or worse than “ruined three pairs of pants and a backpack, I’m suing”? As far as the safety perspective, I think we should look at some of the more major brands. A few of my lights have “Hot” warnings at the emitter end. But also, we’re asking people to deal with unprotected Li-Ion cells here. If they’re leaving unlocked D4s in bags, are they also leaving 18650s in a coin purse? Are they charging 0V 18650s they were given from a ziploc bag of nails?

As for number 2, the change is gonna hurt no matter what. Some things will be different, outside of TK’s “core”. For habitual users, I think adjusting to lockout will be the most difficult change. That said, my feelings on it are: it’s faster, but still extremely unlikely to happen to the light on its own, and we’re also adding auto-lockout and unlock->on directly features. The second will ease the pain of using lockout in general. Resistance to change just because it’s difficult is something I usually oppose on principle, and I actually regret my earlier comments about how hard the change will be for users that still own “old Anduril” lights.

Last, I have a UI change that I want to mention - and that I am going to try to implement and test on my own. It relates to the strobe/strobe/candle/bike flasher rotation. At this point, I have two lights running Anduril that are over twice as bright as my FW3A (previously my only Anduril flashlight*). If I want to cycle from Candle to Lightning (my most-used “for fun” modes), I have to walk down Main St. in “Tactical Strobe City”. It’s kind of like if every time I switched from my hammer to my screwdriver, I knew I’d have to hit myself in the forehead with the hammer before I went to use it again. My half-formed idea is to make it a menu. I hit 3H from off (or whatever, it might move), and then I get a “config menu” type of thing: the flash and then buzz. I click 1-5 times to select which strobe I want. Probably a no-go for anyone who wants quick access to tactical strobe for defensive reasons, though.

*my LT1 has Anduril too, but is a lantern not a flashlight :stuck_out_tongue:

I wonder how this will interact with “won’t read the manual” types who can’t get the sticker off the battery, or immediately open the tail-end of the FW3A. I guess they probably weren’t going to get as far as using turbo anyway.

I’m starting to think maybe I really want simple UI on my lights, just configured for full power. Set everything once in advanced, then switch it into simple, and leave it. It would make gifting lights a lot easier, too.

This is an interesting one for me. I don’t usually have issues, except for switching ramp modes accidentally. But I can also reliably click 25+ times to set thermal configs.

I’m honestly not sure what would be better. I’ve been using 3C lockout for over a week, and the extra speed is nice… but I kinda prefer 4C so far — especially now that there are direct shortcuts between ramp and lockout.

About Anduril dying, I’m not too worried. It’s reaching a point of diminishing returns, where further optimizations don’t provide much benefit.

So I’d like to focus future development on the FSM library, and on other UIs. People have had some really interesting ideas for other types of interfaces, and I think those ideas deserve more attention.

Also, on the ecosystem in general. Like, making it so more lights are easy to reflash, making it so people can choose whatever UI they want at time of purchase, and generally getting companies onboard with the concept of free software.
[/quote]

I cannot emphasize enough how much I support this last part. Making lights easier to flash – whether with the programming keys, or ideally with USB directly (I know, that’s a driver problem, not a firmware problem). I also want to support any efforts at increasing the ease with which someone could customize Anduril (or other FSM-based Uis) themselves. But, I don’t know how I can currently support or help with any of that. For now, I’m beginning to learn how to do it myself a little.

And I want that to tie in to the part above, about code customization. I mean, my dream is probably a web app that bakes-in certain customization options and builds and flashes straight into a USB port. But even the steps before that – easier customization and compilation of a working build – would probably entice manufacturers and customers alike to consider the idea. And I feel like it’s probably the ultimate end goal for all the customization people want in general. When it comes down to it, there’s going to be a range of preferences for how things work. Does Anduril need a baked-in config menu for 3C vs 4C lockout? No, and by the time you build a full config menu for everything into the firmware… well, you’ve addressed that already. The user would need a configuration app or need to sit down for an hour with the manual and never touch it again. (I still haven’t gotten around to messing with my Unicorn, and at this point I never may.)

Back when rost333 had the idea for a 2xAA side-by-side light (thread), I actually wrote up a bunch of different ideas for the “core” of a 2-button UI. Primarily they were split into two categories: One button per emitter (in which case you could basically just have Anduril twice, once for each LED), and trying to have each button be fundamentally different in functionality. The latter was a lot more interesting to me, and solves a lot of the issues that get run into with single-button UIs (and then adds them back in when you try to control two channels separately).

Uh, but anyway, it’s definitely not Anduril. Anduril is a single-e-switch UI. I think two-button UIs are tons of fun and would love to help develop one for BLF if we get there. I think probably the way forward for UIs has a lot to depend on driver design for. A move to MCUs with more flash for more complex UIs is a simple one (and, I think Hank’s gone there with the 1634? but also efforts by gchart and probably others that I’m forgetting), as well as more pins for more stuff. The ability to actually get USB flashing going would be the coolest thing that I can’t remember if I’ve seen done yet on BLF.

My take on change:

If this is supposed to be a different or improved u/i, and not the same thing, I would love for it to be easier to use, even if it means remapping the whole thing to get my most used feature to be quicker/ more accessible.

I would rather improve things than keep them like the old one…otherwise, we’d still be driving model Ts if we always took the approach of keeping it like the old one for familiarity’s sake.

Anduril is to date my favorite u/i, but it could be just a bit better. And just think, when toykeeper gets done tweaking it, it will be the new standard. Everybody will be reflashing or replacing drivers, including me.

FWIW, I’ve been trying to re-do the diagrams for Anduril 2. The plan is to write up a full tutorial with diagrams for each step, but first I’m trying to organize a layout with all the details included.

For now, here’s an attempt to show the Simple UI in a manner which is, um, simple:

There are also a few things not shown in the diagram:

  • Ramp 1H: Ramp down
  • Ramp 3H: Tint ramp (on some lights)
  • Off 10H: Go to full / advanced UI
  • Loosen tailcap, press button, tighten tailcap, hold ~4s: Factory reset
  • Off 13H: Factory reset (on some lights)
  • Off 15+C: Version check

That Simple UI looks pretty solid.
The only thing I don’t see is a way to go from Lockout to Off, which may be intentional. I suppose if you’re unlocking the light it’s because you intend to turn it on.

Not exactly sure what “15+C” means for the Version check. 15 clicks is also quite a lot and can be a hassle to count for something as simple as a version check. Maybe it could just be a part of the Advanced UI instead? Because it seems like the people who would want to know the firmware version of their flashlight would probably also be the type of people to use the advanced mode.

I’m excited to see the development of Anduril 2.

15 clicks are annoying to count… so instead, it uses 15 or more. It doesn’t care how many, as long as it is at least 15.

About whether version check should be included in simple mode… I’m not sure. It’s a good question. Should version check be in both modes, or just in advanced mode?

If it’s in both simple and advanced modes, it’s always “15 or more clicks from off”.

If it’s only in advanced mode, it’s “10H from off to reach advanced mode, then 15 or more clicks”.

Just like on the Lumintop Geek side battery level indicator.

Ah that makes more sense with the 15+ clicks.
The reason I mentioned version check to be an advanced mode feature was purely so that it would be easier to access. If it’s still 15+C in advanced mode, then I don’t see a reason why it couldn’t be in both.

I had the idea of maybe a “Utility Blinkies” mode within the advanced mode that would display boring information like battery status, temperature (with a way to get to thermal cfg), and version number. Then you could get the version number without having to do the 15+C. Not sure how well this would integrate with the current plans for the advanced mode though.

In simple mode, the only blinky is the battery check.

In advanced mode, it has a utility blinkies group which starts with battery check and then proceeds to beacon, SOS (on some lights), and temperature check. It also includes voltage calibration and temperature calibration.

The version check function could go into the blinky group too, but I made it more direct and easy to access because it’s very useful for customer support purposes. If someone is having trouble understanding their light, they may not be able to navigate into advanced mode, through the blinkies, and to the correct blinky… but they can probably press the button a bunch of times quickly.

I’ve also been thinking about adding a couple extra digits to version check, to indicate which build target was used. Basically, each build target would get a unique number, and that number would be added to the version string… so it would be easy to detect things like how the Astrolux FT03-Mini uses firmware from the Emisar D4V2.

I hadn’t even thought about that. That makes a lot of sense actually and wasn’t something I even considered.

This would be very handy. I’m usually always a fan of more information as opposed to less.

That’s not something you’re doing often, right ?
Just to put 15 clicks in perspective : to unlock a non programmable Novatc Storm to be programmable (hidden feature), you had to click 250 times (or more) rapidely, about 3 clicks per second, and don’t miss one or you had to start again. :wink: