Unable to perform firmware recovery on RAK11720

I am following the guide: RAK11720 WisDuo LPWAN+BLE Module Quick Start Guide | Documentation Center

I connected BOOT to VDD and connected GND to RST briefly.
After selecting Ambiq SPL as programmer and clicking to burn bootloader, I get this error

Connecting with Corvette over serial port /dev/cu.usbserial-210...
RESET RAK11720 BOARD!!!
Sending Hello.
Received response for Hello
Received Unknown Message
msgType =  0x7720
Length =  0x7469
['0x54', '0x65', '0x73', '0x74', '0x20', '0x77', '0x69', '0x74', '0x68', '0x20', '0x48', '0x49', '0x47', '0x48', '0x20', '0x61', '0x6e', '0x64', '0x20', '0x4c', '0x4f', '0x57', '0xd', '0xa', '0x53', '0x65', '0x74', '0x74', '0x69', '0x6e', '0x67', '0x20', '0x74', '0x6f', '0x20', '0x48', '0x49', '0x47', '0x48', '0x2c', '0x20', '0x61', '0x6e', '0x64', '0x20', '0x77', '0x61', '0x69', '0x74', '0x69', '0x6e', '0x67', '0x20', '0x35', '0x20', '0x73', '0x65', '0x63', '0x6f', '0x6e', '0x64', '0x73', '0xd', '0xa', '0x53', '0x65', '0x74', '0x74', '0x69', '0x6e', '0x67', '0x20', '0x74', '0x6f', '0x20', '0x4c', '0x4f', '0x57', '0x2c', '0x20', '0x61', '0x6e', '0x64', '0x20', '0x77', '0x61', '0x69', '0x74']
!!!Wired Upgrade Unsuccessful!!!....Terminating the script
Traceback (most recent call last):
  File "uart_wired_update.py", line 353, in <module>
  File "uart_wired_update.py", line 42, in main
  File "uart_wired_update.py", line 185, in connect_device
NameError: name 'exit' is not defined
[13286] Failed to execute script 'uart_wired_update' due to unhandled exception!
Failed to burn bootloader: uploading error: exit status 1

I am using Arduino IDE 2.3.3 on a Macbook with MacOS Sonoma 14.7

Looking at the error message it looks like something wrong in the uart_wired_update.py script, but I cannot find this file to look into it.

I did eventually find it here:

Seems its using exit() when it should be sys.exit().
But this error comes when the flashing has already failed, as I now understand it failed due to “Received Unknown Message”

At the point where the log says RESET RAK11720 BOARD!!!, did you hard reset the module?

Ok this was embarrassing.
I was sitting there with a pin to RST waiting to touch it to GND, but I think I expected the RESET RAK11720 BOARD to be printed and then nothing else until I did the reset.
So when the text just continued I missed the message. Even when pasting it here.
Sorry! I will go back and do it right now.

Many apologies!

I re-did it now.

I tried in two different ways

  1. When the “RESET RAK11720 BOARD!!” appears I link GND and RESET momentarily.
    The result is the same error as before

  2. When the “RESET RAK11720 BOARD!!” appears I link GND and RESET until something changes, as the documentation writes " 4. When the initiation of uploading starts, you can now release the reset pin connection to GND and wait until the process is finished."
    But as long as I hold RESET to GND the “Sending Hello.” is displayed and nothing else. If I just keep it to GND eventually I get this error

Connecting with Corvette over serial port /dev/cu.usbserial-210...
RESET RAK11720 BOARD!!!
Sending Hello.
No response for command 0x00000000
Traceback (most recent call last):
  File "uart_wired_update.py", line 353, in <module>
  File "uart_wired_update.py", line 42, in main
  File "uart_wired_update.py", line 62, in connect_device
  File "uart_wired_update.py", line 252, in send_command
__main__.NoResponseError
[27792] Failed to execute script 'uart_wired_update' due to unhandled exception!
Failed to burn bootloader: uploading error: exit status 1

Not sure what I am missing.
To add more details:

I have connected the BOOT pin with the VDD pin on the RAK 19003 board (soldered on some headers to properly connect to them)
Then did a reset by connecting the RESET and GND pins for a short while.

Then I did the settings in Arduino IDE and clicked burn bootloader.
The “Burning botloader” prompts appears, and as soon as it says to Reset the RAK, I touch the RESET to GND again

I also tried reset with the button, pressing it shortly and holding it in.

Is there some way to confirm that the VDD to BOOT connection and then doing a reset made it go into recovery mode?

Hmm actually, I opened the serial console now (should have done that sooner) and I can see my program running, even when the VDD and BOOT are connected…

When VDD and boot are not connected, BOOT is at 1.3V
When they are connected, they are at 3.3V
But still doing reset while VDD and BOOT are connected will just reboot the board the the program will start to run again.

I ended up re-flashing the firmware with the RAKDAP. Still don’t know why the recovery procedure didn’t work however.