aboutsummaryrefslogtreecommitdiff
path: root/docs/anduril-manual.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/anduril-manual.md')
-rw-r--r--docs/anduril-manual.md1079
1 files changed, 1079 insertions, 0 deletions
diff --git a/docs/anduril-manual.md b/docs/anduril-manual.md
new file mode 100644
index 0000000..79b39c0
--- /dev/null
+++ b/docs/anduril-manual.md
@@ -0,0 +1,1079 @@
+Anduril User Manual
+-------------------
+
+Anduril is an open-source firmware for flashlights, distributed under
+the terms of the GPL v3. The sources can be obtained here:
+
+ - https://toykeeper.net/anduril
+
+The URL above redirects to the actual project site. Even if the project
+hosting needs to migrate again, it should continue to work. As of late 2023,
+this is where it redirects to:
+
+ - https://github.com/ToyKeeper/anduril
+
+
+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** quickly 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.
+
+For a full list of button mappings, scroll down to the
+[UI Reference Table](#ui-reference-table) at the end of this file.
+
+
+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.
+
+The *number* is how many times to press the button. The *letter* tells
+whether to release the final press (C) or keep holding it (H).
+
+
+Factory Reset
+-------------
+
+If you get lost, or if you want to auto-calibrate the temperature sensor, do a
+factory reset. This is a good idea to do as soon as you turn on a new light
+for the first time, to ensure it has a sane configuration.
+
+The process for this is:
+
+ - **Loosen** tailcap
+ - **Hold** button
+ - **Tighten** tailcap
+ - **Keep holding** button for about 4s
+
+Or:
+
+ - `13H` in "Off" mode, and keep holding 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
+ 2 2 3 4
+ 3 2 3 4
+ HOLD
+```
+
+Simple UI is enabled after each factory reset.
+
+
+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.
+
+### Usage
+
+Functions available in Simple UI include:
+
+ - `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:
+
+ - `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:
+
+ - `1H`: Momentary moon
+ - `2H`: Momentary low
+ - `3C`: Unlock and turn off
+ - `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.
+
+### Extended Simple UI
+
+Some lights have additional features enabled in Simple UI, at the
+manufacturer's request. This typically includes:
+
+ - `Ramp -> 3C`: Toggle smooth or stepped ramp shape.
+ - `Ramp -> 5H`: Sunset timer.
+ - `Off -> 3H`: Access the strobe/mood modes.
+ - `Off -> 7C/7H`: Change the aux LED pattern.
+ - `Lockout -> 7C/7H`: Change the aux LED pattern.
+
+If your light uses Extended Simple UI, *think twice about letting kids use it*,
+because the strobe/mood modes were not intended to be used in simple mode, and
+can reach full power with no thermal regulation.
+
+It is likely that strobe/mood modes will be removed from Extended Simple UI in
+the future, for safety reasons, or maybe have already been removed. But that
+doesn't help with older firmware, so be careful.
+
+### Configuring Simple UI
+
+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.
+
+In Advanced UI's "Off" mode:
+
+ - `10H`: Configure Simple UI.
+
+Configurable options include:
+
+ - floor level
+ - ceiling level
+ - number of steps (in stepped ramp)
+ - turbo style
+
+Other options are inherited from Advanced UI, so change these options normally
+and they will carry over to Simple 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:
+
+ - `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 turbo level.
+ (or if it has regulated down, "bump" back up to turbo)
+ (turbo level / behavior is configurable)
+ - `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)
+ (or activate the next channel mode, when more than one is enabled)
+ (then use 6C instead, for smooth / stepped toggle)
+ - `6C`: Switch to the other ramp style. (when `3C` is mapped to next channel)
+
+ - `3H`: Momentary turbo (when current channel has no tint to ramp).
+ - `3H`: Tint ramping (only when current channel has adjustable tint).
+ - `4H`: Momentary turbo, when `3H` is mapped to tint.
+
+ - `4C`: Go to lockout mode.
+
+ - `5C`: Go to momentary mode.
+ - `5H`: Start a sunset timer. Details are below in the Sunset Timer section.
+
+ - `7H`: Ramp config menu.
+ - Item 1: Floor level.
+ - Item 2: Ceiling level.
+ - Item 3:
+ Stepped ramp: Number of steps. Can be 1 to 150.
+ Smooth ramp: Ramp speed.
+ 1 = Full speed, ~2.5s from end to end.
+ 2 = Half speed, ~5s from end to end.
+ 3 = Third speed, ~7.5s.
+ 4 = Quarter speed, ~10s.
+
+ - `10C`: Activate manual memory and save the current brightness.
+ - `10H`: Ramp extras 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.
+ - Item 3: Configure whether to ramp up after `Off -> 1H`.
+ 0: Ramp up after moon.
+ 1: Don't ramp up, just stay at the floor level.
+ - Item 4: Configure Advanced UI's turbo style:
+ 0: No turbo, only ceiling.
+ 1: Anduril 1 style. `Ramp -> 2C` goes to full power.
+ 2: Anduril 2 style. `Ramp -> 2C` goes to ceiling,
+ or goes to full power if user ramped up to ceiling first.
+ This value also affects momentary turbo in Ramp and Off modes.
+ - Item 5: Configure "smooth steps".
+ 0: Disable smooth steps.
+ 1: Enable smooth steps.
+
+Memory determines which brightness level the light goes to with 1 click
+from off. There are three types of brightness memory to choose from:
+
+ - 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 type | manual mem | manual mem timer
+| -------- | ---------- | ----------------
+| automatic | off | any
+| manual | on | zero
+| hybrid | on | non-zero
+
+If "smooth steps" is enabled, the stepped ramp uses a smooth animation
+between steps, and turning the light on/off has the edges smoothed off
+too. With "smooth steps" turned off, these brightness changes are
+immediate.
+
+
+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`
+action. 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:
+
+ - `3C`: Blinky / utility modes, starting with battery check.
+ - `3H`: Strobe modes, starting with the most recently used strobe.
+ - `4C`: Lockout mode.
+ - `5C`: Momentary mode.
+ - `6C`: Tactical mode.
+ - `7C` / `7H`: Aux LED configuration.
+ - `9H`: Misc Config menu. (only on some lights)
+ - `10H`: Simple UI configuration menu.
+ - `13H`: Factory reset (on some lights).
+ - `15C` or more: Version check.
+
+
+Lockout Mode
+------------
+
+Click 4 times from Off to enter Lockout mode. Or 4 times from Ramp.
+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, click 4 times. The light should blink briefly and
+then turn on at the memorized level. Or hold the final press to turn on
+at the floor level instead:
+
+ - `3C`: Unlock and go to "Off" mode
+
+ - `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)
+
+ - `3H`: Next channel mode (if more than one is enabled).
+
+It is also possible to make the light lock itself automatically after
+being turned off. To enable this, go to lockout mode and use a `10H`
+action 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
+----------------------
+
+Click 3 times 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:
+
+ - Click: Turn off.
+ - 2 clicks: 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.
+
+On lights with more than one set of LEDs, pressing `3C` during batt
+check mode can select which set of LEDs (which channel mode) it uses
+to blink out numbers.
+
+The voltage config menu has these settings:
+
+ 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:
+
+ `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
+
+ 2. Post-off voltage display timeout. (only on lights with RGB aux)
+ This setting determines how many seconds the RGB aux LEDs
+ display the voltage color after the torch goes to sleep. Click
+ once per desired second, or zero times to turn this function
+ off.
+
+### 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 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:
+
+ - Candle mode
+ - Bike flasher
+ - Party strobe
+ - Tactical strobe
+ - Lightning storm mode
+
+Click 3 times from Off to access these, but hold the third click for a
+moment. Click, click, hold. 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)
+ - `4C`: Previous strobe / mood mode.
+ - `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.
+
+ - Police strobe (on some lights)
+
+ 2-color police style strobe. Only works on lights with 2 or more
+ colors.
+
+ - 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
+--------------
+
+Click 5 times from Off to enter Momentary mode. Or 5 times from Ramp,
+or 5 times 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 click 5 times 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.
+
+
+Tactical Mode
+--------------
+
+Click 6 times from Off to enter Tactical Mode, or 6 times in Tactical
+Mode to exit and go back to "Off".
+
+Tactical Mode provides instant momentary access to high, low, and
+strobe, but each of these is configurable. The inputs are:
+
+ - `1H`: High
+ - `2H`: Low
+ - `3H`: Strobe
+
+Each of these only lasts as long as you hold the button.
+
+Other commands in Tactical Mode are:
+
+ - `6C`: exit (go back to Off Mode)
+ - `7H`: Tactical Mode config menu
+ - 1st blink: configure tactical slot 1
+ - 2nd blink: configure tactical slot 2
+ - 3rd blink: configure tactical slot 3
+
+To change what is in a tactical slot, press `7H`, then release the button
+after the 1st, 2nd, or 3rd blink. Then enter a number. Each click adds
+1, and each hold adds 10. The number can be:
+
+ - 1 to 150: set the brightness level
+ - 0: last-used strobe mode
+ - 151+: go directly to a specific strobe mode
+ 151 = party strobe
+ 152 = tactical strobe
+ 153+ = other strobes, in the same order they're in in the `Off -> 3H`
+ strobe group
+
+This assumes the light has a ramp 150 levels long. Strobe modes start
+at the ramp size plus 1, so it may be different if a light has a
+different ramp size.
+
+
+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, click 7 times (but hold the
+final click) 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` action from Off.
+
+For smooth ramping mode, there are three menu options:
+
+ 1. Floor. (default = 1/150)
+ 2. Ceiling. (default = 120/150)
+ 3. Ramp speed. (default = 1, fastest speed)
+
+For the stepped ramping mode, there are three menu options:
+
+ 1. Floor. (default = 20/150)
+ 2. Ceiling. (default = 120/150)
+ 3. 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.
+
+ 1. Floor. (default = 20/150)
+ 2. Ceiling. (default = 120/150)
+ 3. Number of steps. (default = 5)
+ 4. 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 model
+number and a date. `BBPP.YYYY-MM-DD`
+
+ - `BB`: Brand ID
+ - `PP`: Product ID
+ - `YYYY`: Year
+ - `MM`: Month
+ - `DD`: Day
+
+Versions before 2023-05-30 used `YYYYMMDDBBPP` format.
+Anduril 1 used only `YYYYMMDD` format, or none at all.
+
+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
+click the button 7 times. 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.
+
+When a light has a single-color aux LED and no RGB, it fast-blinks the
+aux LED in "off" modes when voltage is low.
+
+
+Misc Config Menu
+----------------
+
+Some models may have an extra config menu for settings which don't fit
+anywhere else. This menu is located at "Off -> 9H" in the advanced UI.
+
+These settings are, in order:
+
+ - Tint ramp style: (on some lights)
+
+ 0 : smooth ramp (blend channels in any proportion)
+ 1 : middle tint only
+ 2 : extreme tints only (only one channel active at a time)
+ 3+: stepped ramp with 3+ steps
+
+ - Jump Start level: (on some lights)
+
+ 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 Misc Config Menu depends on the
+hardware model and the firmware version.
+
+
+Channel Modes (a.k.a. Tint Ramping or Multi Channel controls)
+-------------------------------------------------------------
+
+Some lights have more than one set of LEDs which can be adjusted to
+change the beam color, shape, or other properties. These lights have
+features like tint ramping and channel modes.
+
+On these models, there are some global button mappings which work at all
+times unless they're overridden by the mode the light is in:
+
+ - `3C`: Next channel mode
+ - `3H`: Adjust current channel mode (ramp tint, for example)
+ - `9H`: Channel mode config menu
+
+Details depend on the exact type of light used. For example, if a light
+has LEDs in cool white, warm white, and red... that light might have a
+few channel modes:
+
+ - White blend (adjustable CCT / tint ramping)
+ - Red only
+ - Auto-tint
+
+On a light like this, the user could press 3C to rotate through these
+different channel modes... white, then red, then auto, then back to
+white.
+
+Additionally, in the "white blend" mode, the user could press 3H to
+manually adjust the balance between warm white and cool white.
+
+Finally, if the user decides they don't want all of the modes, they can
+turn some off. Press `9H` (while on) to start the channel mode config
+menu. To disable the auto-tint mode, for example, it is the 3rd mode...
+so wait for the 3rd blink, then release the button. Then at the prompt,
+enter a value of 0 (wait for the prompt to time out without clicking
+anything). Afterward, the auto tint mode should no longer be in the
+channel mode rotation. To turn the mode back on later, do the same
+thing, but enter a value of 1 (click 1 time at the prompt).
+
+A light can have many different channel modes, so don't be shy about
+turning off any modes you don't use. It makes all the others easier to
+reach.
+
+If you turn off channel modes until only 1 remains, the `Ramp -> 3C`
+action reverts to its single-channel behavior -- switching between a
+smooth or stepped brightness ramp. Additionally, when a channel mode
+has nothing to adjust with `3H`, the `3H` action also reverts to its
+single-channel behavior -- momentary turbo.
+
+The Misc Config Menu (`Off -> 9H`) may also have a setting to choose a
+tint ramp style. There are a few styles available, by entering
+different numbers into that config menu:
+
+ 0: smooth ramp
+ 1: middle tint only
+ 2: extreme tints only
+ 3+: stepped ramp with 3+ steps
+
+This setting only applies to modes with channel ramping (i.e. tint
+ramping), and only when that mode uses the default `3H` event handler.
+Custom channel modes may work differently.
+
+
+
+UI Reference Table
+------------------
+
+This is a table of all button mappings in Anduril, in one place:
+
+### "Off" Mode
+
+| 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 | `6C` | Tactical mode
+| Off | Full | `7C` | Aux LEDs: Next pattern
+| Off | Full | `7H` | Aux LEDs: Next color
+| Off | Full | `9H` | Misc Config menu (varies per light):
+| | | | ?1: tint ramp style
+| | | | ?2: jump start level
+| 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 Mode
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Ramp | Any | `1C` | Off
+| Ramp | Any | `1H` | Ramp (up, with reversing)
+| Ramp | Any | `2H` | Ramp (down)
+| Ramp | Any | `2C` | Go to/from ceiling or turbo (configurable)
+| Ramp | Full | `3C` | Change ramp style (smooth / stepped)
+| Ramp | Full | `6C` | (same as above, but on multi-channel lights)
+| Ramp | Full | `3H` | Momentary turbo (when no tint ramping)
+| Ramp | Full | `4H` | Momentary turbo (on multi channel lights)
+| 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: (for current ramp)
+| | | | 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: switch to automatic mem, not manual mem
+| | | | 2: set manual mem timeout
+| | | | 3: ramp after moon or not
+| | | | 4: advanced UI turbo style
+| | | | 5: smooth steps
+
+### Multi-channel Lights
+
+| Mode | UI | Button | _**Multi-channel lights only!**_
+| :--- | :-- | ------: | :-----
+| Any | Any | `3C` | Next channel mode (i.e. next color mode)
+| Any | Any | `3H` | Tint ramp (if this mode can)
+| Any | Full | `9H` | Channel mode enable/disable menu:
+| | | | N: click (or not) to enable (disable) mode N
+
+### Lockout Mode
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Lockout | Any |`1C`/`1H`| Momentary moon (lowest floor)
+| Lockout | Any |`2C`/`2H`| Momentary moon (highest floor, or manual mem level)
+| Lockout | Any | `3C` | Unlock (go to "Off" mode)
+| Lockout | Any | `3H` | Next channel mode (if more than one enabled)
+| 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 in minutes (0 = no auto-lock)
+
+### Strobe Group Modes
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Strobe (any) | Full | `1C` | Off
+| Strobe (any) | Full | `2C` | Next strobe mode
+| Strobe (any) | Full | `3C` | Next channel mode (saved per strobe mode)
+| Strobe (any) | Full | `4C` | Prev strobe mode
+| Strobe (any) | Full | `5C` | Momentary mode (using current strobe)
+| Party strobe | Full |`1H`/`2H`| Faster / slower
+| Tactical strobe| Full |`1H`/`2H`| Faster / slower
+| Police strobe | - | - | None (brightness is Ramp Mode's last-used level)
+| Lightning | Full | `1H` | Interrupt current flash or start new one
+| Candle | Full |`1H`/`2H`| Brighter / dimmer
+| Candle | Full | `5H` | Sunset timer on, add 5 minutes
+| Biking | Full |`1H`/`2H`| Brighter / dimmer
+
+### Blinky Modes
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Batt check | Any | `1C` | Off
+| Batt check | Full | `2C` | Next blinky mode (Temp check, Beacon, SOS)
+| Batt check | Full | `3C` | Next channel mode (for number blinks only)
+| Batt check | Full | `7H` | Voltage config menu
+| | | | 1: voltage correction factor
+| | | | ...
+| | | | 5: -0.10V
+| | | | 6: -0.05V
+| | | | 7: no correction
+| | | | 8: +0.05V
+| | | | 9: +0.10V
+| | | | ...
+| | | | 2: post-off voltage display seconds
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Temp check | Full | `1C` | Off
+| Temp check | Full | `2C` | Next blinky mode (Beacon, SOS, Batt check)
+| Temp check | Full | `7H` | Thermal config menu
+| | | | 1: set current temperature
+| | | | 2: set temperature limit
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Beacon | Full | `1C` | Off
+| Beacon | Full | `1H` | Configure beacon timing
+| Beacon | Full | `2C` | Next blinky mode (SOS, Batt check, Temp check)
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| SOS | Full | `1C` | Off
+| SOS | Full | `2C` | Next blinky mode (Batt check, Temp check, Beacon)
+
+### Momentary Mode
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Momentary | Full | Any | On (until button is released)
+| Momentary | Full | **Disconnect power** | Exit Momentary mode
+
+### Tactical Mode
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Tactical | Full | `1H` | High (tactical slot 1)
+| Tactical | Full | `2H` | Low (tactical slot 2)
+| Tactical | Full | `3H` | Strobe (tactical slot 3)
+| Tactical | Full | `6C` | Exit (go back to Off Mode)
+| Tactical | Full | `7H` | Tactical Mode config menu:
+| | | | 1: tactical slot 1
+| | | | 2: tactical slot 2
+| | | | 3: tactical slot 3
+
+### Config Menus
+
+| Mode | UI | Button | Action
+| :--- | :-- | ------: | :-----
+| Config menus | Full | Hold | Skip current item with no changes
+| Config menus | Full | Release | Configure current item
+| | | | (goes to Number Entry menu)
+| Number entry | Full | Click | Add 1 to value for current item
+| Number entry | Full | Hold | Add 10 to value for current item
+