mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-02 15:03:44 +00:00
125 lines
6.7 KiB
Markdown
125 lines
6.7 KiB
Markdown
# CLI Availability by Firmware Build
|
|
|
|
MeshCore command availability is determined in three layers:
|
|
|
|
1. **Role** - repeater, room server, sensor, companion, bridge, or KISS modem.
|
|
2. **Build profile** - standard, portable, logging, OTA, or FULL.
|
|
3. **Compiled hardware features** - WiFi, MQTT, GPS, external sensors, PSRAM,
|
|
Ethernet, and similar optional support.
|
|
|
|
The complete command descriptions are in [CLI Commands](cli_commands.md). This
|
|
page describes the commands intentionally omitted or limited by build profile.
|
|
The [CLI Command Availability Matrix](cli_command_availability.md) expands this
|
|
summary into separate nRF52 and ESP32 command tables.
|
|
|
|
## Role comes first
|
|
|
|
| Role | Text administration CLI |
|
|
|---|---|
|
|
| Repeater | Full repeater administration surface, subject to the profile differences below |
|
|
| Room server | Room-server administration surface, subject to the profile differences below |
|
|
| Sensor | Sensor command surface; it does not acquire the repeater administration tree |
|
|
| Serial, USB, BLE, or WiFi companion | Uses the companion protocol; any serial diagnostics are target-specific |
|
|
| KISS modem | Uses the KISS/TNC frame interface, not the repeater text CLI |
|
|
| Bridge | Uses its base role plus commands for the bridge transport compiled into that target |
|
|
|
|
A command belonging to a different role is not considered a profile cut. For
|
|
example, adding FULL features to a sensor does not turn it into a repeater
|
|
administrator.
|
|
|
|
Repeater profiles use 254 neighbor entries across supported platforms. The
|
|
classic T-Beam SX1262 and SX1276 MQTT observer repeaters are the exception and
|
|
retain 50 because their MQTT discovery tables are constrained by internal DRAM.
|
|
|
|
## Profile matrix
|
|
|
|
| Build/profile | Command availability |
|
|
|---|---|
|
|
| Standard non-MQTT repeater or room server | Keeps the normal role CLI. Size-constrained ESP32 artifacts can omit WebConfig and browser WiFi OTA, so their WebConfig/WiFi commands are unavailable. |
|
|
| Standard logging | Logging does not remove commands by itself. It has the same CLI as the selected role/profile and adds the compiled logging behavior. |
|
|
| LoRa-OTA (`-ota-`) | LoRa OTA adds the `ota ...` commands; it does not otherwise reduce the role CLI. ESP32 `no_external_sensors` artifacts retain the compact browser WiFi uploader and use a 254-entry neighbor table. A portable OTA artifact can still have the other portable restrictions described below. |
|
|
| Portable MQTT observer | Keeps MQTT/WiFi commissioning, bridge control, radio essentials, update commands, basic identity/status commands, `neighbors`, `discover.neighbors`, `outpath`, and `altpath`. The large repeater administration tree is omitted to fit the legacy ESP32 application slot. |
|
|
| Portable ESP-NOW bridge | Keeps the repeater's role-specific handlers and a reduced common configuration surface containing radio and bridge essentials, including `rxdelay`, `txdelay`, `outpath`, and `altpath`. |
|
|
| FULL ESP32 | Uses the matching MQTT target with logging off, removes size-based CLI cuts, and restores the complete command surface supported by that role and hardware. |
|
|
| FULL ESP32 logging | Uses the matching non-MQTT target with debug and packet logging enabled and the complete command surface supported by that role and hardware. |
|
|
| `no_external_sensors` | Removes optional external-sensor drivers and their settings; it does not remove core repeater discovery or routing commands. |
|
|
|
|
`logging`, `OTA`, and `FULL` describe independent build features. Do not infer
|
|
that a command is missing merely because `logging` appears in the filename.
|
|
|
|
## Portable MQTT observer retained surface
|
|
|
|
The portable MQTT observer keeps these command groups:
|
|
|
|
- lifecycle and identity: `reboot`, `poweroff`, `shutdown`, `ver`, `board`,
|
|
`password`, and `erase` on the local console;
|
|
- radio operation: `advert`, `advert.zerohop`, `clock`, `clock sync`, `time`,
|
|
`memory`, `neighbors`, `discover.neighbors`, and the remote-client routing
|
|
controls `outpath` and `altpath`;
|
|
- browser/update control when compiled: `start ota`, `stop ota`, `ota check`,
|
|
and `ota update`;
|
|
- radio essentials through `get`/`set`: radio parameters, TX power, CAD,
|
|
interference threshold, AGC reset interval, RX gain, `rxdelay`, `txdelay`,
|
|
repeat state, and applicable FEM controls;
|
|
- MQTT, WiFi, NTP, bridge, and alert commands implemented by the observer
|
|
feature set;
|
|
- region and onboard-GPS commands that fit and are compiled into the selected
|
|
target.
|
|
|
|
Everything in the repeater-only administration tree that is not listed above is
|
|
intentionally cut from this portable profile. The main omissions include ACL
|
|
editing, flood filter/moderation/scope administration, advanced mesh-clock
|
|
controls, recent-repeater/path administration, battery-alert/RX-watchdog
|
|
controls, stored-log management, and external-sensor administration. Use the
|
|
matching FULL ESP32 build when those commands are required.
|
|
|
|
Some observer commands have their own hardware limit:
|
|
|
|
- MQTT neighbor-table publishing requires PSRAM. `discover.scopes` also
|
|
requires PSRAM and the FULL MQTT parser; the portable MQTT profile omits it.
|
|
- `discover.neighbors` does **not** require MQTT or PSRAM.
|
|
- full NTP connectivity diagnostics are omitted from the portable profile.
|
|
|
|
## Discovery invariant
|
|
|
|
`discover.neighbors` sends the zero-hop node-discovery request used to refresh
|
|
the repeater neighbor table. It is available in every repeater build profile,
|
|
including portable MQTT, standard, logging, OTA, FULL, and FULL logging builds.
|
|
|
|
The exact command is:
|
|
|
|
```text
|
|
discover.neighbors
|
|
```
|
|
|
|
It accepts no options and returns:
|
|
|
|
```text
|
|
OK - Discover sent
|
|
```
|
|
|
|
Some MQTT room-server targets also expose the command as part of their compiled
|
|
neighbor-table feature. It is not a cross-role guarantee: companion, KISS,
|
|
sensor, and ordinary room-server firmware use different interfaces or do not
|
|
maintain the repeater administrator neighbor table.
|
|
|
|
## Feature-dependent commands
|
|
|
|
Even in a FULL build, a command can be unavailable when its underlying feature
|
|
does not exist on that target:
|
|
|
|
- WebConfig and the `wifi.ssid`, `wifi.status`, `wifi.powersave`, and `wifi.cli` command
|
|
family require an ESP32 WebConfig build. FULL standalone repeater and
|
|
room-server builds support the corresponding WiFi setters and status
|
|
commands.
|
|
- MQTT commands require an MQTT observer target.
|
|
- `discover.scopes` requires a FULL MQTT build, MQTT neighbor support, and
|
|
PSRAM.
|
|
- GPS and external-sensor commands require their drivers and pins.
|
|
- Ethernet and bridge commands require the corresponding transport.
|
|
- LoRa OTA commands require an artifact with OTA enabled.
|
|
- `uf2reset` applies only to nRF52.
|
|
|
|
When diagnosing an unavailable command, check the role first, then the filename
|
|
profile, and finally the target's compiled hardware features.
|