Skip to content

Releases: meshtastic/nRF52_Bootloader

OTAFIX 2.5

Choose a tag to compare

@jamesarich jamesarich released this 08 Sep 12:04
65b119f

Two new boards

Seeed SenseCAP MeshTracker X1 (MTX1_DFU). One user button and no usable RESET pin, so double-press reset cannot reach DFU. Hold the button through boot for 3 seconds to enter UF2 mode instead; a short press stays with the application. Eject the drive to leave DFU again. (#45)

MuziWorks Base Uno, Base Duo and Superbase (MUZI_DFU), keeping the original MuziWorks USB and UF2 identity. Tested on real Superbase hardware, bootloader install and a full BLE OTA update. (#38)

T1000-E

The button now works. BUTTON_PULL was pull-up while P0.06 is active high with an internal pull-down, so button_pressed() could never return true and the board had no button path into DFU at all. It now uses the same hold-to-enter scheme as the X1: hold through boot for 3 seconds for UF2 mode. (#48)

Ejecting the UF2 drive now leaves DFU and boots the application. Previously the eject was acknowledged and the host simply re-mounted the drive, and with no RESET button there was no way out short of copying a firmware file across. (#47)

Both confirmed on a T1000-E.

Note for boards using hold-to-enter DFU

The application sets DFU_MAGIC_SKIP before powering off, and waking from System OFF is a reset, so the first boot after a button power-off used to return before the hold was ever checked and silently swallow it. Boards defining BUTTON_DFU_HOLD now fall through while the button is down. (#45)

Build

tools/build_all.py works on macOS again, and parallel builds no longer fail intermittently writing -fstack-usage output. No bootloader behaviour change. (#49, #52)

Full history in changelog.md.

OTAFIX 2.4

Choose a tag to compare

@jamesarich jamesarich released this 06 Sep 14:17
012253c

Factory erase from the bootloader

Drop meshtastic_factory_erase.uf2 (attached below, one file for every board) onto the UF2 drive. The bootloader erases the application's saved data - config, keys, Bluetooth bonds, node database - and reboots straight back into UF2 mode for the firmware install. No erase sketch, no serial terminal, no SoftDevice 6.1.1 vs 7.3.0 choice. The installed firmware is left in place, so a device unplugged at that point boots factory-fresh.

INFO_UF2.TXT now carries a Factory-Erase: UF2 family 0x4D455348 line; flashers gate on it. Bootloaders before this release ignore the file silently. Verified on RAK4631. (#41)

CI

Build jobs run read-only; a single release job uploads every board's assets plus the erase file. (#42)

Full history in changelog.md.

0.9.2-OTAFIX2.3-BP1.6

Choose a tag to compare

@jamesarich jamesarich released this 21 Aug 15:41
9855791

Backport-patch release on OTAFIX 2.3. Assets per board are attached by CI (.zip for adafruit-nrfutil serial DFU, .hex for a debug probe, update-*.uf2 to update the bootloader from the UF2 drive).

Fixed

  • CURRENT.UF2 backups are no longer truncated after a DFU update (#34). bank_0_size means "bytes from the application start" to the CRC check and the serial/OTA DFU path, but the UF2 flash path counted every block written since the start of flash, and the dump window trusted whichever meaning it found. Net effect: a CURRENT.UF2 dump taken after a serial or BLE OTA update was silently short by the SoftDevice span, and restoring such a dump only worked while the missing tail happened to still be in flash. If you keep CURRENT.UF2 backups and have updated firmware over serial or BLE since taking them, re-take them on this release. Verified on RAK4631 in both directions.

Changed

  • lib/tinyusb digest bump (0.21.0-241-g7800876, #29) — exercised on hardware via UF2 mass-storage flashing, USB CDC and serial DFU on RAK4631.
  • Docs: the AGENTS.md GCC-15 note now reflects the backported -Warray-bounds fix (#31).

Full changelog: changelog.md

0.9.2-OTAFIX2.3-BP1.5

Choose a tag to compare

@jamesarich jamesarich released this 19 Aug 20:54
61c9ebe

Since 0.9.2-OTAFIX2.2-BP1.4

  • New boards: Heltec T096, Heltec T1, RAK 3401 (#24 — merged from oltaco's upstream, which calls this same board-support work "OTAFIX 2.3" too)
  • screen.c refactored to a display-size-agnostic layout (macro-based bar/text positions instead of hardcoded pixel offsets) — no behavior change for existing boards (#24)
  • ST7735 display controller support, alongside the existing ST7789 path (#24)
  • Five upstream Adafruit fixes backported, hardware-validated on a RAK4631 (#26):
    • Boot loop from a wrong REGOUT0 read
    • GCC 15 build errors (Makefile version filter, ghostfat.c)
    • -Werror=array-bounds false positive in bootloader_settings.c, now a scoped pragma instead of the previous repo-wide --param=min-pagesize=0 workaround
    • Clear CONTROL/PRIMASK/BASEPRI/FAULTMASK before jumping to the application — was rarely causing lockups
    • Wait for BLE notification-queue room instead of silently dropping DFU completion notifications
  • Fixed a latent out-of-bounds write in screen.c's print() (#24 review fix) — not reachable on any current board, but a real hazard for future board.h layouts
  • Docs: bank_0-zeroed BLE-OTA-wait behavior on serial DFU, refreshed board/check counts (#27, #28)

Hardware-testing note: Heltec T096, Heltec T1, and RAK 3401 are new to this fork and have not been hardware-validated here — per CONTRIBUTING.md's own bar, "a bootloader that compiles but was never flashed is not a contribution, it's a liability." None of the three are flagged in Meshtastic-Android's device_bootloader_ota_quirks.json as requiring a bootloader upgrade, so this is parity/completeness work, not something blocking anyone. Everything else in this release (RAK4631, and the five backported fixes) was tested on real RAK4631 hardware, including a full BLE OTA DFU round-trip.

0.9.2-OTAFIX2.2-BP1.4

Choose a tag to compare

@jamesarich jamesarich released this 19 Aug 13:16
18c3dc5

Meshtastic's first release cut from this fork (previous tags were inherited from oltaco/Adafruit_nRF52_Bootloader_OTAFIX).

Since 0.9.2-OTAFIX2.2-BP1.3

  • fix: bump lib/nrfx (pinned to v3.14.0) and lib/tinyusb together, fix the fallout (#19) — real-hardware tested on RAK4631
  • fix: size CURRENT.UF2 to the real installed app instead of the max region, fixing a dump-and-restore hang (#20) — real-hardware tested on RAK4631
  • docs: explain the boot chain, SoftDevice, and the three update paths (#21)
  • ci: GitHub Actions maintenance (actions/checkout v7, upload-artifact v7, action-gh-release v3) (#15-#18)

Board coverage is otherwise unchanged from BP1.3 (14 boards). NANO_G2_ULTRA and NOMADSTAR_METEOR_PRO are tracked in #4/#5 and not yet in this release.