Yes, the Q8 button can do two brightness levels if you change the firmware. To do this, it activates the MCU’s internal pullup resistor during low mode. Two resistors in series instead of one, so lower current.
Here’s the power draw I measured on a Q8 with various firmware and options:
- 0.13 mA: NarsilM, button high
- 0.03 mA: NarsilM, button off
- 0.10 mA: Anduril, button high
- 0.03 mA: Anduril, button low
- ~0.02 mA: Anduril, button blinking (estimated; 0.10 / 8)
- 0.00 mA: Anduril, button off
A stock Q8 with NarsilM is about 0.03 mA higher due to having BOD (brownout detection) activated. It’s similar to LVP, but implemented much deeper and in a way which responds faster. However, IIRC, it doesn’t activate until 1.8V. I haven’t found it to be necessary, though it does in theory protect against the possibility of the MCU glitching out and running random instructions at low voltage.
This isn’t a firmware thing though; it’s a matter of which fuses are set while flashing. The user can flash Anduril with BOD enabled too, and it’ll run about 0.03 mA higher, but the bin/flash-85.sh script currently doesn’t use that option.
It’s also worth noting that even the highest measured standby drain is negligible on a Q8, so the actual power use below that doesn’t really matter. About the only time it makes a difference is when the button light is off, because power usage is so low that disconnecting power won’t reboot the MCU. Like, in that mode, I can change the batteries and the MCU doesn’t reboot, because it has enough residual charge to keep going for a few minutes without batteries. If I want to force a reboot, I have to press the button while the batteries are out.
Edit: If Anduril is built with “sleep ticks” enabled, which is required for the button’s “blinking” mode, the no-battery runtime is limited to about half a second. This is because it wakes up every half second to generate and process a “sleep tick” event. Average standby power use with this enabled is probably a little higher, but it’s only a small amount. Maybe 0.01 mA.
Basically, standby power use is the sum of a few factors:
- ~0.002 mA: MCU by itself
- ~0.03 mA: if BOD is enabled
- ~0.01 mA: if sleep ticks are enabled
- ~0.03 mA: button light in low mode
- ~0.10 mA: button light in high mode
And these all vary with voltage. The values here are an average, approximately what it uses at 3.7V.