Anduril 2 Manual

This page refers to features for Anduril 2.
Looking for the Anduril 1 manual?

In July 2020, ToyKeeper, posted on BudgetLightForum about work on Anduril 2: a major rewrite of the Anduril 1 firmware. Based on the original text manual found in the source code, this is a formatted version of that manual for easy readability on mobile devices.

A big thanks again to ToyKeeper for continued innovation and updates on the great Andruil UI firmware.


Anduril 2 User 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.

Anduril 2 UI diagram With great power comes great complexity 😵‍

Button presses

Button presses are abbreviated using a simple notation:

  • 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 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
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:

  • In Simple UI:

    • 10H: Go to Advanced UI.
  • In Advanced UI:

    • 10C: Go to Simple 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.


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:

  • 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:

  • 1C: Turn off.

  • 2C: Go to or from the ceiling 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.

    • Item 1: Floor level.
    • Item 2: Ceiling level.
    • Item 3: Number of steps (except for smooth ramp).
  • 10C: Activate manual memory and save the current brightness.

  • 10H: Manual memory config menu.

    • Item 1: Disable manual memory and go back to automatic memory. (doesn’t matter what value the user enters at the prompt)
    • Item 2: Configure the manual memory timer. Sets the timer to N minutes, where N is the number of clicks. A value of 0 (no clicks) turns the timer off.

Memory determines which brightness level the light goes to with 1C from Off. There are three types of brightness memory to choose from:

  • Automatic: Always uses the last-ramped brightness.

  • 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 255 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 type 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:

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:

  • 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:

  • 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:

  1. Battery check
  2. Temperature check (if light has a temperature sensor)
  3. Beacon mode
  4. SOS mode (if enabled)

Anduril 2 Blinky / Utility Modes

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:

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:

  1. 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, then click 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 last-ramped level, so set this in ramping mode before starting beacon mode.

  • 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 last-ramped brightness in Ramping Mode determines the brightness of SOS Mode.

Strobe / Mood Modes

Anduril includes a few extra modes for a variety of purposes:

Anduril 2 Strobe Modes 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:

  • 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:

  • 5H: Activate Sunset Timer, and/or add 5 minutes to the timer.

In more detail, here is what each mode does:

  • Candle mode

    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.

  • Bike flasher

    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.

  • Party strobe

    Motion-freezing strobe light. Can be used to freeze spinning fans and falling water. Speed is configurable.

  • Tactical strobe

    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.

  • Lightning storm mode

    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 last-ramped level, so adjust that 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.

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 two menu options:

  1. Floor. (default = 1150)
  2. Ceiling. (default = 120150)

For the stepped ramping mode, there are three menu options:

  1. Floor. (default = 20150)
  2. Ceiling. (default = 120150)
  3. Number of steps. (default = 7)

For the Simple UI mode, there are three menu options. They are the same as stepped ramping mode.

  1. Floor. (default = 20150)
  2. Ceiling. (default = 120150)
  3. Number of steps. (default = 5)

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 120150, 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.

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 10C Enable Simple UI
Off Simple 10H Disable Simple UI
Off Full 10H Simple UI ramp config menu (1: floor, 2: ceiling, [3: steps])
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: steps])
Ramp Full 10C Turn on manual memory and save current brightness
Ramp Full 10H Manual memory config menu (1: off, 2: set timeout)
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

Additional Resources

little memorylittle countdownNerd Tower
©2018-2021 Ivan Tse