DFU-Util fails for updating server keys on 1.4.0


I had my P1 targeting a local cloud as the server and I’m attempting to upgrade the server key.

The first thing i did was reinstall the latest version of Particle CLI for Windows.

The P1 was updated to v1.4.0 system firmware. I put the device in DFU-mode and ran the following commands:

particle config particle
particle keys server

After that I saw this error:

Make sure your device is in DFU mode (blinking yellow), and is connected to your computer.: Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Error during download get_status

I downgraded my system firmware to v0.7.0 and re-ran the commands. This time the hardware succeeded to set the server key.

One thing I also noticed that was weird is I could run particle flash tinker --usb with the v1.4.0 firmware and it would flash successfully.

If you upgraded from 0.7.0 to 1.4.0 you’ll also need to flash the bootloader.

If the device is in a normal state it can download the bootloader from the cloud, but if you have bad keys it won’t be able to do that.

In order to do keys operations the bootloader and Device OS must be in sync. The reason is that the keys code is too large to fit in the bootloader, so the bootloader (DFU mode) calls into system firmware.

Ok, I’m guessing that this has to do with building a monolithic debug app so the system firmware was in an odd state.

I flashed and updated my firmware with the particle cloud and it seems like the particle keys server command is now working.

I’ll debug further and figure out the root cause. I’ll update this post then.

Thanks again!