RAK4630 Cannot Flash Bootloader from RUI3 to Arduino

Hello,

I have an issue where I received the wrong RAK4630 modules with the RUI3 bootloader. The modules are on a custom board that has been working well for us on the Arduino BSP.

Using Tera Term 5, I can open the serial port and send AT commands. Confirmed the version.

I then send the AT+BOOT command. The connection disconnects and reconnects. I then close Tera Term and try flashing by following the steps in the guide.

This issue is seen:

It appears the module is not ready to be flashed. I then checked on Tera Term and after sending AT+BOOT then AT+VER=? I am still seeing “RUI_4.0.6_RAK4631” and not the bootloader version (I believe it should show the bootloader version)

I then tried pulling UART2_TX pin to GND but still the same issue.

As I mentioned this is a custom board in high quantity. With the Arduino BSP we can enter DFU and flash the board without issues. I know the RUI3 is completely different and I have tried multiple boards and all act this way. I assume the issue is with a strapping pin but cannot find any documentation.

Hopefully I’ve given enough info for someone to help.

Thanks

Welcome back @Zander

Your steps and commands are all correct, so it is strange that the device does not response.

After

I then send the AT+BOOT command. The connection disconnects and reconnects. I then close Tera Term and try flashing by following the steps in the guide.

can you connect Tera Term again and send another AT+BOOT command, just to test that the device is actually in the bootloader mode.

Thanks beegee,

I did try sending the command multiple times. Every time it would disconnect and reconnect (I assume it’s rebooting) but even after trying AT+BOOT 3+ times it wouldn’t flash, and then I would try AT+VER=? And it would still show “RUI_4.0.6_RAK4631”

We tried on two different computers and also sending the commands through putty to try eliminating possible edge cases.

I think it must be related to the motherboard the RAK4630 is connected to. I see UART1 is also used for AT commands. On our board those are GPIO and would normally be pulled high. Would that have an effect on going into flashing mode? I tried pulling them low but didn’t have an effect.

Other than that I can’t really think of anything. As I mentioned, the exact same board with the Arduino BSP bootloader works great and goes it DFU no problem with the RST pin.

3V3 and 5V rails look good. D+/D- look good too and it’s appearing as a COM port.

What I meant is, after you issued AT+Boot, reconnect the terminal and check if the RAK4631 is in boot mode.
On AT+BOOT it should response with “AT not support.” and on AT+VER=? it should report “RUI_BOOT_0.7_nRF52840”.
Then it is sure that it is in boot mode.

image

I understand, here’s a screenshot (note, this is from my Mac so it’s not Tera Term) but I’d seen the exact same with Tera Term as well

Very strange, it seems to reject to stay in boot loader mode.

Never saw that before.

Do you have any other means of flashing? Did you expose the SWD pins to use JLink or DAPLink to flash?

Seems you are on Linux or MacOS.
Did you try on a Windows machine?

If you are on Linux or MacOS, this “-p COM8” will not work:

You have to put there the correct portname, which seems to be /dev/cu.usbmodemC1913E8623481

Shoot, that’s not good. I was hoping I wouldn’t have to start messing with these boards.

The first post with screenshots was on windows and the most recent post is on Mac.

SWD isn’t exposed, but if you don’t have any other ideas then I can Jerry rig a JLink connection. But for the quantity of boards it’s not ideal

If you plan an update of your PCB in the future, expose the SWD pins. Always the safest way to flash something.

I have no solution at the moment, I am not sure why it wouldn’t enter boot mode.

Yes in hindsight exposing the SWD makes sense and was available on our earlier revisions of the PCB.

We almost exclusively flash Bluetooth OTA and never had an issue with enabling DFU to flash the initial .uf2 file before.

Hopefully I can find the issue…

Checked 10 more boards with the same results. I’m assuming the rest will be the same. Here’s a screenshot with multiple attempts to enter bootloader mode.

I also tried to flash one of the Arduino RUI3 example sketches and appears to be the same issue:

Note, the motherboard has been finalized for multiple batches now and these RAK4630 module that we ordered mid December should be the only difference.

Also, is RUI V4.0.6 the current version that would be shipped on the RAK4630? I see that 4.0.6 was released in August of 2023 which is roughly 2.5 years out of date. RUI 4.2.2 was released in August of 2025.

Not trying to split hairs, and I appreciate your quick responses.

@beegee I was reviewing the RUI3 release notes for V4.1.0 (the next version after 4.0.6) and in the “Fixed” category RUI-997 maybe referring to the issue we are experiencing. Would you have more details on RUI-997?

RUI-997 - [RAK4631] After the second development with Arduino, AT+BOOT has an exception and cannot update the firmware again.

Also, we successfully flash the latest RUI3 on one of the previous boards (the exact same motherboard as the current batch with the issues). Then entered bootloader mode and flash back to the Arduino BSP.

This eliminates the possibility of our motherboard causing a specific edge case for the RAK4630 running RUI3 to not enter bootloader mode.

I do not have details for the “not able to enter bootloader mode” issue and how it was fixed.

In general, it is recommended to always use the latest firmware. We have already advised our production to use the latest firmware and not the old RUI3 V4.0.6 anymore.