What was measured, and how
Every number on the product pages now comes from this work rather than from a datasheet. The rig was a programmable load, a bench supply standing in for USB-C and for a panel, a battery simulator for the BMS trip tests, and a thermal chamber for the temperature gates. Each board was measured with firmware running, and the hardware safety layers were then measured again with the supervisor halted, so that what the firmware does and what the hardware does on its own are separate numbers.
Efficiency
Charger efficiency from USB-C at 5 V into a 1S Li-ion cell at 3.8 V:
| Charge current | Efficiency |
|---|---|
| 0.5 A | 93 % |
| 1 A | 94 % |
| 2 A | 92 % |
| 3 A | 91 % |
The 3.3 V rail from a 1S cell at 3.7 V runs at 92 % from 100 mA to 1 A and 89 % at the 1.5 A rating. The 5 V boost sits at 90 % across its range to 2 A.
Solar: on a 6 V 3 W panel and a 12 V-class 10 W panel, the charger's MPPT held the panel within 2 % of its maximum power point measured by sweep, across the morning and afternoon curve. Harvested energy over a clear day matched the panel's sweep-integrated maximum within 4 %.
Idle current
Measured at the cell, outputs unloaded, at 25 °C:
| State | Current |
|---|---|
| Running, no BLE advertising | 28 µA |
| Running, BTHome advertising at 2 s | 42 µA |
| Ship mode | 3 µA |
The advertising cost is 14 µA at a 2 s interval and 4 µA at 10 s. All three numbers are now on the spec sheets.
Gauge accuracy
On LiFePO4, the hard chemistry for a gauge because its voltage curve is flat, state of charge was within 3 % of a reference coulomb counter after one learning cycle and within 5 % before it. On Li-ion it was within 2 % from the first cycle. On a primary cell the gauge counts out from the set capacity and matched the reference to within 1 % over a 60-day run.
BMS trips
On a battery simulator, with the supervisor halted so only the protector was acting:
| Fault | Threshold | Trip time | Result |
|---|---|---|---|
| Overvoltage, LiFePO4 profile | 3.75 V | 1.2 s | Switch opened |
| Overvoltage, Li-ion profile | 4.28 V | 1.2 s | Switch opened |
| Undervoltage, LiFePO4 | 2.45 V | 2.0 s | Switch opened, recovered on input |
| Overcurrent, discharge | 4 A | 20 ms | Switch opened |
| Short circuit | 10 A | 300 µs | Switch opened |
| Reversed cell | immediate | Reverse-battery protection held, no damage | |
| Mismatched 3S pack, 80 mV spread | Balanced to 10 mV in 4 h at 50 mA |
Every recovery path was exercised: a tripped protector latches until an input appears, and the charger pre-charges a drained cell at 50 mA before full charging. The halted-supervisor runs are the ones that matter; the BMS keeps its safe defaults in non-volatile memory, and those defaults were what tripped.
Thermals
Charger temperature rise over ambient, in still air, on a bare board:
| Board | Input | Rise at the charger |
|---|---|---|
| Feather 1S | 10 W continuous | 38 °C |
| Feather 1S | 15 W peak, 10 min | 47 °C |
| Pack | 20 W continuous | 31 °C |
The 1S boards are rated at 10 W continuous and 15 W peak on these numbers. The Pack board's larger area and its two bucks keep it cooler at twice the power; it carries the 20 W rating.
Temperature gates with the firmware halted
In the chamber, with the supervisor halted, the charger's own TS pin stopped charging below 0 °C and above 45 °C on a Li-ion profile and derated current between 0 and 10 °C. The over-temperature comparator cut both rails at 65 °C on the thermistor with no firmware involved. Both gates were then confirmed again with firmware running and the configurable limits set inside the hardware ceilings.
That is the safety story in one sentence: the limits that matter work with the firmware dead.
What is still being measured
Long-term LiFePO4 cycle data from the outdoor nodes, which the reference builds are now gathering, and the gauge's behaviour on sodium-ion cells on the Pack board. Those go on the pages when they exist.