Detect SolarXiao MPPT automatically and support Base self telemetry
This commit is contained in:
1 parent
0f7b898bcb
commit
804219e9fe
7 files changed
+318
-56
No files matched your search
@@ -4,9 +4,9 @@
|
||||
|
||||
# CLI Commands
|
||||
|
||||
For SolarXiao Advanced/MPPT carrier selection, live battery/MCU readings and
|
||||
charger controls, see [SolarXiao carrier profiles](solarxiao_power.md)
|
||||
(`get solar`, `get solar readings`, `set solar.board`, `get mppt`, `set mppt`).
|
||||
For SolarXiao Base/Advanced/MPPT automatic detection, manual overrides, live
|
||||
battery/MCU readings and charger controls, see [SolarXiao carrier profiles](solarxiao_power.md)
|
||||
(`get solar`, `get solar readings`, `set solar.board auto`, `get mppt`, `set mppt`).
|
||||
|
||||
See [two LoRa profiles](radio_profiles.md) for `radio2`, `tempradio2`, scheduling,
|
||||
RX-only mode, cross-transmission policy, and optional radio preambles.
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ Choose firmware with the [firmware picker](firmware_picker.md). For help with a
|
||||
|
||||
## Documentation
|
||||
|
||||
- [SolarXiao Advanced/MPPT carrier profiles and battery controls](solarxiao_power.md)
|
||||
- [SolarXiao Base/Advanced/MPPT detection and battery controls](solarxiao_power.md)
|
||||
|
||||
- [Feature switches by role](role_feature_switches.md) and [Full Companion features](full_companion_features.md)
|
||||
- [Firmware update guide](ota_user_guide.md), [easy LoRa OTA](ota_easy.md), and [scripted LoRa OTA](lora_ota_automation.md)
|
||||
|
||||
+62
-17
@@ -1,45 +1,81 @@
|
||||
# SolarXiao carrier profiles, MPPT and battery controls
|
||||
|
||||
SolarXiao Repeater firmware supports the older BQ24650 Advanced carrier and the
|
||||
LTC4162/INA260 MPPT carrier in Full and Reduced builds. Use USB CLI or the authenticated
|
||||
administrator CLI over LoRa. Ship mode and
|
||||
SolarXiao Repeater firmware supports the CN3791 Base, older BQ24650 Advanced and
|
||||
LTC4162/INA260 MPPT carriers in Full and Reduced builds. Use USB CLI or the
|
||||
authenticated administrator CLI over LoRa. Ship mode and
|
||||
saved-policy reset require local USB. Commands do not change RF settings.
|
||||
|
||||
## Selecting the carrier
|
||||
## Automatic detection and manual overrides
|
||||
|
||||
Carrier selection is configured by the operator; missing I2C responses never
|
||||
identify an Advanced board. `mppt` is the default for existing installations.
|
||||
The default is `auto` when no carrier selection has been saved. Existing saved
|
||||
`mppt` or `advanced` selections remain manual overrides after an update.
|
||||
Use `set solar.board auto` to enable detection on such an installation.
|
||||
The firmware environment, hardware/OTA identity and flash layout are unchanged.
|
||||
|
||||
```
|
||||
get solar.board
|
||||
set solar.board advanced
|
||||
set solar.board auto
|
||||
get solar
|
||||
get solar capabilities
|
||||
get solar readings
|
||||
get solar history
|
||||
```
|
||||
|
||||
For the older SolarXiao 2W Advanced, choose `advanced`. This reports the BQ24650
|
||||
hardware capabilities and the live XIAO battery ADC and processor temperature.
|
||||
Auto mode checks the INA260 manufacturer's ID (`0xfe = 0x5449`) and device ID
|
||||
(`0xff & 0xfff0 = 0x2270`) at carrier address `0x40`. An address ACK alone is not
|
||||
enough: another device such as INA219 can share that address. Detection only
|
||||
reads identity registers; it does not configure/reset either chip. The first
|
||||
probe occurs in the loop after initialization, then retries every five seconds
|
||||
until a valid identity is found. A positive result identifies MPPT for these
|
||||
carrier designs and is retained until reboot or a new board selection.
|
||||
Temporary communication loss does not relabel a previously detected MPPT.
|
||||
|
||||
Without a verified INA260, auto reports `self-only` and keeps retrying. It does
|
||||
not claim to distinguish Base from Advanced: neither has a digital identity,
|
||||
and missing responses can also mean an MPPT power/bus fault. Charger access,
|
||||
saved-override replay and native carrier telemetry stay blocked until a valid
|
||||
INA260 identity is found. XIAO self readings remain available throughout.
|
||||
The MPPT carrier's INA260 was previously read with USB power only; detection
|
||||
does not require the LTC4162 charger to respond at SOLAR/VIN.
|
||||
|
||||
Manual settings are available when the physical carrier is known:
|
||||
|
||||
| Setting | Behavior |
|
||||
| --- | --- |
|
||||
| `set solar.board auto` | Verify INA260 before enabling MPPT; otherwise self-only, retrying. |
|
||||
| `set solar.board base` | Base/CN3791 capabilities, self readings, no native I2C access. |
|
||||
| `set solar.board advanced` | Advanced/BQ24650 capabilities, self readings, no native I2C access. |
|
||||
| `set solar.board mppt` | Enable native access without requiring INA260 detection; existing charger write identity checks still apply. |
|
||||
|
||||
For Base or Advanced, an explicit selection reports that design's hardware
|
||||
capabilities and the live XIAO battery ADC and processor temperature.
|
||||
The existing self telemetry stays on channel 1, with voltage and temperature as
|
||||
different LPP types. It adds no invented charger flags, current, watts, battery
|
||||
NTC temperature or panel measurements. `get solar battery` aliases the self
|
||||
readings; the MCU temperature is not a battery or charger temperature.
|
||||
If a node already reports battery voltage and MCU temperature on channel 1,
|
||||
this profile adds no further physical measurements. It adds explicit carrier
|
||||
selection and capability reporting; the voltage/temperature history commands
|
||||
this profile adds no further physical measurements. It adds carrier detection,
|
||||
manual overrides and capability reporting; the voltage/temperature history commands
|
||||
also already exist in builds that include telemetry history.
|
||||
|
||||
The [2025 Base Standard schematic](https://github.com/wehooper4/Meshtastic-Hardware/blob/main/XaioSeries/SolarXaio/Base/Standard/Schematic_SolarXaio_Base_2025-10-23.pdf)
|
||||
uses a CN3791 analog charger with no digital interface or INA monitor. Battery
|
||||
voltage reaches the XIAO BAT input. Charge status drives an LED, and the other
|
||||
charger signals are not connected to XIAO measurement/control inputs. Base
|
||||
therefore needs no extra telemetry driver: only self battery voltage and MCU
|
||||
temperature are available, just like Advanced. Base Lite publishes a README
|
||||
but no schematic, so its exact connections are not independently qualified here.
|
||||
|
||||
The [2025 Advanced schematic](https://github.com/wehooper4/Meshtastic-Hardware/blob/main/XaioSeries/SolarXaio/Advanced/Standard/Schematic_SolarXaio_ADV_2025-10-23.pdf)
|
||||
has no INA monitor or digital charger interface. Charger status pins drive LEDs,
|
||||
NTC goes only to the charger, and current/voltage/MPP setpoints use hardware
|
||||
resistors, switches and a solder jumper. An OTA update cannot measure those
|
||||
signals or change those setpoints without additional hardware connections.
|
||||
|
||||
Advanced mode suppresses native LTC4162/INA260 polling, register reads/writes,
|
||||
Manual Base/Advanced mode suppresses native LTC4162/INA260 polling, register reads/writes,
|
||||
replay and telemetry/history channels 2..13. `get mppt`, `set mppt ...` and
|
||||
`mppt ...` explain that the Advanced carrier has no digital charger interface.
|
||||
`mppt ...` explain that the selected carrier has no digital charger interface.
|
||||
Pending auto mode only probes INA260 identity; it does not access the charger.
|
||||
The generic sensor scanner still reserves native addresses 0x40 and 0x68, so it
|
||||
cannot bypass that policy. Optional external sensor channels still start at 14.
|
||||
Historical samples retained from a previous carrier selection describe the old
|
||||
@@ -59,15 +95,24 @@ and MCU readings remain available. An explicit successful `set solar.board`
|
||||
recovers selection. With an unavailable filesystem, the selection cannot be
|
||||
saved and native access remains blocked.
|
||||
|
||||
For the LTC4162 carrier, select `set solar.board mppt`. This re-enables native
|
||||
access and reloads any retained `/solar_power` charger overrides. Changing the
|
||||
When auto verifies MPPT or a manual MPPT selection re-enables native access,
|
||||
the firmware reloads any retained `/solar_power` charger overrides. Changing the
|
||||
carrier does not erase those overrides, change RF/PA settings, modify battery
|
||||
protection, or write charger defaults. Advanced mode is not chip autodetection.
|
||||
protection, or write charger defaults. The INA260 identity verifies the monitor;
|
||||
LTC4162 chemistry and cell-count checks still independently guard charger writes.
|
||||
|
||||
Radio target selection remains separate. Choose the existing
|
||||
`solarxiao_30S_repeater` or `solarxiao_33S_repeater` firmware target to match the
|
||||
fitted E22 radio module. The
|
||||
published Base Standard schematic specifies M30S; the pictured 2W Advanced
|
||||
uses M33S. Charger detection cannot identify the PA variant or select its TX
|
||||
power limits.
|
||||
|
||||
A remotely deployed node must first receive compatible firmware before these
|
||||
commands can be used. Deployment still requires its installed target and
|
||||
bootloader compatibility to be checked when it is reachable.
|
||||
|
||||
See the [Advanced profile build/host validation](test-results/solarxiao_advanced_2026-10-21.md).
|
||||
See the [earlier manual Advanced profile validation](test-results/solarxiao_advanced_2026-10-21.md).
|
||||
This adds no measurements beyond existing self voltage/MCU temperature and has
|
||||
not been installed on the remote Advanced board.
|
||||
|
||||
|
||||
Reference in new issue
Block a user