Add MediaMesh radio2 presets and automatic media routing
This commit is contained in:
1 parent
38f68596f7
commit
53c7bb141a
14 files changed
+358
-19
No files matched your search
@@ -7,6 +7,12 @@
|
||||
See [two LoRa profiles](radio_profiles.md) for `radio2`, `tempradio2`, scheduling,
|
||||
RX-only mode, cross-transmission policy, and optional radio preambles.
|
||||
|
||||
For a saved MediaMesh second profile, use `set radio2 mediamesh`
|
||||
(911.150 MHz, 250 kHz, SF7, CR 4/5, `rxtx`, automatic preamble), or
|
||||
`set radio2 mediamesh-range` for 125 kHz. These leave the primary profile
|
||||
and crossing policy unchanged. Both radio2 and `radio2.cross` default to `off`.
|
||||
See [MediaMesh presets](radio_profiles.md#mediamesh-presets).
|
||||
|
||||
For supported Full Companions, see [Meshtext channel chat](radio_profiles.md#meshtext-channel-chat)
|
||||
for `mt-` channels and the explicit `send mt.nodeinfo <channel slot>` command.
|
||||
Chat remains plain text. A separate GPS-free NodeInfo is sent after the first
|
||||
@@ -995,6 +1001,9 @@ set tx.ssh auto|radio|radio2|both|off
|
||||
Choose one value after `set`. Both default to `auto` and are saved across
|
||||
reboot. Explicit choices override a channel route for the matching application
|
||||
data only; they do not change ordinary text, adverts or contact ACKs.
|
||||
`tx.media auto` selects only the active `rxtx` MeshCore second profile,
|
||||
including `tempradio2`, when available. Otherwise, it uses the normal
|
||||
channel/global route. `tx.ssh auto` keeps that normal route.
|
||||
`radio2` requires an active `rxtx` MeshCore profile and never falls back to
|
||||
the primary. `both` uses the available profiles; `off` blocks sending only.
|
||||
Queries include the effective `active=` selection and warn if radio2 is
|
||||
|
||||
@@ -92,6 +92,7 @@ Examples use private channel index `3`:
|
||||
|
||||
```text
|
||||
fleet send 3 get radio2
|
||||
fleet send 3 set radio2 mediamesh
|
||||
fleet send 3 set tempradio2 910.5,500,8,5,rxtx,120
|
||||
fleet send 3 set radio2.cross auto
|
||||
fleet send 3 set flood.rule.4 type=grp_txt hops=6+ drop
|
||||
@@ -295,7 +296,7 @@ Reboot or changing enrollment discards the partial transfers.
|
||||
|
||||
| Control | Fleet commands |
|
||||
| --- | --- |
|
||||
| Saved second profile | `get radio2`, `set radio2 <tuple|off>` |
|
||||
| Saved second profile | `get radio2`, `set radio2 <tuple|mediamesh|mediamesh-range|off>` |
|
||||
| Temporary second profile | `get tempradio2`, `set tempradio2 <tuple|off>` |
|
||||
| Scheduled primary profile | `get/set/del radioat`, `get/set/del tempradioat` |
|
||||
| Scheduled second profile | `get/set/del radioat2`, `get/set/del tempradioat2` |
|
||||
@@ -313,6 +314,11 @@ Each role still checks whether it supports the requested setting. Immediate
|
||||
primary radio changes, identity export, passwords, ACL edits, filesystem operations, firmware
|
||||
installation, reboot, and unrestricted CLI are outside fleet capability.
|
||||
|
||||
`set radio2 mediamesh` saves 911.150 MHz, 250 kHz, SF7, CR 4/5, `rxtx`,
|
||||
with automatic scan-aware preamble. `mediamesh-range` uses 125 kHz instead.
|
||||
These presets preserve the primary profile and crossing policy; new
|
||||
configurations default to radio2 off and `radio2.cross off`.
|
||||
|
||||
## Schedule radio changes and set clocks
|
||||
|
||||
Use the normal schedule syntax, with UTC epoch seconds or `+N` whole minutes.
|
||||
|
||||
+57
-6
@@ -8,6 +8,9 @@
|
||||
settings. It is useful for listening to two networks, or keeping your usual
|
||||
channel available during a LoRa firmware update.
|
||||
|
||||
The second profile and `radio2.cross` both default to `off`. Saved settings
|
||||
survive firmware updates; selecting a profile does not change the crossing policy.
|
||||
|
||||
There are **at most two active profiles**. `tempradio` temporarily replaces
|
||||
`radio`; `tempradio2` temporarily replaces `radio2`. These are time-shared receive
|
||||
windows, not simultaneous receivers. Receiving or transmitting a packet on one
|
||||
@@ -33,6 +36,40 @@ get radio2.status
|
||||
The tuple is **frequency in MHz, bandwidth in kHz, spreading factor, coding-rate
|
||||
denominator, mode, optional preamble in symbols**. `5` means coding rate 4/5.
|
||||
|
||||
### MediaMesh presets
|
||||
|
||||
Enable the saved MediaMesh profile with one command:
|
||||
|
||||
```text
|
||||
set radio2 mediamesh
|
||||
```
|
||||
|
||||
This sets **911.150 MHz, 250 kHz, SF7, CR 4/5, `rxtx`, automatic preamble**.
|
||||
For the same profile at **125 kHz**, use:
|
||||
|
||||
```text
|
||||
set radio2 mediamesh-range
|
||||
```
|
||||
|
||||
The RF settings match the presets documented by
|
||||
[MeshCore Open TAK](https://github.com/jade-on-mesh/meshcore-open-tak/blob/main/documentation/media-mesh.md)
|
||||
and [Wadamesh TAK](https://github.com/jade-on-mesh/wadamesh-tak/blob/main/MEDIAMESH.md).
|
||||
Nodes exchanging media need matching radio settings.
|
||||
|
||||
Both leave the primary profile and `radio2.cross` unchanged. The center is
|
||||
625 kHz above a 910.525 MHz primary. Automatic preamble remains scan-aware;
|
||||
neither preset fixes it at 32 symbols. See [preamble](#preamble) for the
|
||||
switching measurement and recommendations.
|
||||
|
||||
On Companions, the default `tx.media auto` sends recognized binary photo/voice
|
||||
traffic only on an active `rxtx` MeshCore second profile, including `tempradio2`.
|
||||
Apps do not need to set `tx.media`. Ordinary traffic keeps its existing route.
|
||||
If the second profile cannot transmit MeshCore, media uses the normal
|
||||
channel/global route; `set tx.media radio2` instead requires radio2 with no
|
||||
primary fallback. See [application TX routing](#companion-media-and-ssh-tx-routing).
|
||||
|
||||
### Channel spacing
|
||||
|
||||
When setting a saved, temporary or scheduled second profile, the response warns
|
||||
if its occupied bandwidth overlaps the primary channel or comes within **6 kHz
|
||||
of either edge**. This check uses both channel bandwidths, regardless of SF or
|
||||
@@ -67,6 +104,7 @@ For transmission on both permanent profiles:
|
||||
|
||||
```text
|
||||
set radio2 910.5,500,8,5,rxtx
|
||||
set radio2.cross on
|
||||
```
|
||||
|
||||
The same encoded message is queued separately for each allowed transmit profile.
|
||||
@@ -283,17 +321,27 @@ set tx.ssh radio
|
||||
|
||||
Both accept `auto|radio|radio2|both|off` and default to `auto`. An explicit
|
||||
application route overrides the channel's TX choice for that datagram only;
|
||||
`auto` preserves the channel/global behavior. `radio2` never falls back to
|
||||
`radio`, and must be an enabled `rxtx` **MeshCore** profile. `both` uses the
|
||||
`tx.media auto` chooses only radio2 whenever its active profile permits
|
||||
`rxtx` **MeshCore** transmission, including an active `tempradio2`. This
|
||||
overrides the channel/global route for recognized media even when an app
|
||||
has never configured `tx.media`. Otherwise, media uses the normal channel/global
|
||||
route. `tx.ssh auto` always preserves that normal route.
|
||||
|
||||
The explicit `radio2` choice never falls back to `radio`, and requires an enabled
|
||||
`rxtx` **MeshCore** profile. `both` uses the
|
||||
profiles available for MeshCore transmission. `off` blocks transmission, not
|
||||
reception. Getters show the saved choice and current `active=` mask; `auto`
|
||||
shows `active=channel/global`, because the effective route depends on the
|
||||
shows `active=radio2` while media automatically selects radio2, and
|
||||
`active=channel/global` otherwise, because the effective route then depends on the
|
||||
destination channel (or global rules for raw data). Settings
|
||||
survive reboot; a failed save returns an error and keeps the previous choice.
|
||||
Already queued packets retain their original route.
|
||||
|
||||
`tx.media` recognizes Open TAK photo/voice channel data type `0x5643`, raw
|
||||
clip packets `0x56`/`0x57`, and well-formed binary fetch requests `0x72`.
|
||||
This covers `CMD_SEND_CHANNEL_DATA` and `CMD_SEND_RAW_DATA`, plus visible
|
||||
raw media in `CMD_SEND_RAW_PACKET`. Fully encoded encrypted group packets
|
||||
submitted through `CMD_SEND_RAW_PACKET` retain their existing route.
|
||||
Text announcements (`VE3:`, `VM1:`, `VI1:`), text fetch requests (`VR3:`),
|
||||
ordinary chat, contact ACKs, adverts, OTA, and unrelated raw data keep their
|
||||
normal routing. The format is defined in
|
||||
@@ -313,9 +361,11 @@ adopt the contract. Other channel data types do not acquire an SSH route
|
||||
merely because their contents start with `SSH`. Raw packets still require
|
||||
a direct path, including zero-hop; this does not enable raw flooding.
|
||||
|
||||
For a media-only side channel, configure `radio2`/`tempradio2` in `rxtx`,
|
||||
set `radio2.cross off`, then set `tx.media radio2`. Ordinary text can stay on
|
||||
the primary profile without routing every raw application onto radio2.
|
||||
For a media-only side channel, use `set radio2 mediamesh` with the default
|
||||
`radio2.cross off` and `tx.media auto`. Ordinary text can stay on the primary
|
||||
profile without routing every raw application onto radio2. Choose
|
||||
`set tx.media radio2` if media must fail rather than use the primary when
|
||||
radio2 is off, RX-only, or owned by another protocol.
|
||||
|
||||
## ESP32 Companion Ethernet over LoRa (KISS)
|
||||
|
||||
@@ -821,6 +871,7 @@ setting is preserved across firmware updates and reboots.
|
||||
|
||||
These are the global rules used by Companion targets set to `auto`; an explicit
|
||||
contact/channel choice above overrides crossing for its own outbound packets.
|
||||
Recognized media uses the separate `tx.media auto` selection described above.
|
||||
Ordinary crossing respects `rx`. The infrastructure-only `tx.reply ... force`
|
||||
override above permits locally generated replies on that profile.
|
||||
With crossing allowed, a packet received there may still be forwarded on the
|
||||
|
||||
Reference in new issue
Block a user