RAK3172 Evo Board "Device is not in boot mode"

Hello guys, I am trying to update the lastest firmware for RAK3172 EVB and when ı already make the connection, arduino ide still says “Device is not in boot mode”. Why is that? I did the connections. Also, when ı try to connect via UART with STM32 programmer, it connects. So i am in boot mode. Why is that problem now?

Hi @tortudereli ,

What is the reply if you send AT+VER=?

The boot mode of RUI3 is different on the internal UART bootloader of the STM32WL chip. The BOOT pin doesn’t need to be pulled up for the RUI3 boot mode to be activated.

Hi @carlrowan ,

I also have the same issue as tortudereli. After I send AT+VER=?, I got the response AT+VER=RUI_4.0.6_RAK3172-E.

Hi @carlrowan ,

I also have the same issue as tortudereli. When the BOOT0 pin is not pulled up, I am able to use AT command through UART2. After I send AT+VER=?, I got the response AT+VER=RUI_4.0.6_RAK3172-E.

If I try to upload application without pulling up the BOOT0 pin, I got the following output

Device is not in boot mode
Detecting baudrate.
Entering boot mode
Device is not in boot mode
Device do not enter boot mode

If I pull up the BOOT0 pin, AT command doesn’t work on UART2. When I try to upload the application, I got the following output

Device is not in boot mode
Detecting baudrate…
Detect baudrate fail, can not get the baudrate

I am able to build an application in STM32CUBE IDE and upload it with STM32CubeProgrammer. The bootload problem only happens with Arduino.

What’s the problem exactly?

Welcome to RAK forum @Hendriksong ,

I apologized missing your post 12days ago.

The BOOT0 pin is only needed if you are going to use the STM32CubeProgrammer. It access the UART Bootloader of the STM32WL chip inside RAK3172.

With regards to Arduino, just keep the BOOT0 pin floating or pull it to ground if you prefer. When using Arduino IDE, you are using RUI3 bootloader. No physical IO pin needs to be configured. When you upload an Arduino sketch, it will send a AT+BOOT to the chip and it will proceed to bootloader mode. You can manually do this as well by sending AT+BOOT to the module before uploading the code.

Hi @carlrowan ,

Thank you for your reply.

I have switched to the RAK3272S breakout board now. I use a USB to UART cable which connects a 3V3, a GND, the UART2_TX and the UART2_RX pin. I left the BOOT0 pin floating or pulled it to the ground.

Somehow I was able to enter the boot mode by sending the AT command AT+BOOT. I could also upload the Arduino sketch in this case. However, entering boot mode doesn’t succeed every time I sent the AT command. Quite often, I got a corrupted response like �]*E)*� instead of BOOT MODE and the device is not in boot mode.

Do you know how to fix this problem? I am only using the RAK3272S breakout board and I haven’t made any hardware configuration around it.

I am not sure what causes the corrupted response. There are many things that can possibly causes it.

  1. USB-UART chip ok?
  2. UART speed correct?
  3. Wiring connection stable?
  4. Is the environment noisy - lots RF and electrical noise?