How to unbrick a dead XIAO using ST-LINK and OpenOCD

Hello Pochin. The Hex file from the Ardui Zero that you flashed was it a random sketch or the Ardu Zero bootloader ?


@msfujino
failed to erase row
how to fix it ?
And is that means my chip is dead?
Thank you

Hi flightbear,
Please show me the XIAO_openocd.cfg you used.

I think your cfg file is fine. I tried various things in my environment, but same error did not reproduce.

The cause of the “NVM programming error” is described as follows when looking at “22.8.7. Status” in the SAMD21G18A datasheet.
“An invalid command and/or a bad keyword was/were written in the NVM Command register since this bit was last cleared.”

I’ve also read an article that changing “adapter_nsrst_delay” from 100 to 200 may work correctly. But I don’t know if it works.

I’m sorry I’m not an OpenOCD expert, so I don’t know any more.

Thank you msfujino
there are some problems with Arduino IDE working with XIAO
I will send back the chip to seeedstudio
Their engineers will test the chip and fix it
If I have any news I will remind you.

Hello,
I’ve followed the guide and flashed the official bootloader (from https://github.com/Seeed-Studio/ArduinoCore-samd/blob/master/bootloaders/XIAOM0/bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin), as well as the v3.13 bootloader from adafruit. The openocd command exits without errors.
In both cases the orange LED flashes after programming the XIAO, so it seems to do something, but the computer doesn’t recognize the board. I also tried to “reset” the board as per instructions from the wiki, but the result is the same (orange LED flashing).
Has anyone else had this problem?

Hi pata,

Does “after programming the XIAO” mean the bootloader flash? Or a sketch upload?

Does “the orange LED flashes” mean that the LED slowly brightens and slowly darkens? Or ON / OFF?

Does “the computer doesn’t recognize the board” mean that XIAO does not appear in Device Manager?

Hello and thanks for the quick reply :slight_smile:

  1. I haven’t really gotten to upload a sketch. I only tried flashing the bootloader with both “program … verify” (from this guide) and “flash write_image …” (from How to unbrick a dead xiao using raspberry pi [ GUIDE ][openocd]).
  2. The orange LED doesn’t turn completely off, as in a blink sketch. It brightens and darkens but it’s not as slow as when entering bootloader mode with the other XIAO I have. Actually it’s much quicker (maybe OSC malfunction?).
  3. The XIAO doesn’t appear in Device Manager.

When you flash the bootloader with ST-LINK, do you get the following message?
** Programming Started **
** Programming Finished **
** Verify Started **
** Verified OK **

Could you show me your screenshot?

Yes, apparently the programming is ok.

EDIT (since max replies reached):
I tried to “unbrick” the XIAO because none of my machines would recognize it anymore (as in not seen by Device Manager or lsusb).
It’s hard to say what sketch was uploaded before because I’ve been trying to unbrick it for a while now. But I believe that sketch shouldn’t be there anymore since I used command “at91samd chip-erase” a couple of times before (after that the orange LED is off).

Why did you have to flush the bootloader in the first place?
Does the last uploaded sketch have code to make the orange LED bright / dark?

Worked like charm!!!
Thank you so much. I recovered a Xiao (stoped working after a few days transmitting LoRaWan to ThethingsNetwork on battery- brown out??). But most of all it was pure joy when I saw the Xiao port again.

Thank you!

Hi, Pedotech
I’m glad I could help you.
You may also find the following link useful.

Hi I’ve followed everything so far and am now getting this error.

I can’t say for sure because our PC environment are different, but it sounds like there is a problem with the USB driver.
I suggest you look into the USB driver “Zadig”.

Thank you it worked!


Can someone help me ?

Hi PANOK,
I think the situation is exactly the same as post #32. It sounds like there is a problem with the USB driver. I suggest you look into the USB driver “Zadig”.

@msfujino Would you be able to give me a quick hand?

I’m getting the error:

I ended up soldering the cables directly to the pads and using a multimeter I ensured there is connection between the ST-link V2 and the microcontroller. I also swapped SWDIO with SWCLK just in case I got it wrong the first time around but still no luck.
I’m 100% sure the wiring is correct, I checked it a bunch of times and also rewired it from scratch a few times.

I was looking around and found this article (Programming RP2040 with ST-LINK - Electrical Engineering Stack Exchange) that explains how the ST-LINK V2 can’t connect to the Seeed XIAO RP2040. Someone said to do the update however I have no idea what that guide is talking about. I updated it to the latest version (V2.J37.S7) using the “STM32 ST-link” software.
Did you have to do some weird update or did it just work?
Am I missing something?
Any Idea on how I can fix it?

Thank you,
Andrea