Incorrect Software Version Displayed in Processing Log

Hello.

I am currently testing nRF Cloud and encountering an issue.

I have flashed the Peripheral Memfault Diagnostic Service (MDS) sample program to an nRF54L15DK and connected it to the nRF Device Manager app on my iPhone.
Upon checking the Processing Log in the Memfault web portal, I noticed that the Software Version value varies depending on the type of event received:

  • Reboot events / Trace events / Metrics Reports: Displayed as "0.0.1+0" ( Correct )
      "event_data": {
        "software_version": {
          "version": "0.0.1+0",
          "software_type": "peripheral_mds",
          "existence_ensured": true
        },

  • OTA check for update events: Displayed as "0.0.1 0" ( Incorrect - the plus sign is replaced by a space )
      "event_data": {
        "hardware_version": "nrf54l15dk",
        "software_version": {
          "version": "0.0.1 0",
          "software_type": "peripheral_mds",
          "existence_ensured": true
        },

The expected value is "0.0.1+0".
My configuration is as follows:

  • CONFIG_MEMFAULT_NCS_FW_VERSION="0.0.1+0"
  • The value is automatically derived from the VERSION file because it exits in the project and CONFIG_MEMFAULT_NCS_FW_VERSION_STATIC is set to y.

Thanks for reading.

a.da

Parents Reply Children
  • Hi Noah, thanks for your reply.

    I tried the suggested workaround and found two important points:

    First, even after redefining the default value in my project’s 'Kconfig' file, the value remained "0.0.1+0" and did not change.

    config MEMFAULT_NCS_FW_VERSION
    	default "$(VERSION_MAJOR).$(VERSION_MINOR).$(PATCHLEVEL)"

    I suspect this is because the initial value was already determined when it was declared within the NCS ( nRF Connect SDK ) environment.

    C:\ncs\v3.2.1\nrf\modules\memfault-firmware-sdk\Kconfig

    config MEMFAULT_NCS_FW_VERSION
    	string "Static firmware version to use"
    	depends on MEMFAULT_NCS_FW_VERSION_STATIC
    	default "$(APP_VERSION_TWEAK_STRING)" if "$(VERSION_MAJOR)" != ""

    However, when I set a fixed value in 'prj.conf' file instead of the 'Kconfig' file, it worked as expected.

    CONFIG_MEMFAULT_NCS_FW_VERSION="0.0.1"

    Second, it appears that the value displayed in the "OTA check for update events" log is actually 'CONFIG_BT_DIS_FW_REV_STR', not 'CONFIG_MEMFAULT_NCS_FW_VERSION'.

    As mentioned earlier, even when I set 'CONFIG_MEMFAULT_NCS_FW_VERSION' to a fixed value ( "0.0.1" ), the version in the OTA events was still displayed as "0.0.1 0".
    After setting 'CONFIG_BT_DIS_FW_REV_STR' to the same fixed value, it was correctly displayed as "0.0.1".

    CONFIG_MEMFAULT_NCS_FW_VERSION="0.0.1"
    CONFIG_BT_DIS_FW_REV_STR="0.0.1"

    I look forward to the mobile app update!

    a.da

  • Hi a.da -

    Thanks for trying it out, and figuring out the workaround! Indeed it is the BT DIS value the mobile app is using for firmware version. All versions should be synchronized, i.e. this section of the sample `prj.conf`:

    # Set MCUBoot image header version to match DIS and Memfault version
    CONFIG_BT_DIS_FW_REV_STR="0.0.1"
    CONFIG_MEMFAULT_NCS_FW_VERSION_STATIC=y
    CONFIG_MEMFAULT_NCS_FW_VERSION="0.0.1"
    CONFIG_MCUBOOT_IMGTOOL_SIGN_VERSION="0.0.1"

    Regarding this:

    > First, even after redefining the default value in my project’s 'Kconfig' file

    This usually means the `source "Kconfig.zephyr"` line preceded where you tried to override the default. If you keep that at the end, it should work:

    https://github.com/memfault/memfault-firmware-sdk/blob/050c1a5748f9c668cb1c152735438596e528ad9c/examples/nrf-connect-sdk/nrf5/memfault_demo_app/Kconfig#L99

    But you will need to make sure you include all settings, i.e:

    config MEMFAULT_NCS_FW_VERSION
        default "$(VERSION_MAJOR).$(VERSION_MINOR).$(PATCHLEVEL)"

    config MCUBOOT_IMGTOOL_SIGN_VERSION
        default MEMFAULT_NCS_FW_VERSION
    config BT_DIS_FW_REV_STR
        default MEMFAULT_NCS_FW_VERSION

    On the iOS app update- we've made the changes and will be releasing the app shortly. It can take a few days to be available on the app store, we'll let you know when it's ready to update!

    And thank you very much for your patience, and for providing the excellent bug report, greatly appreciated!

    Thanks,

    Noah

Related