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


#1

Hi,
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
#2

Yes, bootloader to 0xf4000.

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

https://docs.particle.io/support/particle-tools-faq/jtag/#openocd-telnet-commands-3rd-generation-


#3

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
#4

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:


#5

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

#6

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:


#7

@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!