Hi,
We are looking for a way to downgrade our apps OTA.
Currently, the only way we have found is by "lying" on package creation (ie- to downgrade fw3 to fw2, package fw2 as "4.0.0" via nrfutil).
When reading about this, I have found the following flag in the secure bootloader example's sdk_config:
// <i> Whether to check the incoming version against the version of the existing app and/or
// <i> the incoming SoftDevice requirements against the existing SoftDevice.
// <i> This applies to application updates, and possibly to SoftDevice updates.
// <i> Disabling this causes the checks to always ignore the incoming firmware version and
// <i> to ignore the SoftDevice requirements if the first requirement is 0.
// <i> This does not apply the bootloader updates. If the bootloader depends on the SoftDevice
// <i> e.g. for BLE transport, this does not apply to SoftDevice updates.
// <i> See @ref lib_bootloader_dfu_validation for more information.
// <i> When signed updates are required, version checking should always be enabled.
#ifndef NRF_DFU_APP_DOWNGRADE_PREVENTION
#define NRF_DFU_APP_DOWNGRADE_PREVENTION 1
#endif
When I changed this to 0, I was indeed able to downgrade the version (after sending a package with version "3.0.0", I sent a package with version "1.0.0", and finished successfully).
However, if I understand the bolded and underlined line correctly - for DFUs signed with a private key (as we do), this flag should always be 1.
Could you explain why this is true?
Thanks!
Roi