RAK 4631 over the air update

I have tried to set up over the air update for RAK 5005 and 4631using:

It appears to work but then stops at 100% and never completes. The green light is fast-flashing and the blue led is fading in and out.

I wonder if I need a specific bootloader?
How do I determine which one I have?
And if it is wrong how do I replace it?


I heard about a change in nRF Connect.
Can you try older version of nRF Connect or try my WisBlock ToolBox

Last change in the RAK4631 bootloader was long time ago, I guess you have the latest one already.

Double push reset button, in new opened drive open the file INFO_UF2.TXT

The latest bootloader is from Dec 1st 2021:

UF2 Bootloader 0.4.2 lib/nrfx (v2.0.0) lib/tinyusb (0.10.1-293-gaf8e5a90) lib/uf2 (remotes/origin/configupdate-9-gadbb8c7)
Model: WisBlock RAK4631 Board
Board-ID: WisBlock-RAK4631-Board
Date: Dec 1 2021
SoftDevice: S140 6.1.1

Hi Bernd,
Thanks for the reply.
I am using the standalone DFU app.
It didn’t work on Android (as I reported above).
I found there is also a version for IOS, which I downloaded to my iPad.
That works.
My only concern is that if the update fails the device has to be reloaded over USB.


There is always a risk when you update through BLE, because the flash organization is single bank. That means as soon as you start the DFU, the existing firmware is erased and it starts to write the new firmware. If there is any problem during the update, the device ends up without firmware.

The only option would be to use a custom bootloader that supports dual bank flash organization. Then the new firmware would be written in the memory bank that is not in use and in case the update fails the nRF52 would continue the old firmware.

But our (Adafruits) bootloader does not support dual bank.

I guessed that was the case. I use the ‘two bank’ mechanism on our Linux systems. There is a single atomic update on the boot sector to switch load sets- and you can always go back if you need to.
I assume the FUOTA supporting devices use the 2-bank mechanism?


This is something I’ve posted about a couple times. Any plans to update the bootloader to fix the issue and restore compatibility with latest versions of nRF Connect/DFU apps?

At the moment none of our modules support FUOTA, so we do not have the 2-bank implementation. Specially on MCU with small flash, like the RAK3172, the 2-bank implementation is not possible, there is not enough Flash available.

No, we don’t have plans to update the bootloader at the moment.

The bootloader is open source ==> WisBlock/bootloader/RAK4630 at master · RAKWireless/WisBlock · GitHub

Looking forward to merge your pull-request.

Submitted! :slight_smile:

Thanks @beegee

Thanks. Will check it.

@beegee Submitted this last week, appreciate if you could take a look when you get a chance. Thanks!

Checked when you submitted, looks ok.
But I have no free resources to build a test version.

Anyone here who can test a new bootloader with iOS, please contact me.
I tested on Android and it seems to work now.

I can test it.
Where do I find it?


I sent you a PM

I’ll try and test it tomorrow.


Alan Ward
07508 935833

Hi Bernd

I tested it. It failed, unfortunately.

The 2 steps ‘Bootloader enabled’ and ‘DFU initialized’ worked OK.

The third step ‘Firmware upload’ started, but failed almost instantly.


Thanks for trying.
Two other testers on iOS found that you have to change the PRN settings on iOS:
a) enable PRN
b) set the number of packets to something like 10 or less

I don’t understand the reference to PRN settings and it doesn’t appear if I search for it?

On Android nRF Connect
Menu bar on left ==> Settings ==> nRF5 DFU Options