Repository navigation
Releases: meshtastic/nRF52_Bootloader
Release list
OTAFIX 2.5
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
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
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.UF2backups are no longer truncated after a DFU update (#34).bank_0_sizemeans "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: aCURRENT.UF2dump 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 keepCURRENT.UF2backups 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/tinyusbdigest 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-boundsfix (#31).
Full changelog: changelog.md
0.9.2-OTAFIX2.3-BP1.5
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.crefactored 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-boundsfalse positive inbootloader_settings.c, now a scoped pragma instead of the previous repo-wide--param=min-pagesize=0workaround- 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'sprint()(#24 review fix) — not reachable on any current board, but a real hazard for futureboard.hlayouts - 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
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) andlib/tinyusbtogether, fix the fallout (#19) — real-hardware tested on RAK4631 - fix: size
CURRENT.UF2to 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.