Cover Full Meshtext board families in CI and record RF qualification

This commit is contained in:
mikecarper committed 2026-10-23 18:14:58 -07:00
1 parent 170c1761d0
commit 1f1d98eed8
2 files changed
+106 -2

No files matched your search

+38 -2
View File
@@ -29,13 +29,18 @@ jobs:
python3 -B scripts/check_nrf52_companion_reader.py .pio/build/RAK_4631_companion_radio_full/firmware.elf
python3 -B scripts/check_nrf52_companion_ota_workspace.py .pio/build/RAK_4631_companion_radio_full/firmware.elf
- name: Qualify direct-OTA-only XIAO Full Companion
# This configuration has no Meshtext/Ethernet application callbacks.
- name: Qualify XIAO Full Companion with Meshtext and direct OTA
run: >-
bash build.sh build-firmware Xiao_nrf52_companion_radio_full
--firmware-version v1.18.0.1-halo-keymind-cascade-dev
--radio-preset usa-cascade-fixed --profile cascade --require-ota
- name: Qualify T1000-E Full Companion with LR1110 Meshtext
run: >-
bash build.sh build-firmware t1000e_companion_radio_full
--firmware-version v1.18.0.1-halo-keymind-cascade-dev
--radio-preset usa-cascade-fixed --profile cascade --require-ota
- name: Qualify unified T114 Full Companion with automatic screen detection
run: >-
bash build.sh build-firmware Heltec_t114_companion_radio_full
@@ -162,6 +167,34 @@ jobs:
--firmware-version v1.18.0.1-halo-keymind-cascade-dev
--radio-preset usa-cascadia --profile cascade --auto
- name: Qualify Heltec V2 Full Companion with SX1276 Meshtext
run: >-
bash build.sh build-firmware Heltec_v2_companion_radio_full
--firmware-version v1.18.0.1-halo-keymind-cascade-dev
--radio-preset usa-cascade-fixed --profile cascade --require-ota
esp32-constrained-companion-smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment
- name: Qualify C3 Full Companion with all transports and Meshtext
run: >-
bash build.sh build-firmware Xiao_C3_companion_radio_full
--firmware-version v1.18.0.1-halo-keymind-cascade-dev
--radio-preset usa-cascade-fixed --profile cascade --require-ota
- name: Qualify C6 Full Companion with Meshtext
run: >-
bash build.sh build-firmware Xiao_C6_companion_radio_full_
--firmware-version v1.18.0.1-halo-keymind-cascade-dev
--radio-preset usa-cascade-fixed --profile cascade --require-ota
- name: Qualify Tracker V2 Full Companion with shared cold storage
run: >-
bash build.sh build-firmware heltec_tracker_v2_companion_radio_full_femon
--firmware-version v1.18.0.1-halo-keymind-cascade-dev
--radio-preset usa-cascade-fixed --profile cascade --require-ota
cross-platform-smoke:
runs-on: ubuntu-latest
steps:
@@ -584,6 +617,9 @@ jobs:
python3 -B test/test_identity_and_settings_recovery.py -v
python3 -B test/test_contact_cache.py -v
python3 -B test/test_one_key_dm_shared_queue.py -v
python3 -B test/test_one_key_dm_compact_held.py -v
python3 -B test/test_companion_shared_ota_capacity.py -v
python3 -B test/test_espnow_raw_initialization.py -v
- name: Verify Ethernet RF harness framing, TX lock, isolation and safe serial ownership
run: |
@@ -0,0 +1,68 @@
# Full Companion Meshtext defaults, 2026-10-23
The T1000-E image originally installed on MercerWoodMesh did not expose
`get mt.status`. Its LR1110 board was outside the former default-enable gate.
Commit `127d1bec2` enables Meshtext for supported ESP32/nRF52 Full Companions,
independently of board/chip-name macros. Explicit overrides, ESP-NOW primary
exclusion and actual modem/profile validation remain in force.
## Physical interoperability
The T1000-E and Heltec V4.3 OLED ran Full Companion `127d1bec2`. The independent
witness was XIAO S3 WIO running official Meshtastic `2.7.26.54e0d8d`, hardware
model 81, controlled using SDK 2.7.11. Its official radio pins match the WIO
carrier. No nRF52 bootloader or SoftDevice was replaced for this campaign.
Meshtext used US LongFast: 906.875 MHz, BW250, SF11, CR5, public AQ key,
16-symbol preamble. Both Companions retained a 917 MHz/BW62.5/SF7/CR5 primary.
No test transmissions used 910.525 MHz. Generic retries were off, MT hop limit
was 1, and the stock witness was CLIENT_MUTE with MQTT disabled.
| Check | Independently received |
| --- | --- |
| T1000-E to V4 and stock witness | 5/5 at each receiver |
| V4 to T1000-E and stock witness | 5/5 at each receiver |
| Paced stock witness to both Companions | 3/3 at each receiver |
| Primary MeshCore, T1000-E to V4, MT still active | 3/3 |
| Primary MeshCore, V4 to T1000-E, MT still active | 3/3 |
Each of the three paced stock messages increased V4 Meshtext RX by one and
completed TX by one with `mt.rebroadcast on`, without an originated V4 message.
T1000-E TX remained unchanged with rebroadcast off. This verifies forwarding
activity; it does not establish an isolated, exclusively one-hop route.
V4 was left with `mt.rebroadcast on`. The temporary primary test channel was
removed after its six messages.
The initial sweep used 14-second observation windows and reported missing
messages. One appeared in the next window. Follow-up sends, paced 45 seconds
apart, reached both receivers after 9.6, 15.2 and 20.6 seconds from the local
stock queue request. Short-window misses therefore are not a reliable RF-loss
measurement and are not counted as successful deliveries. Dual-profile RX
remains time-shared; these checks do not promise lossless simultaneous reception.
Private raw evidence and identity-bound flashing logs are retained under
`/home/mesh/hwtest/mt-longfast-20261023` and the matching Pi directory.
## Build and memory checks
The T1000-E, V4.3 Full and Heltec V2 Full images passed linking, executable
Meshtext capability checks and memory/flash budgets. At merged source
`170c1761d`, XIAO C3, C6, nRF52, S3 WIO, Heltec CT62 and Tracker V2 Full also
passed. Compile qualification is separate from physical board qualification.
The first C3 build failed the unchanged runtime heap guard. Constrained Full
recipes now borrow idle queue storage for explicit OTA, retain all 224 normal
queued frames and all 15 held private messages, and store only authenticated
message fields needed for later delivery. Constant initialization also removes
unused ESP-NOW primary workspace from LoRa-only images. No feature was disabled.
Final C3 linked headroom was 146000 bytes against the existing 145952-byte
requirement, which includes a 16384-byte transient margin.
Native coverage includes the board/include-order default matrix, linked-code
packaging and override contracts, real-crypto protocol interoperability,
224/128 queue ownership and wraparound, compact-message ACK/dedup/FIFO/retry
behavior, and ESP-NOW initialization/fragmentation under sanitizers. CI now
builds T1000-E and SX1276 Full plus constrained C3/C6/Tracker Full images.
LLCC68 still cannot use SF11 at BW250. Its manufacturer modulation limits
exclude LongFast; enabling software cannot add that hardware mode.