Warn LiFePO4 users about unchanged 4.2V chargers

This commit is contained in:
mikecarper committed 2026-09-30 01:24:49 -07:00
1 parent 24fed432bd
commit fdd67ce1b3
2 files changed
+16

No files matched your search

+11
View File
@@ -4824,6 +4824,13 @@ lock, and running cutoff off. `lifepo4` uses 2700 mV = 0%, 3550 mV = 100%,
values and allows endpoint overrides. These percentages are simple voltage
estimates; they are not an accurate state-of-charge measurement under load.
**WARNING: SELECTING LIFEPO4 DOES NOT CHANGE ANY BOARD'S CHARGING CIRCUIT. A
4.2 V LI-ION CHARGER WILL STILL CHARGE TOWARD 4.2 V AND CAN DESTROY A LIFEPO4
CELL. USE A LIFEPO4-COMPATIBLE CHARGER OR DISABLE/ISOLATE ON-BOARD CHARGING
BEFORE CONNECTING A LIFEPO4 CELL.** Check the charging hardware on every board
before using this profile; firmware battery-profile and cutoff settings cannot
make a Li-ion charger safe for LiFePO4.
```text
get battery.profile
set battery.profile lifepo4
@@ -4848,6 +4855,10 @@ For a RAK3401/RAK13302 LiFePO₄ cell:
set battery.profile lifepo4
```
For example, the
[RAK19007 base-board datasheet](https://docs.rakwireless.com/product-categories/wisblock/rak19007/datasheet/)
specifies 4.2 V charging for a Li-ion battery. The profile does not change it.
The 2.7 V cutoff is a cell-protection choice, not a guarantee of 1 W RF
output. The [RAK13302 datasheet](https://docs.rakwireless.com/product-categories/wisblock/rak13302/datasheet-vd/)
specifies 3.0 V minimum at VBAT and lists 5 V / 1 A peak for 30 dBm output.
+5
View File
@@ -244,6 +244,11 @@ bool handleVoltagePolicyCommand(const char* command, char* reply,
}
if (!save(boot, low, empty, full, adc_permille, next))
snprintf(reply, reply_capacity, "Error: battery profile could not be saved");
else if (next == LIFEPO4)
snprintf(reply, reply_capacity,
"OK - lifepo4 saved; reboot. "
"WARNING: PROFILE DOES NOT CHANGE CHARGERS. "
"A 4.2V CHARGER STILL CHARGES TO 4.2V AND CAN DESTROY LIFEPO4 CELLS.");
else snprintf(reply, reply_capacity, "OK - %s profile saved; reboot for bootlock", value);
return true;
}