XIAO BLE (Sense) bootloader bricked, how to restore it?

Hi,

I think I managed to brick the bootloader by writing to the flash from my application (should have read this before: XIAO BLE Sense persistent data). :wink:

The XIAO BLE sense does not show up anymore as USB device, i. e. there is no serial port or mass storage device showing up, even when the bootloaded is activated via double-pressing the reset button.

How can I flash the original booloader firmware, and where can I find it? (And which hardware is needed for that?)

Best regards and thanks in advance.
Cornelius

2 Likes

Ok I think I can write the bootloader with OpenOCD using just a Raspberry PI over the SWD debug interface (via bottom pads TP1, TP2, TP3 and TP5 on the XIAO BLE).

Anyway, where can I find the original bootloader binary of the XIAO BLE sense?

Seeed_XIAO_nRF52840_Sense_bootloader-0.6.1_s140_7.3.0.hex.zip (197.2 KB)
This is the factory firmware of XIAO BLE.

4 Likes

Thanks a lot! I will try burn it with OpenOCD and report back here. :slight_smile:

I was able to unbrick my XIAO BLE sense with OpenOCD using a raspberry pi as SWD debugger / programmer.

I just set up a fresh Raspberry PI OS on a Raspberry PI Zero W, and installed openocd (“sudo apt install openocd”), wired the XIAO BLE sense to the Raspberry PI (see below), and executed the following command:

sudo openocd -f interface/raspberrypi-native.cfg -c “transport select swd” -f target/nrf52.cfg -c init -c “reset init” -c halt -c “nrf5 mass_erase” -c “program Seeed_XIAO_nRF52840_Sense_bootloader-0.6.1_s140_7.3.0.hex verify” -c reset -c exit

The connections between Raspberry PI and the XIAO ble sense were made as follows:

  • GPIO 11 (header pin number 23) – TP3 (SWDCLK)
  • GPIO 25 (header pin number 22) – TP5 (SWDIO)
  • any of the 3.3V pins from the Raspberry PI – 3.3V pin of the XIAO
  • any of the GND pins from the Raspberry PI – GND pin of the XIAO

image

Took only seconds (ok needed a few moments to set everything up) and worked like a charm.

Thanks a lot, and take care when fiddling around with the flash memory. :wink:

6 Likes

Thank you for posting and good job. Will this work for any bootloaders designed for nrf52840? Can I switch from XIAO BLE SENSE Adafruit version 1.0 to MBED version 2.6.1 and vice versa?

Just in case you did not try yet: Yes, I think that should work. You should be able to write any bootloader designed for the nrf52840 with that method.

1 Like

i wonder if this is what happened to my XIAO?

Hello, thanks for the solution, it worked for me too, but with a small change:
i had to add
set WORKAREASIZE 0
to /usr/share/openocd/scripts/target/nrf52.cfg
otherwise i got a lot of errors during programming.
I used it with a raspberry pi 4.

I have seen that programming with Arduino Ide (1,8.16) it is overwriting the bootloader each time.
Am I doing something wrong?

if you want the arduino bootloader, you can access it via the arduino installation
C:\Users<user name>\AppData\Local\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.1\bootloader\Seeed_XIAO_nRF52840_Sense

There is a HEX file there.
Burn it as described by Cornelius_Grimm

Hello everyone!

I have a XIAO nrf52840 (not sense one). I’ve just tried some solutions but they didn’t work for me, I guess. I have a Raspberry Pi 4 and during the programming some commands appearing on the terminal such as "Programming discontiuned at this adress " is it normal or not. Also, I’ve tried another solution for another nrf52840 device from Adafruit. You can reach from the link “CircuitPython nRF52840-dongle OpenOCD Pi Tutorial | Rototron”. However, it wasn’t solution for me too. Currently, when I plug in my XIAO to my computer, it shows itself as a storage device as like as resetted for a while but after that it cannot be recognized by computer and gives error about recogniton. Furthermore, after programming and resetting by terminal, it percieved external reset even i didn’t touch anything and terminal gave response like “Resetted by external reset” and it happened just one time. I don’t know what can i do to solve, do you have any idea about the problem.

Thank you.

I am getting this “external reset” issue after burning bootloader and therefore unable to debug from vscode. What might be causing this issue?

Edit: Issue fixed. I simply entered the DFU mode the usual way and flashed blink firmware using Arduino IDE. Now everything is back to normal!! I do not understand what happened entirely. Can someone explain?

Hello, DFU mode is a special mode of bootloader and at lower level flash than the normal bootloader, it can using the flash bin to update your normal bootloader which occurs at your power in with no more action. We think there may some vital file is broken at your bootloader so DFU can cover and make its feature well

1 Like

Hi. I’m trying to do the same with my Seeed_XIAO_nRF52840_Sense but when I try to execute this command I get "Unexpected command line argument: select ". I’m using pi zero 2 and the raspberry pi OS 5.4 64-bit, and I’m using openocd for the first time, can you help me please?

use jtag Jflash tool
https://github.com/Embeddronics-ltd/Flashing-Bootloader-Xiao-BlE

This helped a lot! Should become part of the wiki imo. The case of ‘what if I bricked the device up to the point where a double reset doesn’t work’ is not covered there.

The only thing that kept a connection to my Seeed Studio XIAO nRF52840 (Sense) was my RP debug probe. The board itself was connected to my PC, but when listing the connected USB devices, it did not show up.

The link posted by @Citric and the below command from @Cornelius_Grimm made it work.

sudo openocd -f interface/cmsis-dap.cfg -f target/nrf52.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program Seeed_XIAO_nRF52840_Sense_bootloader-0.6.1_s140_7.3.0.hex verify" -c reset -c exit

yes it is a little bit odd… the XIAO Expansion Board is helpful for this as well

True, the expansion board greatly helps. I started out with soldering some cables on the pads at the bottom of the board and hooking up the debug probe. But got myself an expansion board the same evening, way easier, and got some nifty extra features from it.

1 Like