Are you using Particle Workbench and did you flash your firmware (and possibly Device OS) over USB?
If so, the problem is that Workbench does not upgrade all of the necessary components of Device OS. In this case, it’s probably the bootloader. The device is trying to get online to upgrade the bootloader OTA, but the device does not have Wi-Fi credentials so it’s going into blinking dark blue (listening mode).
See Local build and flash and scroll down and click to expand More about changing the Device OS version for how to solve this problem. The basic idea is to upgrade Device OS using Device Restore USB before flashing your firmware.
There are two bootloaders, bootloader and prebootloader-part1. The prebootloader-part1 does not change often, but could in the future.
Do not under any circumstances flash prebootloader-mbr. The device will never be able to boot again because it contains device-specific encryption keys for SecureBoot.
Be really careful about flashing the user binary by DFU directly. The address of the user binary moves based on the size of the binary, so it’s not a fixed address. The .bin file itself contains this address, or it could be calculated based on the file size and sector alignment.
we first dfu flash system-part1.bin and our application and then serial flash bootloader.bin and prebootloader-part1.bin?
Yes, that will work.
“Be really careful about flashing the user binary by DFU directly”
Flashing directly from Workbench, using particle flash --usb, or particle flash --serial from the Particle CLI will work properly.
The issue is if you are flashing directly using dfu-util in DFU mode, because the address you flash to changes based on the size of the binary. The other tools understand this and change the start address based on the address in the .bin file.