From 901a8c4cd551f1cbbe36a21cfd12e01f142abd3d Mon Sep 17 00:00:00 2001 From: mikecarper Date: Fri, 23 Oct 2026 10:52:29 -0700 Subject: [PATCH] Record saved radio controls and physical SPI validation --- ...her_board_radio2_fast_switch_2026-10-23.md | 39 ++++- ...switch_saved_controls_2026-10-23.safe.json | 140 ++++++++++++++++++ 2 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 docs/test-results/radio_switch_saved_controls_2026-10-23.safe.json diff --git a/docs/test-results/other_board_radio2_fast_switch_2026-10-23.md b/docs/test-results/other_board_radio2_fast_switch_2026-10-23.md index 41bad20cd..6246173e9 100644 --- a/docs/test-results/other_board_radio2_fast_switch_2026-10-23.md +++ b/docs/test-results/other_board_radio2_fast_switch_2026-10-23.md @@ -222,7 +222,42 @@ hardware receipts above remain bound to their explicitly recorded images. - Investigate the unexplained pretrial radio-driver recovery attempts. - Audit controller ownership before extending buffered SPI to RAK4631 or T096. -No production-default promotion, all-board release qualification or CPU-sleep -qualification is implied by the completed subsets. The machine-readable +At this checkpoint, production-default promotion, all-board release +qualification and CPU-sleep qualification remained open. The machine-readable [sanitized results](other_board_radio2_fast_switch_2026-10-23.safe.json) retain separate delivery, speed, compatibility and build states. + +## Saved controls follow-up + +Code `4c0f2acf` adds saved `radio.fast` controls across the shared CLI roles. +Supported features default on, including boards awaiting physical testing. +Individual controls cover SPI speed, buffered transfers, batched modulation, +warm receive ownership, FS, packet, IQ and modem reuse. Plain SX1262 board +transports now default to 8 MHz byte transfers. Compiled buffered transports +can select byte transfers without moving their SPI controller. Indicator keeps +its existing transport and compile-time exclusions. + +The wired RAK3401 passed 19 control cases and two software-reboot persistence +cases on the final Full repeater. Twenty-one read-only SWD samples confirmed +the SPIM2 frequency register at 2, 4 and 8 MHz. Both profiles continued +switching, core errors stayed zero, and no new radio-watchdog attempts were +observed. Its original settings and gateway service were restored. The +application update preserved its bootloader. These checks cover configuration, +startup persistence and switching liveness; packet delivery, BLE, CPU sleep and +the earlier XIAO loss remain separate qualifications. + +Sequential builds passed for V4 Full Companion, RAK4631 Full Companion, +RAK3401 Full and Reduced OTA repeaters, and the standard T1000 BLE Companion. +The RAK4631 application including EndF is 711,400 of 712,704 bytes, leaving +1,304 bytes. Runtime RAM available is 81,140 bytes against 72,528 required. + +To retain Full features, the offline Reader now uses a word dictionary before +DEFLATE. All 879 verses retain their exact wording; its pinned source and 4 KiB +scratch capacity are unchanged. Data and all dictionary/index tables total +33,399 bytes, saving 5,086 bytes. Corpus, malformed-token, C++11 compatibility, +sanitizer and ARM stack checks passed. The merged Meshtext retry-limit and +beacon tests also passed. + +The [saved-control results](radio_switch_saved_controls_2026-10-23.safe.json) +record the build sizes and physical test scope. Command details are in +[Saved switching controls](../radio_profiles.md#saved-switching-controls). diff --git a/docs/test-results/radio_switch_saved_controls_2026-10-23.safe.json b/docs/test-results/radio_switch_saved_controls_2026-10-23.safe.json new file mode 100644 index 000000000..5e5d2696f --- /dev/null +++ b/docs/test-results/radio_switch_saved_controls_2026-10-23.safe.json @@ -0,0 +1,140 @@ +{ + "schema_version": 1, + "source": "4c0f2acf64f4059077477d024756819d914befd7", + "settings": { + "saved": true, + "load_before_radio_initialization": true, + "supported_features_default_on": true, + "features": [ + "warm", + "fs", + "packet", + "iq", + "modem", + "batch", + "buffer" + ], + "spi_mhz_choices": [ + 0, + 2, + 4, + 8, + 16 + ], + "spi_zero_means": "board default", + "unsupported_controls_rejected": true, + "radio_busy_or_failed_save_preserves_policy": true, + "remote_LoRa_mutations_rejected": true, + "timing_test_restarts_after_change": true + }, + "hardware": { + "board": "RAK3401", + "role": "Full repeater", + "source": "4c0f2acf64f4059077477d024756819d914befd7", + "passed": true, + "independent_cases": 19, + "software_reboot_persistence_cases": 2, + "physical_SPI_register_checks": 22, + "physical_SPI_mhz": [ + 2, + 4, + 8 + ], + "core_errors_after": 0, + "new_radio_watchdog_attempts": 0, + "settings_restored": true, + "gateway_service_restored": true, + "application_only_update": true, + "bootloader_written": false, + "radio2_switching_liveness_passed": true, + "intentional_test_RF_packets": 0, + "packet_delivery_qualification": false, + "BLE_qualification": false, + "CPU_sleep_qualification": false, + "private_evidence_sha256": "4760f9c0789f21a01fbdbabf4eebb088a5a0898f7cedc74a6718a6966ce0c8cb" + }, + "builds": [ + { + "target": "RAK_3401_repeater_unified_lora_ota-full-ota", + "source": "4c0f2acf64f4059077477d024756819d914befd7", + "application_bytes": 635852, + "application_limit_bytes": 815104, + "flash_margin_bytes": 179252, + "application_sha256": "84a9ec062c74086b0c0d423199d96e884e436083ad0357ffaed4fe2c65fd77c2", + "runtime_ram_available_bytes": 78292, + "runtime_ram_required_bytes": 74176, + "memory_passed": true, + "capabilities_passed": true + }, + { + "target": "RAK_3401_repeater_unified_lora_ota-reduced-ota", + "source": "4c0f2acf64f4059077477d024756819d914befd7", + "application_bytes": 583532, + "application_limit_bytes": 815104, + "flash_margin_bytes": 231572, + "application_sha256": "56b28440999b9ce3296919908a4b20c9f169ab18f21558e35b7b91d112f54260", + "runtime_ram_available_bytes": 81280, + "runtime_ram_required_bytes": 74176, + "memory_passed": true, + "capabilities_passed": true + }, + { + "target": "RAK_4631_companion_radio_full", + "source": "4c0f2acf64f4059077477d024756819d914befd7", + "application_bytes": 711400, + "application_limit_bytes": 712704, + "flash_margin_bytes": 1304, + "application_sha256": "34b61b5a6083e7a47b377188be8db182a5e52db0208f43eba63668e13f5677cb", + "runtime_ram_available_bytes": 81140, + "runtime_ram_required_bytes": 72528, + "memory_passed": true, + "capabilities_passed": true + }, + { + "target": "t1000e_companion_radio_ble-ota", + "source": "4c0f2acf64f4059077477d024756819d914befd7", + "application_bytes": 474580, + "application_limit_bytes": 708608, + "flash_margin_bytes": 234028, + "application_sha256": "4129724bc2300bed9784724495f965a2e152223f0a56a2369e2bae8eb19cd261", + "runtime_ram_available_bytes": 79524, + "runtime_ram_required_bytes": 44864, + "memory_passed": true, + "capabilities_passed": true + }, + { + "target": "heltec_v4_2_v4_3_companion_radio_full_femon", + "source": "4c0f2acf64f4059077477d024756819d914befd7", + "application_bytes": 2564968, + "application_limit_bytes": 6553600, + "flash_margin_bytes": 3988632, + "application_sha256": "23a1f54745f27c7be30ca748ee68c2289dd0f74fe4afcef4acc6d4781cb35693", + "runtime_ram_available_bytes": 227768, + "runtime_ram_required_bytes": 194336, + "memory_passed": true, + "capabilities_passed": true + } + ], + "reader": { + "verse_count": 879, + "all_verses_unchanged": true, + "scratch_bytes": 4096, + "new_static_data_bytes": 33399, + "old_static_data_bytes": 38485, + "static_data_savings_bytes": 5086, + "terminal_ARM_local_stack_bytes": 6264, + "screen_ARM_local_stack_bytes": 6424, + "additional_caller_reserve_bytes": 1536, + "loop_stack_bytes": 8192, + "heap_added": false + }, + "validation": [ + "Saved CLI and five-role early startup fixtures", + "Driver feature masks and ordinary modulation fallback", + "SPI clock/buffer HAL fixtures and board construction contracts", + "Busy/RX-failure/save-failure transaction tests with sanitizers", + "Reader corpus, corruption and ARM stack fixtures", + "Merged Meshtext and beacon dispatcher regressions", + "Radio scan, rollback, timing, Ethernet, diagnostics and regulator regressions" + ] +}