Anduril 2 (revision 623) Manual
This manual is sourced from revision 623 (2021-09-17) of Anduril 2.
Anduril 2 (revision 623) Manual
Anduril is an open-source firmware for flashlights, distributed under the terms of the GPL v3. The sources can be obtained here:
Quick Start
After putting a battery in the light and tightening the parts together, the light should quickly blink once to confirm it has power and is now operational. After that, basic usage is simple:
- Click to turn the light on or off.
- Hold the button to change brightness.
- Release and hold again to change brightness the other way.
That is all the user needs to know for basic use, but there are many more modes and features available for people who want more.
Before reading the rest of this manual, it is recommended that users look at the Anduril UI diagram(s), which should be provided along with the flashlight.
Button presses
Button presses are abbreviated using a simple notation:
Button | Meaning | |
---|---|---|
1C |
One click | Press and then quickly release the button |
1H |
Hold | Press the button, but keep holding it |
2C |
Two clicks | Press and release quickly, twice |
2H |
Click, hold | Click two times, but hold the second press |
3C |
Three clicks | Press and release quickly, three times |
3H |
Click, click, hold | Click three times, but hold the final press |
The same pattern is used with higher numbers too. For example, 10C
means ten clicks… and 10H
means ten clicks but hold the final press.
Simple UI
By default, the light uses a simple UI. This is useful if you lend the light to someone else, or if you just don’t want to bother with any crazy disco modes.
Simple UI has all the basic functions needed to work as a flashlight, but the minimum and maximum brightness are limited by default to make it safer, and any complex or advanced functions are blocked.
Functions available in Simple UI include:
Button | Action |
---|---|
1C |
On / off |
1H |
Ramp up (or down, if button was released less than a second ago) |
2H |
If light is on : ramp down / If light is Off: momentary high mode |
2C |
Double click to go to / from highest safe level |
3H |
Tint ramping (on lights that have it) |
4C |
Lockout mode |
Some other modes and functions are available too. When the light is Off, these are the options:
Button | Action |
---|---|
3C |
Battery check mode (displays voltage once, then turns off) |
4C |
Lockout mode |
10H |
Switch to Advanced UI |
15C or more |
Version check |
In Lockout mode with Simple UI, there are a few functions:
Button | Action |
---|---|
1H |
Momentary moon |
2H |
Momentary low |
4C |
Unlock and turn on |
4H |
Unlock and turn on at low level |
5C |
Unlock and turn on at high level |
To change between Simple UI and Advanced UI, turn the light Off and then do one of these:
UI | Button | Action |
---|---|---|
Simple UI | 10H |
Go to Advanced UI |
Advanced UI | 10C |
Go to Simple UI |
Advanced UI | 10H |
Configure Simple UI |
If you get lost, or if you want to auto-calibrate the temperature sensor, do a factory reset. The process for this is:
- Loosen tailcap
- Hold button
- Tighten tailcap
- 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.
On some lights, like products where the tailcap method is impossible,
use 13H
from Off to do a factory reset. If this is difficult, try
counting it like music to make it easier:
1 2 3 4
1 2 3 4
1 2 3 4
HOLD
Simple UI is enabled after each factory reset.
Simple UI can be configured in several ways, but not while Simple UI is active. So go to the Advanced UI, configure things, then go back to Simple UI.
Configurable options include:
- floor level
- ceiling level
- number of steps (in stepped ramp)
- turbo style
Other options are inherited from Advanced UI:
- ramp style (smooth / stepped)
- smooth ramp speed
- ramp-after-moon style
- memory settings
- auto-lock settings
- aux LED settings
- voltage calibration
- thermal regulation settings
- hardware-specific “misc menu” settings
Advanced UI
Most of the information below this is for the Advanced UI. Anything not already noted above is blocked in the Simple UI.
Ramping / Stepped Ramping Modes
Anduril’s ramping mode uses a smooth ramp or a stepped ramp, depending on which style the user prefers.
Each ramp has its own settings:
- floor (lowest level)
- ceiling (highest level)
- and the stepped ramp can also have a configurable number of steps
Additionally, Simple UI has its own ramp settings for floor, ceiling, and number of steps. The smooth/stepped style is inherited from the Advanced UI’s ramp.
There are four ways to access Ramping mode when the light is Off:
Button | Action |
---|---|
1C |
Turn on at the memorized brightness. (see below for details about what “memorized” means) |
1H |
Turn on at the floor level. Let go after the light turns on to stay at the floor level, or keep holding to ramp up. |
2C |
Turn on at the ceiling level. |
2H |
Turn on at full power, turn off when released. (momentary turbo) (in Simple UI, this uses the ceiling level instead of turbo) |
While the light is on, a few actions are available:
Button | Action |
---|---|
1C |
Turn Off. |
2C |
Go to or from the turbo level. (or if already at ceiling, and not in Simple UI, go to/from turbo) |
1H |
Change brightness (up). If the button was released less than a second ago, or if it’s already at the ceiling, it goes down instead. |
2H |
Change brightness (down) |
3C |
Switch to the other ramp style. (smooth / stepped) |
3H |
Tint ramping (on lights which have it). |
3H |
Momentary turbo (on lights with no tint ramping). |
4C |
Go to Lockout mode. |
5C |
Go to Momentary mode. |
5H |
Start a Sunset Timer. |
7H |
Ramp config menu.
|
10C |
Activate Manual memory and save the current brightness. |
10H |
Ramp extras config menu.
|
Memory determines which brightness level the light goes to with 1C
from Off. There are three types of brightness memory to choose from:
Memory Style | Brightness |
---|---|
Automatic | Always uses the last-ramped brightness. (does not memorize levels accessed by a shortcut, like turbo, 2C for ceiling, or 1H -from-off for floor) |
Manual | Always uses the user’s saved brightness. |
Hybrid | Uses the Automatic memory brightness if the light was only off for a short time, or resets to the Manual memory level if it was off for a longer time. The timer for this is configurable from 0 to ~140 minutes. |
Another way to think of it is: There are three styles of memory for the last-ramped brightness level…
- Always remember (Automatic)
- Remember for N minutes (Hybrid)
- Never remember (Manual)
To choose a memory style, set the configuration accordingly:
Mem Style | Manual mem | Manual mem timer |
---|---|---|
Automatic | off | any |
Manual | on | zero |
Hybrid | on | non-zero |
Sunset Timer
In the Ramp mode or Candle mode, it’s possible to make the light turn itself off after a while.
To activate the timer, go to the brightness you want and then use a 5H
. Keep holding the button, and the light should blink once per
second. Each blink adds 5 minutes to the timer.
In Ramp mode, it slowly dims until it’s at the lowest level, then shuts off. In Candle mode, it stays at the same brightness until the final minute, at which point it dims and dies out.
The user can change the brightness while the timer is active. If this
happens during the final few minutes, it also “bumps” the timer up to a
minimum of 3 minutes. So if it’s getting really dim and you need a
little more time, you could do a 5H
to add 5 minutes, or simply ramp up
to the desired brightness.
Other Modes
Anduril has several other modes too. To access these, press the button more than 2 times when the light is off:
Button | Action |
---|---|
3C |
Blinky / utility modes, starting with battery check |
3H |
Strobe modes, starting with the most recently used strobe |
4C |
Lockout mode |
5C |
Momentary mode |
7C / 7H |
Aux LED configuration |
9H |
Misc configuration menu (only on some lights) |
10H |
Simple UI configuration menu |
13H |
Factory reset (on some lights) |
15C or more |
Version check |
Lockout Mode
4C
from Off to enter Lockout mode. Or 4C
from Ramp mode.
This makes the light safe to carry in a pocket or a bag or anywhere else
the button might be pressed by accident.
To exit Lockout mode, 4C
. The light should blink briefly and
then turn on at the memorized level. Or 4H
to turn on
at the floor level instead:
Button | Action |
---|---|
4C |
Go to Ramp mode (memorized level). (uses manual mem level if there is one) |
4H |
Go to Ramp mode (floor level). |
5C |
Go to Ramp mode (ceiling level). |
Lockout mode also doubles as a momentary moon mode, so the user can do quick tasks without having to unlock the light. The brightness in Lockout mode has two levels:
Button | Action |
---|---|
1H |
Light up at the lowest floor level. |
2H |
Light up at the highest floor level. (or the manual mem level, if there is one) |
It is also possible to make the light lock itself automatically after
being turned off. To enable this, go to Lockout mode and use 10H
to activate the auto-lock config menu. Release the button after
the first blink. Then at the prompt, click N times to set the auto-lock
timeout to N minutes.
10H
: Auto-lock config menu. Click N times to set timeout to N minutes. A value of zero disables the auto-lock feature. So, to turn off auto-lock, don’t click at all.
And on lights which have aux LEDs, there may be additional functions:
7C
/7H
: Change Lockout Mode’s aux LED pattern. More details on this below, in a separate section.
Blinky / Utility Modes
3C
from Off to access Anduril’s blinky / utility modes. This
always starts at Battery check and the user can proceed to other blinky
modes if Advanced UI is enabled. The sequence is:
- Battery check
- Temperature check (if light has a temperature sensor)
- Beacon mode
- SOS mode (if enabled)
In all of these modes, some basic actions are available:
1C
: Turn off.2C
: Next blinky mode.
Additionally, in Battery check and Temperature check modes:
7H
: Go to the voltage config menu or thermal config menu.
In more detail, this is what each blinky / utility mode does:
Battery check
Blinks out the battery voltage per cell. Full is 4.2V, empty is about 3.0V. The light blinks the whole-number digit first, pauses, then blinks out the “tenths” digit. Then a longer pause, and it repeats.
So for 4.2V, it would be “blink-blink-blink-blink .. blink-blink”.
A “zero” digit is represented by a very quick blink.
The voltage config menu has one setting:
- Voltage correction factor. This adjusts the battery
measurement sensor, allowing the user to add or subtract up to
0.30V in 0.05V steps. Click N times to enter a value:
Clicks Value 1C
-0.30V 2C
-0.25V 3C
-0.20V 4C
-0.15V 5C
-0.10V 6C
-0.05V 7C
default, 0V 8C
+0.05V 9C
+0.10V 10C
+0.15V 11C
+0.20V 12C
+0.25V 13C
+0.30V
Temperature check
Blinks out the current temperature in degrees C. This number should be pretty close to what a real thermometer says. If not, it would be a good idea to enter the thermal config menu and calibrate the sensor. Or let the light settle to room temperature, then use factory reset to auto-calibrate the sensor.
The thermal config menu has two settings:
-
Current temperature.
Click
once per degree C to calibrate the sensor. For example, if the ambient temperature is 21 C, thenclick 21 times
. -
Temperature limit. This sets the maximum temperature the light can reach before it will start doing thermal regulation to keep itself from overheating.
Click
once per degree C above 30. For example, to set the limit to 50 C,click 20 times
. The default is 45 C, and the highest value it will allow is 70 C.
Beacon mode
Blinks at a slow speed. The light stays on for 100ms, and then stays off until the next blink. The brightness and the number of seconds between pulses are configurable:
-
Brightness is the user’s memorized ramp level, so set this in ramping mode before activating beacon mode. Follows the same memory rules as ramping – automatic, manual, or hybrid.
-
Speed is configured by holding the button. The light should blink once per second while holding the button. Release it after the desired amount of time has passed, to set a new beacon speed. For example, to do a 10-second alpine beacon, hold the button for 10 seconds.
SOS mode
Blinks out a distress signal. Three short, three long, three short. Repeats until light is turned off or until battery is low.
The memorized ramp level determines the brightness of SOS Mode.
Strobe / Mood Modes
Anduril includes a few extra modes for a variety of purposes:
Beware: fast blinking lights ahead
3H
from Off to access these. The last-used strobe mode is remembered,
so it will return to whichever one you used last.
In all of these modes, a few actions are available:
Button | Action |
---|---|
1C |
Turn off |
2C |
Next strobe / mood mode |
1H |
Increase brightness, or strobe faster (except lightning) |
2H |
Decrease brightness, or strobe slower (except lightning) |
5C |
Go to momentary mode, for a momentary strobe (this is useful for light painting) |
Additionally, Candle mode has one more action:
Button | Action |
---|---|
5H |
Activate Sunset Timer, and/or add 5 minutes to the timer |
In more detail, here is what each mode does:
-
Brightness changes randomly in a pattern resembling a candle flame.
If a timer is set, it will run until the timer expires, then get dimmer for one minute, then sputter and turn itself off. Without a timer, candle mode runs until the user turns it off. Brightness is configurable. -
Runs at a medium level, but stutters to a brighter level once per second. Designed to be more visible than a normal ramping mode, but otherwise works mostly the same. Brightness is configurable.
-
Motion-freezing strobe light. Can be used to freeze spinning fans and falling water. Speed is configurable.
-
Disorienting strobe light. Can be used to irritate people. Speed is configurable, and the duty cycle is always 33%.
Be careful about heat in this mode, if using it for a long time.
-
Flashes at random brightness and random speed to simulate lightning strikes during a busy lightning storm. Do not look directly at the flashlight when this mode is running, because it may suddenly go to full power without warning.
Momentary Mode
5C
from Off to enter Momentary mode. Or 5C
from Ramp mode,
or 5C
from a strobe mode.
This locks the flashlight into a single-mode interface where the LEDs are only on when the button is held down. It is intended for Morse code, light painting, and other tasks where the light should be on only for a short time and probably in a pattern.
Momentary mode does either a steady brightness level or a strobe,
depending on which was active before going to Momentary mode. To select
which one, go to the mode you want to use, adjust the brightness and
speed and other settings, then 5C
to enter Momentary mode.
In steady mode, brightness is the memorized ramp level, so adjust that in Ramp Mode before entering Momentary mode.
In momentary strobe mode, the settings are copied from the last-used strobe mode, such as party strobe, tactical strobe, or lightning.
To exit this mode, physically disconnect power by unscrewing the tailcap or battery tube.
Configuration Menus
Every config menu has the same interface. It has one or more options the user can configure, and it will go through them in order. For each menu item, the light follows the same pattern:
-
Blink once, then go to a lower brightness. The user can keep holding the button to skip this menu item, or release the button to dive in and enter a new value.
-
If the user released the button:
-
Stutter or “buzz” quickly between two brightness levels for a few seconds. This indicates that the user can click one or more times to enter a number. It will keep buzzing until the user stops clicking, so there is no need to hurry.
The actions here are:
- click: add 1
- hold: add 10 (only in versions 2021-09 or later)
- wait: exit
-
After entering a number, or after skipping every menu item, it waits until the button is released then exits the menu. It should return to whatever mode the light was in before entering the config menu.
Ramp Config Menu
While the light is on in a Ramping mode, 7H
to access the config menu for the current ramp.
Or, to access the ramp config for Simple UI, make sure the Simple UI is
not active, then do a 10H
from Off.
For smooth ramping mode, there are three menu options:
- Floor. (default = 1/150)
- Ceiling. (default = 120/150)
- Ramp speed. (default = 1, fastest speed)
For the stepped ramping mode, there are three menu options:
- Floor. (default = 20/150)
- Ceiling. (default = 120/150)
- Number of steps. (default = 7)
For the Simple UI mode, there are four menu options. The first three are the same as stepped ramping mode.
- Floor. (default = 20/150)
- Ceiling. (default = 120/150)
- Number of steps. (default = 5)
- Turbo style. (default = 0, no turbo)
Default values are different for each model of flashlight. The numbers above are only examples.
To configure the floor level, click the button equal to the number of ramp levels (out of 150) at which the floor should be. To set the lowest possible level, click once.
To configure the ceiling level, each click goes one level lower. So
1 click
sets the highest possible level, 2 clicks
is the 2nd-highest,
3 clicks
is the 3rd-highest level, etc. To set the default of 120/150,
click 31 times.
When configuring the number of steps, the value can be anything from 1 to 150. A value of 1 is a special case. It places the step halfway between the floor and ceiling levels.
Version Check Mode
This allows people to see which version of the firmware is installed on their light. The format for this is (usually) 12 digits – a date followed by a model number.
YYYYMMDDBBPP
- YYYY: Year
- MM: Month
- DD: Day
- BB: Brand ID
- PP: Product ID
The date is when the firmware was compiled. If the vendor did not set this value, it defaults to 1969-07-20, the date of first human contact with the moon. However, it might not be a date at all; some vendors may specify a completely different type of value here.
The brand/product values are also known as the model number. These are hard-coded in the source code for each light’s build target, and can be looked up in the “MODELS” file or by using the “make models” command.
Protection Features
Anduril includes low voltage protection (LVP) and thermal regulation.
LVP makes the light step down to a lower level when the battery is low, and if the light is already at the lowest level, it shuts itself off. This activates at 2.8V. LVP adjustments happen suddenly, in large steps.
Thermal regulation attempts to keep the light from overheating, and otherwise adjusts output to stay as close as possible to the user-configured temperature limit. Thermal adjustments happen gradually, in steps so small they are difficult for humans to perceive.
Aux LEDs / Button LEDs
Some lights have aux LEDs or button LEDs. These can be configured to do different things while the main emitters are off. There is one aux LED mode for the regular Off mode, and another aux LED mode for Lockout mode. This allows the user to see at a glance whether the light is locked.
Aux LED modes typically include:
- Off
- Low
- High
- Blinking
To configure the aux LEDs, go to the mode you want to configure and then
7C
. This should change the aux LEDs to the next
mode supported on this light.
7C
: Next aux LED mode.
If the aux LEDs can change color, there are additional actions to change the color. It is the same as above, but hold the button on the last click and then let go when the desired color is reached.
7H
: Next aux LED color.
On most lights, the colors follow this sequence:
- Red
- Yellow (Red+Green)
- Green
- Cyan (Green+Blue)
- Blue
- Purple (Blue+Red)
- White (Red+Green+Blue)
- Disco (fast random colors)
- Rainbow (cycles through all colors in order)
- Voltage (uses color to display battery charge)
In voltage mode, the colors follow the same sequence, in the same order as a rainbow… with red indicating a low battery and purple indicating a full battery.
For lights with a button LED, the button LED typically stays on while the main emitters are on. Its brightness level is set in a way which mirrors the main LED – off, low, or high.
For lights with a RGB button LED, the button LED indicates battery charge during use in the same manner as the aux LED voltage mode.
For lights with front-facing aux LEDs, the aux LEDs typically stay off when the main emitters are on, and when the light is otherwise awake. The aux LEDs on most lights only turn on when the light is asleep.
Misc Config Menu
Some models may have an extra config menu for settings which don’t fit anywhere else. These settings are, in order:
-
Jump Start level:
Some lights are prone to starting up slowly at low levels, so they have an option to “jump start” the engine by pulsing a higher power level for a few milliseconds when changing from off to a low level.
This setting specifies how bright that pulse should be.The value can be from 1 to 150, but is usually between 20 and 50.
These settings are hardware-specific and may not be present on all lights. The number of settings in the global menu depends on the hardware model and the firmware version.
Tint Ramping
Some lights have more than one set of LEDs which can be adjusted to change the color temperature of the light. On these models, there is a global button mapping which works at all times unless it’s overridden by the mode the light is in:
3H
: Tint ramping
So, at almost any time, 3H
, and it
can change the color of the light. This is best done with the light at
a moderately high level, because it makes the changes smooth. Low
levels have more coarse resolution and will typically change in very
visible steps.
At both ends of the tint ramp, there is an “auto tint” mode. This automatically chooses a tint based on the brightness level… so it can be warm white while dim, or cool white while bright. Or vice-versa. To access this, ramp to the end of the tint range, then keep holding until the light blinks a second time.
UI Reference Table
This is a table of all button mappings in Anduril, in one place:
Mode | UI | Button | Action |
---|---|---|---|
Off | Any | 1C |
On (ramp mode, memorized level) |
Off | Any | 1H |
On (ramp mode, floor level) |
Off | Any | 2C |
On (ramp mode, ceiling level) |
Off | Simple | 2H |
On (momentary ceiling level) |
Off | Full | 2H |
On (momentary turbo) |
Off | Any | 3C |
Battcheck mode |
Off | Full | 3H |
Strobe mode (whichever was used last) |
Off | Any | 4C |
Lockout mode |
Off | Full | 5C |
Momentary mode |
Off | Full | 7C |
Aux LEDs: Next pattern |
Off | Full | 7H |
Aux LEDs: Next color |
Off | Full | 9H |
Misc config menu (varies per light) |
Off | Full | 10C |
Enable Simple UI |
Off | Simple | 10H |
Disable Simple UI |
Off | Full | 10H |
Simple UI ramp config menu: 1: floor, 2: ceiling, 3: steps, 4: turbo style |
Off | Any | 13H |
Factory reset (on some lights) |
Off | Any | 15+C |
Version check |
Ramp | Any | 1C |
Off |
Ramp | Any | 1H |
Ramp (up, with reversing) |
Ramp | Any | 2H |
Ramp (down) |
Ramp | Simple | 2C |
Go to/from ceiling |
Ramp | Full | 2C |
Go to/from ceiling (or turbo if at ceil already) |
Ramp | Full | 3C |
Change ramp style (smooth / stepped) |
Ramp | Any | 3H |
Tint ramping (on some lights) |
Ramp | Full | 3H |
Momentary turbo (on lights without tint ramping) |
Ramp | Any | 4C |
Lockout mode |
Ramp | Full | 5C |
Momentary mode |
Ramp | Full | 5H |
Sunset timer on, and add 5 minutes |
Ramp | Full | 7H |
Ramp config menu (1: floor, 2: ceiling, 3: speed/steps) |
Ramp | Full | 10C |
Turn on Manual memory and save current brightness |
Ramp | Full | 10H |
Ramp Extras config menu: 1: enable automatic mem, 2: set manual mem timeout, 3: ramp after moon or not, 4: advanced UI turbo style |
Lockout | Any | 1C /1H |
Momentary moon (lowest floor) |
Lockout | Any | 2C /2H |
Momentary moon (highest floor, or manual mem level) |
Lockout | Any | 4C |
On (ramp mode, memorized level) |
Lockout | Any | 4H |
On (ramp mode, floor level) |
Lockout | Any | 5C |
On (ramp mode, ceiling level) |
Lockout | Full | 7C |
Aux LEDs: Next pattern |
Lockout | Full | 7H |
Aux LEDs: Next color |
Lockout | Full | 10H |
Auto-lock config menu (1: set timeout) |
Strobe (any) | Full | 1C |
Off |
Strobe (any) | Full | 2C |
Next strobe mode |
Strobe (any) | Full | 3H |
Tint ramping (on some lights) |
Strobe (any) | Full | 5C |
Momentary mode (using current strobe) |
Candle | Full | 1H /2H |
Brighter / dimmer |
Candle | Full | 5H |
Sunset timer on, add 5 minutes |
Party strobe | Full | 1H /2H |
Faster / slower |
Tactical strobe | Full | 1H /2H |
Faster / slower |
Biking | Full | 1H /2H |
Brighter / dimmer |
Lightning | Full | 1H |
Interrupt current flash or start new one |
Batt check | Any | 1C |
Off |
Batt check | Full | 2C |
Next blinky mode (Temp check, Beacon, SOS) |
Batt check | Full | 7H |
Voltage config menu |
Temp check | Full | 1C |
Off |
Temp check | Full | 2C |
Next blinky mode (Beacon, SOS, Batt check) |
Temp check | Full | 7H |
Thermal config menu |
Beacon | Full | 1C |
Off |
Beacon | Full | 1H |
Configure beacon timing |
Beacon | Full | 2C |
Next blinky mode (SOS, Batt check, Temp check) |
SOS | Full | 1C |
Off |
SOS | Full | 2C |
Next blinky mode (Batt check, Temp check, Beacon) |
Momentary | Full | Any | On (until button is released) |
Momentary | Full | Disconnect power | Exit Momentary mode |
Config menus | Full | Hold | Skip current item with no changes |
Config menus | Full | Release | Configure current item |
Number entry | Full | Click | Add 1 to value for current item |