How is OTA NCP loaded onto Argons when setup through the mobile app?

Hey guys,

I’m attempting to make a tool to take brand new Argons and complete the following steps:

  • Update them with particle usb update
  • Flash them with tinker to ensure they’re in a good starting state particle flash --usb tinker
  • Flash them with NCP OTA firmware with the command: particle flash --serial argon-ncp-firmware-0.0.5-ota.bin
  • Add wifi creds via particle serial wifi
  • Flash with our binary
  • Name and claim to particle account etc.

I’ve noticed that the serial flash of the OTA firmware takes around 45-60 seconds with a number of restarts, whereas when setting up Argons through the mobile app by scanning the barcode, the setup of the device seems to take considerably less time.

My questions are:

  1. Does the setup by mobile flash the OTA firmware onto the argon, and if it does, is this non-serial method possible to implement outside of the Particle IoT app?
  2. Would it make sense to include this OTA firmware on the devices by default so this extra step isn’t required when setting up new Argons, or is this only used by select customers?

I have searched through forum posts and not really found too much information on how the mobile app gets this firmware onto the Argons, but forgive me if I’ve there’s already been a post and I’ve missed it.

Thanks for your time,

The mobile app flashes the device by BLE. While you could reverse engineer the protocol as it’s implemented by open source on both the device and the mobile app, there’s little reason to do so.

By far the fastest way to flash a device is using the SWD/JTAG, especially if you use the Segger J/Link. You can program Device OS, boot loader, Soft Device, and user firmware in under 10 seconds that way.

The only caveat is that you can’t program the NCP firmware using SWD. You can use --serial mode for that. However, any Argon you get from the factory now will have the correct NCP firmware version and does not need to be upgraded at this time. It does not change very often.

The version of Device OS flashed by the mobile app is 1.1.0 and is the minimum. The version from the factory is newer than that currently, and there’s no reason to install that old of a version.

1 Like