Xenon bricked after Firmware update to v0.8.0-rc.26


I upated ten Xenons to the latest FW (v0.8.0-rc.26) yesterday. Nine went well and one got bricked.
After flashing it lit up briefly and then got dark. None of the on board LEDs light up if I power it up or press one of the buttons.

I own a J-Link and have Segger Studio installed. I still can read the memory using Segger Studio / J-Link. It looks like the bootloader is corrupt.

What is the correct procedure to bring it back to life?

I found the bootloader files here https://github.com/particle-iot/firmware/releases.
To what address do I have to burn the bootloader? 0xF4000?

Thanks in advance

Having trouble adding Xenons to mesh network

Yes, bootloader to 0xf4000.

If that doesn’t solve the problem, you also need to flash the softdevice. The link and instructions are here:



I had a similar problem when updating a boron last night. I was able to fix it by reflashing the bootloader and system firmware with openocd.

Bricked boron after using nrf sdk

I completely erased the Xenon and started from scratch (I used a J-Link and Segger Embedded Studio). Here’s what you need…

  1. Bootloader to 0xF4000 -> https://github.com/particle-iot/firmware/releases e.g. bootloader-0.8.0-rc.26-xenon.bin
  2. Softdevice to 0x00000 -> https://docs.particle.io/assets/files/s140_nrf52_6.0.0_softdevice.hex
  3. Firmware to 0x30000 -> https://github.com/particle-iot/firmware/releases e.g. hybrid-0.8.0-rc.26-xenon.bin

After flashing the above, it did not yet start. By comparing with the memory map of a healthy Xenon I found out that the following must be set too:

UICR User information configuration (see https://www.nordicsemi.com/DocLib/Content/Product_Spec/nRF52840/latest/uicr)
Addr = 0x10001014 -> Value = 0x000F4000 (NRFFW[n] Seems to be the start vector of the bootloader)
Addr = 0x10001200 -> Value = 0x00000012 (PSELRESET[n] Mapping of the nRESET function)
Addr = 0x10001204 -> Value = 0x00000012 (PSELRESET[n] Mapping of the nRESET function)

After that the Xenon started blinking (in blue) again and I could register it to my mesh…:wink:

@rickkas7: Could you please verify the above?

There’s a newer version of the nRF5 SDK (s140_nrf52_6.1.0_softdevice.hex) as the one you suggested.
You can find it at https://github.com/NordicSemiconductor/nRF5-SDK-for-Mesh/tree/master/bin/softdevice. I flashed it and it seems to work well…:wink:


If you completely erase your device (not recommended), you do need to set the bootloader address. If you have the nrf52-var.cfg file from the JTAG FAQ, there’s a macro for it:

openocd -f interface/cmsis-dap.cfg -c 'adapter_khz 1000; transport select swd' -f target/nrf52-var.cfg -c "init" -c "bld_addr 0x000F4000" -c "exit"

Program the softdevice, bootloader, system, and user firmware by SWD.

You’ll also need to reset the device keys. In DFU mode (blinking yellow):

particle keys server --protocol udp --host '$id.udp-mesh.particle.io'
particle keys doctor YOUR_DEVICE_ID


I can’t be sure if this is the exact version, but there was a regression in the (then) most recent nRF SDK that caused a delay in the release of rc.26 where Particle had to go back to a previous version in order to not introduce new issues instead of fixing known ones.

That’s why Particle also flushed that respective version rather than flashing it :wink:


@ScruffR: Hahaha, thanks for the info and the hint (fixed the typo)…:wink:
@rickkas7: Thanks for your help. Keys are up to date now too!