SOS Assertion failure - how to reflash firmware

I have some BSom units where I get the Assertion failure SOS as soon there comes power on - it's not possible to put it into DFU mode, or any other modes.

How can I get these units to work again ?
I have the Particle Debugger

The instructions for using the Particle Debugger to restore the device via SWD/JTAG are here.

Basically you'll download the restore .hex file, then flash it. The easiest way is typically to follow the Particle Debugger with OpenOCD (via Particle Workbench) instructions.

For the B SoM, this is easiest to do in the Particle M.2 SoM eval board which has a 10-pin micro debugging connector. The SWD pads are on the bottom of the SoM and unless you populated your board with the pogo pins and a debugging connector like the eval board, it's not practical access SWD on you own base board.

Hi,
Thanks for the fast answer.
As far as I understand I'll have to get it in DFU mode first. But I can't get the devices to any other mode than the SOS assertion failure mode - can I somehow flash it in while in assertion failure mode?

I've feel I've tried everything to get the device to switch mode with no luck.

On Gen 3 devices (nRF52) you do not need to get the device into DFU mode as SWD is always running.

On STM32 and RTL872x you can usually do a reset halt sequence to stop the device from booting if you can't get into DFU.

Okay thanks.

I've tried to follow the instructions from the SWD/JTAG link.

Ran the following commands but get the same error:

PS C:\Users\nra.particle\toolchains\openocd\0.11.0-particle.4> bin\openocd -f share\openocd\scripts\interface\cmsis-dap.cfg -f share\openocd\scripts\target\nrf52-particle.cfg -c "adapter_khz 1000" -c "transport select swd" -c "init" -c "flash list" -c "exit"

xPack OpenOCD x86_64 Open On-Chip Debugger 0.11.0+dev (2022-03-25-17:32)

Licensed under GNU GPL v2

For bug reports, read

http://openocd.org/doc/doxygen/bugs.html

Info : auto-selecting first available session transport "swd". To override use 'transport select '.

DEPRECATED! use 'adapter speed' not 'adapter_khz'

DEPRECATED! use 'adapter speed' not 'adapter_khz'

adapter speed: 1000 kHz

Warn : Transport "swd" was already selected

swd

Info : CMSIS-DAP: SWD supported

Info : CMSIS-DAP: Atomic commands supported

Info : CMSIS-DAP: FW Version = 0254.2☺

Info : CMSIS-DAP: Serial# = 3104360231382b441239333437353533a5a5a5a597969908

Info : CMSIS-DAP: Interface Initialised (SWD)

Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1

Info : CMSIS-DAP: Interface ready

Info : clock speed 1000 kHz

Error: Error connecting DP: cannot read IDR

And:

PS C:\Users\nra.particle\toolchains\openocd\0.11.0-particle.4> bin\openocd -f share\openocd\scripts\interface\cmsis-dap.cfg -f share\openocd\scripts\target\nrf52-particle.cfg -c "adapter_khz 1000" -c "transport select swd" -c "init" -c "soft_reset_halt" -c "nrf5 mass_erase" -c "flash write_image \Users\nra\Downloads\b5som.hex" -c "reset" -c "exit"

xPack OpenOCD x86_64 Open On-Chip Debugger 0.11.0+dev (2022-03-25-17:32)

Licensed under GNU GPL v2

For bug reports, read

http://openocd.org/doc/doxygen/bugs.html

Info : auto-selecting first available session transport "swd". To override use 'transport select '.

DEPRECATED! use 'adapter speed' not 'adapter_khz'

DEPRECATED! use 'adapter speed' not 'adapter_khz'

adapter speed: 1000 kHz

Warn : Transport "swd" was already selected

swd

Info : CMSIS-DAP: SWD supported

Info : CMSIS-DAP: Atomic commands supported

Info : CMSIS-DAP: FW Version = 0254.2☺

Info : CMSIS-DAP: Serial# = 3104360231382b441239333437353533a5a5a5a597969908

Info : CMSIS-DAP: Interface Initialised (SWD)

Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1

Info : CMSIS-DAP: Interface ready

Info : clock speed 1000 kHz

Error: Error connecting DP: cannot read IDR

Any ideas or knowledge to how I can fix this error:

Error: Error connecting DP: cannot read IDR

Could you finally solve it? I have exactly the same situation with 3 argons, and haven't been able to recover them! Even though they seem to flash with the debugger, as soon as it finishes, starts blinking again.
The assertion error is an error without any useful info on the documentation.