-
Defaults to OTA DFU mode
When no valid application is present, the bootloader defaults to OTA DFU mode.
This prevents devices from becoming stuck in UF2 mode after a failed OTA update. -
High-MTU BLE support
Enables larger DFU packets for improved throughput when supported by the client.
The Android DFU app anddfu.pysupport large packets; the iOS DFU app is limited to 20-byte packets. -
Lazy flash erase
Flash pages are erased on demand during the transfer instead of upfront, significantly reducing the delay during DFU initialisation before the transfer begins. -
Small-packet accumulation
Packets smaller than 64 bytes are combined at the transport layer and written to flash in chunks of up to 240 bytes.
This improves OTA performance from iOS devices and other small-packet DFU hosts by reducing flash write overhead. -
Automatic application boot after OTA over USB
When connected to a USB host, devices now automatically reboot into the application after a successful OTA update, instead of requiring a manual reset. -
Unique BLE advertising names per board
In OTA DFU mode, devices advertise using a board-specific name instead of the genericAdaDFU:- Heltec T114 →
T114_DFU - ProMicro NRF52840 →
PROM_DFU - T1000e →
T1KE_DFU - WioTracker L1 →
WTL1_DFU - RAK 4631 →
4631_DFU - RAK WisMesh Tag →
RTAG_DFU - XIAO NRF52 BLE / SENSE →
XIAO_DFU
- Heltec T114 →
- Heltec Automation Mesh Node T114 / HT-nRF5262
- Nologo ProMicro NRF52840 (aka SuperMini NRF52840)
- Seeed Studio SenseCAP Card Tracker T1000-E
- Seeed Studio Wio Tracker L1
- Seeed Studio XIAO nRF52840 BLE (and Seeed SenseCAP Solar Node)
- Seeed Studio XIAO nRF52840 BLE SENSE
- RAK 4631 (See note)
- RAK WisMesh Tag (new 28/11/2025)
Any board already supported by the Adafruit nRF52 bootloader can be added.
If there is another nRF52840-based board you are interested in, please raise an issue.
IMPORTANT: If you are running a MeshCore companion firmware or Ripple firmware on your device you will need to run an erase after flashing a new bootloader. Use the MeshCore web flasher to do the erase, it will guide you to the correct erase firmware for your device. Other erase firmwares will not work, they will not erase the ExtraFS area.
The recommended way to install the bootloader is using the UF2 file.
Download the UF2 file for your board (they can be found in the releases with filenames beginning with update-), enter UF2 mode (usually by double pressing the reset button within 0.5s) and copy the UF2 file across.
If you have somehow managed to accidentally flash an incorrect bootloader to your device you will likely require flashing a full bootloader and SoftDevice zip package using adafruit-nrfutil
If the device does not show up on your computer after flashing the bootloader or performing an OTA update, it may be waiting in OTA DFU mode.
In OTAFIX 2.0, OTA DFU is the default state when no valid application is present.
In this mode:
- No UF2 drive is exposed
- No serial port is available
- The device is waiting for an OTA firmware update over BLE
What to do:
- Perform an OTA update using a supported DFU app, or
- Explicitly request UF2/serial mode using double-reset.
This behaviour is intentional and prevents devices from getting stuck in UF2 mode after failed OTA updates.
If an OTA update consistently fails early with Error: Operation Failed, this is often caused by BLE stack incompatibilities when Request High MTU is enabled.
What to try:
- Experiment with different PRN settings. Try 12, 8, 1, or even off altogether!
- Disable Request High MTU in your DFU app
While high MTU significantly improves performance on supported devices, it is not required for a successful OTA update.
To perform the OTA update you can use nRF Device Firmware Update
(Android / iOS)
or nRF Connect
(Android / iOS).
My preference is the nRF Device Firmware Update app.
For OTAFIX 2.0, the following settings are recommended (these may change — feel free to experiment and report your findings):
|
Packet Receipt Notification (PRN): ON Notes:
|
Recommended settings for versions prior to 2.0 can be found here.
IMPORTANT:
On older versions of the bootloader, performing an OTA update while the device was connected to a computer USB host would complete successfully but would not automatically boot into the new application firmware, requiring a manual reset.
This issue is fixed in OTAFIX 2.0.
First you will need to login to the repeater and issue the start ota CLI command.
Next, open the nRF Device Firmware Update app, select the appropriate MeshCore firmware zip file for your device, select your device (it will be advertised as ProMicro_OTA / RAK4631_OTA, etc), and press start.
Although it's not necessary, if you find this useful please consider donating to support my work!
This version of the RAK4631 bootloader is based on a much newer version (0.9.2) of the Adafruit nRF52 bootloader than what RAK Wireless uses on their official bootloader (0.6.2-11).
I haven't looked to see what changes (if any) that RAK made to the Adafruit bootloader, so I'm not sure if there's any difference but I have tested this bootloader and I haven't found any problems thus far. If you would rather use the original RAK bootloader but with these patches included you can find that here.