Skip to content

OTAmpy v4.7.0

Choose a tag to compare

@simonl65 simonl65 released this 11 Sep 20:27
· 32 commits to main since this release
Immutable release. Only release title and notes can be modified.

OTAmpy 4.7.0 — 2026-09-11

Major (breaking changes)

  • None.

Minor (functionality added in a backward compatible manner)

  • Added optional channel-mux mode for sharing one serial port between OTAmpy and other host/device traffic: outer frame protocol, ChannelCodec/ChannelSerial, otampy mux command,
    --mux flag, OTAMPY_MUX setting, and an otampy init --mux scaffold.
  • Added fail-safe, all-or-nothing update commits with a retain-previous journal, automatic sweep of orphaned .bck files, and restore.repair() run on every boot.
  • Added a trial-boot lifecycle: boots are counted with automatic rollback on repeated failure, plus otampy confirm / otampy state commands and a device-side ota.confirm() facade.
  • Added otampy rollback for a user-initiated revert to the previous firmware generation.
  • Added a boot-time recovery window so a stranded device can be reached over the radio after a failed or unpolled boot, via otampy upd --recover and otampy rollback --recover.
  • Replaced the old watchdog guidance with a heartbeat threaded through boot.run() and OTA.boot().

Patch (backward compatible bug fixes)

  • Fixed main.py to run recover() so a lost boot.py self-heals (F-06).
  • Fixed the orphan sweep so it no longer deletes retained .bck files (F-04).
  • Fixed the one-shot RTC helper so it is no longer retained or journaled (F-05).
  • Fixed post-reboot waits to use their own timeout instead of inheriting an unrelated one (F-11).
  • Fixed the boot-time recovery window so it is actually reachable in practice, including a two-tier window and boot marker (F-10, F-14).
  • Fixed the host-side recovery handshake to hold one port open and retry at stock timings (F-15).
  • Fixed --recover to skip the bytecode-shadow preflight, which doesn't apply during recovery (F-16).
  • Fixed otampy rollback --recover to refuse to run against an already-healthy device (F-17).
  • Fixed ChannelSerial so it no longer blocks on an empty serial port.
  • Fixed the CLI to ignore a malformed OTAMPY_MUX value instead of aborting every command.