Skip to content

DFU nRF Device Firmware Update times out #24

Closed

Description

@jeremeguenther

Operating System

Others

INFO_UF2.TXT

UF2 Bootloader 0.9.2-OTAFIX2.1-BP1.2 lib/nrfx (v2.0.0) lib/tinyusb (0.12.0-145-g9775e7691) lib/uf2 (remotes/origin/configupdate-9-gadbb8c7)
Model: WisBlock RAK4631 Board
Board-ID: WisBlock-RAK4631-Board
Date: Dec 22 2025
SoftDevice: S140 6.1.1

What happened ?

Just downloaded the OTAFIX and "upgraded" my RAK4631 mini board with it. I was using the (DFU) nRF Device Firmware Update app from Nordic to perform OTA updates on the stock bootloader and it has been working great.

As soon as I "upgraded" to the OTAFIX bootloader that app would no longer work, it timed out right after "Enabling bootloader". No setting combination I tried could get it to work, and the board would hang and have to be hard rebooted.

I was able to finally get an OTA upgrade to work using the far more complicated nRF Connect for Mobile app also from Nordic. In it I have to manually enter DFU mode before uploading the firmware. The app is far messier and more complicated.

It would be nice if whatever bug was introduced in OTAFIX to cause this timeout could be identified. It makes me very worried having this bootloader running on my boards knowing it has at least this one bug.

How to reproduce ?

Drag the .uf2 file onto the RAK4631 "drive"
Use MeshCore webflasher to erase and flash the board a few times as instructed.
Open the (DFU) nRF Device Firmware Update app
Follow the simple instructions with default settings in that app.

Debug Log

No response

Screenshots

No response

Activity

  1. jeremeguenther commented on Mar 24, 2026

    @jeremeguenther
    Author

    Never mind. Using the recommended settings it does work. Still feels a bit odd that the old bootloader worked, while the new bootloader requires specific settings to work. More details on that would be wonderful.

    Packet Receipt Notification (PRN): ON
    Number of packets: 30
    Reboot time: 0ms
    Scan timeout: 2000ms
    Request high MTU: ON for Android (See notes below) / Not available on iOS
    Disable resume: ON
    Prepare object delay: 0ms
    Force scanning: ON
    Keep bond: OFF
    External MCU DFU: OFF

  2. jeremeguenther commented on Mar 25, 2026

    @jeremeguenther
    Author

    After hours of messing around with this OTAFIX bootloader, my conclusion is that (while it might fix some very specific bricking issue), it is far less stable than the stock bootloader. My boards crash during flashing far more often when running OTAFIX, and when they crash it does not self recover, it requires a physical reset button double tap to bring the board back online.

  3. rdoeffinger commented on Oct 4, 2026

    @rdoeffinger

    I opened #62 since that is my experience as well, as far as I can tell it breaks OTA completely instead of fixing it.

  4. shalberd commented on Nov 7, 2026

    @shalberd

    agreed. It is something with gcc 12.3.1 (C Compile version update) in Meshtastic > 2.7.26.

    meshtastic/firmware#12220

    When using Meshtastic 2.8.2 and the OTAfix bootloader: Do not try to update firmware OTA using either Nordic DFU Firmware Upgrade App or Nordic NRF DFU App, it will not work. It will stay stuck in "Entering DFU Mode" with Nordic DFU Firmware Upgrade App and will maybe go through with Nordic NRF DFU App, but not reboot.

    First, upstream adafruit bootloader https://github.com/adafruit/Adafruit_nRF52_Bootloader

    needs to make changes similar to this done at Meshtastic, though I am not involved deep enough in the technical details

    meshtastic/Adafruit_nRF52_Arduino#8

    and then this project here, which is forked off adafruit-boatloader.

    When using Meshtastic: I recommend anyone to not use the Nordic DFU Firmware Upgrade App or Nordic NRF DFU App together with Meshtastic 2.8.x or any other software like Meshcore that uses libraries based on GCC 12.3.1.

    In Meshtastic, when going from 2.7.x to 2.8.x, it is necessary to do a full device erase anyways, meaning USB connection is required.
    Once in 2.8.2, just use the Meshtastic Android-App-integrated Firmware upgrade app, they have their own libraries for OTA BLE now in the meshtastic project and I can confirm it works. I am on oltaco/Adafruit_nRF52_Bootloader_OTAFIX 2.2 on a RAK 4631.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions