diff --git a/_javascript/firmware_picker.js b/_javascript/firmware_picker.js index 3f77a540..1ae0791a 100644 --- a/_javascript/firmware_picker.js +++ b/_javascript/firmware_picker.js @@ -388,22 +388,9 @@ if (!profile || profile.role !== "companion" || profile.mode !== "full") { return false; } - if (profile.installKinds.includes("zip")) return true; - const target = String(profile.target || "").toLowerCase(); - if (/^heltec_v4(?:_2_v4_3|_3)?(?:_r8)?(?:_tft)?_companion_radio_full(?:_|$)/ - .test(target)) { - return true; - } - return [ - "lilygo_tbeam_1w_companion_radio_full", - "station_g2_companion_radio_full", - "station_g3_esp32_companion_radio_full", - "xiao_s3_wio_companion_radio_full", - "heltec_tracker_v2_companion_radio_full_femon", - "meshnology_w12_companion_radio_full", - "nibble_screen_connect_companion_radio_full_", - "nibble_zero_connect_companion_radio_full_", - ].includes(target); + // Native nRF52 Serial DFU packages use .zip. ESP32 Full Companion always + // has one USB TTY and never receives the dedicated-port capability. + return profile.installKinds.includes("zip"); } function isFullCompanion(profile) { @@ -487,11 +474,12 @@ return (profiles || []).map(function (profile) { if (!isFullCompanion(profile)) return profile; - // Every Full Companion has a runtime USB logging mode. Dual-CDC targets - // add an independent plaintext interface after reboot; single-TTY - // targets switch their existing port between framed and plaintext modes. + // Every Full Companion has a runtime USB logging mode. nRF52 adds an + // independent plaintext interface after reboot. Every ESP32 target + // switches its one TTY between framed and plaintext modes. profile.logging = "usb-runtime"; profile.loggingModes = ["none", "usb"]; + profile.dedicatedUsbLogging = false; if (isDualCdcFullCompanion(profile)) { profile.dedicatedUsbLogging = true; } @@ -830,7 +818,7 @@ ); } else { extra.push( - "Full Companion starts with USB logging off and Binary Companion on its single TTY. Enter the text terminal and use set usb.logging on for plaintext logs; that TTY still accepts set usb.logging off and automatically returns to Binary Companion after the reply." + "Full Companion starts in its ASCII terminal with USB logging off. Use set usb.logging on for plaintext logs; set usb.logging off stops those logs but stays in normal ASCII mode. Then send +++MESHCORE-TERM-STOP or let a Companion app send a valid framed probe to switch the TTY to Binary Companion." ); } } diff --git a/cli_build_matrix/index.html b/cli_build_matrix/index.html index 259f4431..07e2ee40 100644 --- a/cli_build_matrix/index.html +++ b/cli_build_matrix/index.html @@ -1553,12 +1553,12 @@ retain 50 because their MQTT discovery tables are constrained by internal DRAM.< Uses the matching non-MQTT target only when no WiFi MQTT sibling exists, with debug and packet logging enabled and the complete command surface supported by that role and hardware. Its persistent USB gate also covers output-off operation, avoiding a second FULL ESP-NOW image. -Dual-CDC Full Companion -nRF52 and qualified native-USB ESP32-S3 Full images use one physical USB connection. Fresh installs expose only interface 00; it starts as an ASCII terminal and automatically hands a complete < frame to framed Companion. The same interface also carries exclusive serial mOTA traffic. Enabling logging and rebooting adds interface 02 for plaintext logs. They also provide BLE and source-only LoRa OTA; ESP32 additionally provides WiFi. get/set usb.logging persistently controls whether the logging interface is present. +nRF52 dual-CDC Full Companion +Fresh installs expose only interface 00; it starts as an ASCII terminal and automatically hands a complete < frame to framed Companion. The same interface also carries exclusive serial mOTA traffic. Enabling logging and rebooting adds interface 02 for plaintext logs. BLE and source-only LoRa OTA remain available. get/set usb.logging persistently controls whether the logging interface is present. -Single-TTY Full Companion -ESP32 Full images without dual CDC start with the ASCII terminal on their one TTY and automatically hand a complete < frame to framed Companion. set usb.logging on switches it to an input-capable plaintext logging terminal; set usb.logging off replies and then restores framed Companion automatically. A saved logging-on setting starts directly in that logging terminal and disables automatic frame detection. BLE, WiFi, and source-only LoRa OTA remain available. +ESP32 single-TTY Full Companion +Every ESP32 Full image starts with the ASCII terminal on its one USB TTY and automatically hands a complete < frame to framed Companion. set usb.logging on switches that TTY to an input-capable plaintext logging terminal and makes framed Companion unavailable on USB; set usb.logging off stops logging but leaves the TTY in normal ASCII mode. The terminal stop token or a valid incoming framed probe then performs the ordinary switch to Binary Companion. A saved logging-on setting starts directly in that logging terminal and disables automatic frame detection. BLE, WiFi, and source-only LoRa OTA remain available. ESP32 Full uses Arduino-ESP32 2.x where supported; RC32 and ESP32-C6 keep their board-required Arduino 3.x platform but still expose only one TTY. no_external_sensors @@ -1587,10 +1587,11 @@ available from a canonical image:

separate USB, BLE, ordinary WiFi, hardware-serial, Ethernet Companion, and USB packet-logging Companion artifacts. It provides BLE and source-only LoRa OTA; ESP32 also provides ordinary WiFi. - Dual-CDC builds keep framed traffic on interface 00 and add logging on - interface 02 after a reboot. Single-TTY builds switch interface 00 into - an input-capable logging terminal and restore Binary Companion when that - terminal session ends. + nRF52 keeps framed traffic on interface 00 and can add logging on interface + 02 after a reboot. Every ESP32 Full build instead switches its one USB TTY + into an input-capable logging terminal. Turning logging off restores the + normal ASCII terminal; the usual stop token or a valid framed probe then + switches it to Binary Companion. Its LoRa OTA support is source-only: it can serve a host file to another node but has no staging store and cannot update itself over LoRa. Installing an ESP32 Full Companion may require one merged-image erase/flash @@ -1618,8 +1619,8 @@ available from a canonical image:

collapsed; they retain their exact storage, bootloader, role, and target identity contracts. Companion boards keep transport-specific canonical images only when no exact Full recipe has passed the combined flash/RAM qualification. -Dual CDC is not required: a qualified single-TTY Full image safely makes Binary -Companion and plaintext USB logging mutually exclusive.

+ESP32 deliberately uses one TTY: Binary Companion and plaintext USB logging +are mutually exclusive there. nRF52 retains its optional second CDC port.

Complete CLI policy

The compact ESP32 CLI has been removed. retry.preset is a checked invariant for every repeater and room-server artifact, not a FULL-only command. MQTT diff --git a/cli_command_availability/index.html b/cli_command_availability/index.html index 8499cb40..10109559 100644 --- a/cli_command_availability/index.html +++ b/cli_command_availability/index.html @@ -1895,7 +1895,7 @@ fix, no WiFi connection, an inactive bridge, or an nRF52 bootloader without Logging get/set usb.logging; unified FULL get/set logging.output -Ordinary safe-USB artifacts; CommonCLI USB gate is persistent; unified ESP32 FULL selects off/USB/WiFi/both; Full Companion uses either a reboot-controlled second CDC or an input-capable single-TTY logging terminal +Ordinary safe-USB artifacts; CommonCLI USB gate is persistent; unified ESP32 FULL selects off/USB/WiFi/both; nRF52 Full Companion can add a reboot-controlled second CDC Yes Yes No @@ -3242,7 +3242,7 @@ fix, no WiFi connection, an inactive bridge, or an nRF52 bootloader without Logging get/set usb.logging; unified FULL get/set logging.output -Ordinary safe-USB artifacts; CommonCLI USB gate is persistent; unified ESP32 FULL selects off/USB/WiFi/both; Full Companion uses either a reboot-controlled second CDC or an input-capable single-TTY logging terminal +Ordinary safe-USB artifacts; CommonCLI USB gate is persistent; unified ESP32 FULL selects off/USB/WiFi/both; every ESP32 Full Companion uses an input-capable single-TTY logging terminal with framed USB Companion disabled while logging Yes Yes No diff --git a/cli_commands/index.html b/cli_commands/index.html index 80dc4288..1652ae7e 100644 --- a/cli_commands/index.html +++ b/cli_commands/index.html @@ -5723,24 +5723,27 @@ Binary get/set parameter namespace. Open interface 00, +++MESHCORE-TERM-START, and then issue the command. Running meshcli ... get usb.logging directly can instead return Unknown var usb.logging because that is a different protocol operation.

-

Dual-CDC Full Companion instead defaults logging to off and enumerates only -USB interface 00, which carries Companion, terminal, and serial mOTA traffic. -Enabling logging adds interface 02, its dedicated plaintext logging port, on -the next boot. Disabling it removes interface 02 on the next boot. A command -without the optional reboot argument saves the choice and reports that a -reboot is required when the USB interface count must change. The exact +

nRF52 Full Companion defaults logging to off and enumerates only USB interface +00, which carries Companion, terminal, and serial mOTA traffic. Enabling +logging adds interface 02, its dedicated plaintext logging port, on the next +boot. Disabling it removes interface 02 on the next boot. A command without +the optional reboot argument saves the choice and reports that a reboot is +required when the USB interface count must change. The exact set usb.logging on reboot and set usb.logging off reboot forms save the -choice, send their reply, and reboot one second later only when needed. This -behavior includes nRF52 and dual-CDC native-USB ESP32-S3 Full images.

-

On a single-TTY ESP32 Full Companion, enter the USB text terminal and use +choice, send their reply, and reboot one second later only when needed.

+

On every ESP32 Full Companion, enter the USB text terminal and use set usb.logging on to turn that TTY into a logging-repeater-style plaintext -stream. It remains an input-capable CLI, so set usb.logging off works on the -same TTY and automatically restores Binary Companion after its reply. No -reboot is needed because the USB interface count does not change.

-

Turning USB logging off does not disable CLI replies. Dual-CDC builds keep -Companion frames active on interface 00; single-TTY builds resume frames when -their terminal session ends. This setting does not change the node-storage -capture controlled by log start and log stop.

+stream. Framed Binary Companion is unavailable on USB while logging is on. The +TTY remains an input-capable CLI, so set usb.logging off works on the same +TTY. After its reply, logging stops and the TTY remains in the normal ASCII +terminal, just as it does after a fresh Full installation. Send ++++MESHCORE-TERM-STOP, or let a Companion app send a valid framed probe, to +switch it to Binary Companion. No reboot is needed because the USB interface +count does not change.

+

Turning USB logging off does not disable CLI replies. nRF52 keeps Companion +frames active on interface 00; ESP32 resumes the ordinary ASCII/Binary +switcher after the logging terminal turns logging off. This setting does not +change the node-storage capture controlled by log start and log stop.

Unified ESP32 FULL builds add one saved selector for both output paths:

get logging.output
 set logging.output off
diff --git a/companion_radio_full/index.html b/companion_radio_full/index.html
index 7f309821..d781b3bb 100644
--- a/companion_radio_full/index.html
+++ b/companion_radio_full/index.html
@@ -515,10 +515,10 @@