diff --git a/docs/full_companion_features.md b/docs/full_companion_features.md index 3722d331..c249ae2c 100644 --- a/docs/full_companion_features.md +++ b/docs/full_companion_features.md @@ -163,6 +163,9 @@ Bluetooth DFU updates the Companion; the separate Bluetooth MOTA source service feeds packages to other mesh nodes. For OTAFIX installations, use the exact board/storage profile from -[OTAFIX 2.4.5](https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/0.11.0-OTAFIX2.4.5). -Its release notes cover the Bluetooth reconnect fix and upgrades from older -bootloaders, including the special UF2-drive precautions for version 2.4.3. +[OTAFIX 2.4.6](https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/0.11.0-OTAFIX2.4.6). +It includes the Bluetooth reconnect fix from 2.4.5. Its release notes cover +upgrades from older bootloaders, including the special UF2-drive precautions +for version 2.4.3. The new 64 KiB retained-RAM staging feature applies to +qualified internal-flash nRF52840 receivers; Full Companions continue to +serve host-supplied packages without needing that receiver storage layout. diff --git a/docs/releases/1.17.1.5.md b/docs/releases/1.17.1.5.md index f7975b86..ffbdee56 100644 --- a/docs/releases/1.17.1.5.md +++ b/docs/releases/1.17.1.5.md @@ -43,6 +43,17 @@ offline queue while retaining its MOTA and transport features. Since 1.17.1.4, this branch also includes USB session and contact-persistence fixes, automatic nRF52 ExtraFS recovery, improved Indicator setup/display handling, compressed MOTA transport, and measured ESP32 memory limits. +Qualified internal-flash nRF52840 receivers now reserve 64 KiB of retained +RAM to extend application MOTA staging beyond the available flash prefix. +This handoff requires the exact board's +[OTAFIX 2.4.6 bootloader](https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/tag/0.11.0-OTAFIX2.4.6). +Install that bootloader before relying on LoRa updates from these new hybrid +receiver images: they reject application containers larger than one flash +page when the installed bootloader lacks the retained-RAM capability. +QSPI/microSD roles and Full Companions retain their existing storage layouts. +An interrupted hybrid download must be fetched again after an application +restart or power cycle. See the [protocol](../ota_protocol.md) for the exact +admission and reset checks. ## Build using option 3 @@ -73,3 +84,13 @@ infrastructure. Those outputs do not belong in this OTA-required release. Use a separate output directory when changing the radio or settings profile. Use a fresh release output directory after changing the source revision or firmware version so packaging cannot mix old and new binaries. + +## Local release staging + +After the matrix completes successfully, `scripts/package_cascade_release.py` +groups the qualified images using the previous GitHub release naming. Each +group includes the firmware files, capability manifests, TSV/JSON inventory, +checksums, build notes, and Full Companion directions. The staging directory's +root `FIRMWARE-PICKER-1.17.1.5.html` opens the local downloads; the copies inside +each release group use the planned GitHub download URLs. Staging does not +push commits, create remote tags, or publish a GitHub release. diff --git a/scripts/package_cascade_release.py b/scripts/package_cascade_release.py index 6f0cea20..20454b67 100644 --- a/scripts/package_cascade_release.py +++ b/scripts/package_cascade_release.py @@ -161,6 +161,13 @@ def main(): summaries.append({**manifest, "files": [path.name for path in record["files"]]}) rows.append(f"
| Target | Profile | Self-update | Downloads |
|---|