diff --git a/docs/_javascript/firmware_picker.js b/docs/_javascript/firmware_picker.js index e01e5a9a..8e7769aa 100644 --- a/docs/_javascript/firmware_picker.js +++ b/docs/_javascript/firmware_picker.js @@ -948,6 +948,17 @@ profile.releaseFamily === "v1.17.1.5-halo-keymind-cascade-dev-26303793"; } + function supportsRadioProfileCommands(profile) { + if (!profile.controls || profile.controls.primaryEspnow) return false; + const version = String(profile.releaseFamily || "").match( + /^v(\d+)\.(\d+)\.(\d+)\.(\d+)-halo-keymind-cascade-dev-/); + if (!version) return false; + const firstSupported = [1, 17, 1, 6]; + return version.slice(1).reduce(function (comparison, part, index) { + return comparison || Number(part) - firstSupported[index]; + }, 0) >= 0; + } + function installSteps(profile, kind) { const common = [ "Verify that the hardware name and every displayed variant match the physical board.", @@ -1099,6 +1110,16 @@ ], "Replace /dev/ttyACM0 with your radio's port, such as /dev/ttyACM1 or /dev/ttyUSB0. Use the primary USB data interface (00 when multiple interfaces appear), and close other apps using that port. At the radio prompt, run version and board to identify the node. Exit picocom with Ctrl+A, then Ctrl+X."); } if (!info) return sections; + if (companion && supportsRadioProfileCommands(profile)) { + section("Companion tempradio2: transmit on both", [ + { label: "Transmit on both", commands: ["set radio2.cross on"], + text: "After setting tempradio2 to rxtx, run this to send new messages on both radio and tempradio2. rxtx enables transmission on the second profile; cross on enables copying between the two profiles." }, + { label: "Default isolation", commands: ["set radio2.cross auto"], + text: "Keep ordinary local messages on radio and local LoRa OTA traffic on tempradio2. With auto, a permanent and a temporary profile remain isolated." }, + { label: "Check", commands: ["get tempradio2", "get radio2.cross", "get radio2.status"], + text: "Confirm tempradio2 is active in rxtx mode. TX=a,b reports primary and secondary transmit counts." }, + ], "radio2.cross is saved and stays set after tempradio2 expires or the node reboots. Turning it on also allows OTA traffic to cross profiles. RX-only mode still prevents transmission on the second profile. Use Default isolation to restore auto when needed."); + } if (full || infrastructure) { toggle("Device power saving", "set powersaving", "get powersaving", "Separate from LoRa RXPS and WiFi modem sleep. USB activity and active logging can keep the device awake."); diff --git a/docs/firmware_picker.md b/docs/firmware_picker.md index 75b9c579..bd2da683 100644 --- a/docs/firmware_picker.md +++ b/docs/firmware_picker.md @@ -319,6 +319,22 @@ run `reset` in your Linux shell, then reconnect with the command above. At the radio prompt, run `version` and `board` to identify the node. See the [Companion USB mode guide](terminal_chat_cli.md#companion-usb-mode). +## Companion tempradio2 transmit settings + +LoRa Companion results for 1.17.1.6 and newer include **Companion tempradio2: +transmit on both** under **Restore your settings after flashing**. After +configuring `tempradio2` in `rxtx` mode, choose **Transmit on both** to copy: + +```text +set radio2.cross on +``` + +This copies new messages to both `radio` and `tempradio2`. The setting is saved, +outlasts the temporary session and reboot, and also allows OTA traffic to cross +profiles. **Default isolation** copies `set radio2.cross auto`; **Check** shows +the temporary profile, crossing policy and per-profile transmit counters. +See the [two-profile setup guide](radio_profiles.md#companion-messages-on-both-profiles). + ## Installation methods | File | Use | diff --git a/docs/radio_profiles.md b/docs/radio_profiles.md index 6b0a20fc..678be823 100644 --- a/docs/radio_profiles.md +++ b/docs/radio_profiles.md @@ -62,6 +62,27 @@ New settings take effect after a short reply allowance. Temporary periods and schedules live in RAM and disappear on reboot. Timer expiry also uses monotonic time, so setting the clock backwards cannot extend a temporary session. +## Companion messages on both profiles + +To send ordinary Companion messages on both `radio` and an active `tempradio2`, +configure the temporary profile in `rxtx` mode and enable crossing: + +```text +set radio2.cross on +get tempradio2 +get radio2.cross +get radio2.status +``` + +`rxtx` permits transmission on the second profile; `radio2.cross on` copies new +messages between the two profiles. `TX=a,b` reports primary and secondary +transmit counts. Crossing also applies to OTA traffic. + +The crossing setting is saved and remains enabled after the temporary session +ends or the node reboots. Run `set radio2.cross auto` to restore the default +isolation between permanent and temporary profiles. The firmware picker's +Companion tempradio2 instructions include both choices and the status commands. + ## Choose whether traffic crosses between profiles ```text