Skip to content

Releases: memfault/memfault-firmware-sdk

1.16.0

24 Oct 19:41
Compare
Choose a tag to compare

🔥 Removed

  • Removed support for Zephyr < 2.7.0
  • Removed support for nRF-Connect SDK < 1.9.2
  • Removed support for ESP-IDF < 4.4.0

Please contact us if you need support for
earlier versions!

🐛 Fixed

  • General:

    • Correct an issue where eMemfaultRebootReason is expressed as a 4-byte type
      instead of 2-bytes when compiling with Clang with high optimization, when
      targeting ARM. This results in Coredumps tagged as Unknown instead of the
      correct reason code.

📈 Added

  • General:

    • Add a pair of optional user-provided functions,
      memfault_reboot_tracking_load() / memfault_reboot_tracking_save(), to
      allow users to provide their own implementations for saving and loading
      reboot tracking data. This is useful when the default implementation is not
      suitable for the platform or when the user wants to store the data in a
      different location.

    • The
      Stable Sessions Device Vital
      added in SDK version 1.15.0 is fully available and no longer considered
      experimental.

    • Add an optional memfault_port_coredump_save_begin() callback, for use by
      Memfault ports. This allows memfault_platform_coredump_save_begin() to be
      implemented by the platform instead, for custom pre-coredump operations.
      Thanks to @finger563 for reporting this issue in
      #77!

    • Improved API docs for events and data packetizer components by noting
      restrictions for use in ISR contexts

  • Zephyr:

    • Update the Qemu app to support the nucleo_l496zg board, with support for
      the Zephyr bbram subsystem, and implement the new
      memfault_reboot_tracking_load() / memfault_reboot_tracking_save()
      functions to demonstrate the functionality.
  • ESP-IDF:

    • New Kconfig setting, CONFIG_MEMFAULT_ENABLE_REBOOT_DIAG_DUMP, to print the
      ESP-IDF reboot reason code on system boot, for debugging purposes. This
      feature is disabled by default.

🛠️ Changed

  • General:

    • Update support links to refer to the preferred site
      https://mflt.io/contact-support instead of the Memfault support email.
      This link will redirect to a form where questions can be sent to the
      Memfault support team.
  • nRF-Connect SDK:

    • Changed the Kconfig symbol MEMFAULT_REBOOT_REASON_GET_CUSTOM to be imply
      instead of select when the nRF-Connect SDK is enabled. This permits users
      to disable the nrfx-based reboot reason tracking if needed.

1.15.0

15 Oct 19:29
Compare
Choose a tag to compare

📈 Added

  • General:

    • EXPERIMENTAL: Metrics Sessions now include a built-in metric for the
      Stable Sessions Device Vital
      (session.operational_crashes) which tracks crashes that occurred when a
      session is active.

🛠️ Changed

  • General:

    • Minor changes to support compiling with GCC ARM v4.9.3.

🐛 Fixed

  • Corrected a spelling error, renamed MEMFAULT_METRIS_KEY_DEFINE_WITH_SESSION_AND_SCALE_VALUE() to MEMFAULT_METRICS_KEY_DEFINE_WITH_SESSION_AND_SCALE_VALUE()

1.14.0

09 Oct 18:45
Compare
Choose a tag to compare

📈 Added

  • ESP-IDF:

    • The Memfault port will now disable the IWDT (Interrupt Watchdog Timer)
      before starting coredump saving, to prevent interrupting the coredump
      process. The ESP-IDF fault handler enables the WDT_RWDT hardware watchdog
      when a fault occurs, so there is still protection if the fault handling
      hangs.

1.13.0

08 Oct 16:35
Compare
Choose a tag to compare

📈 Added

  • FreeRTOS:

    • The SDK now has a config to control whether to split CPU usage per core when
      building for a multi-core device. Enable this setting by adding
      #define MEMFAULT_FREERTOS_RUNTIME_STATS_MULTI_CORE_SPLIT 1 to
      memfault_platform_config.h. This setting is disabled by default.
  • ESP-IDF:

    • Added a Kconfig, CONFIG_MEMFAULT_FREERTOS_RUNTIME_STATS_MULTI_CORE_SPLIT,
      to control MEMFAULT_FREERTOS_RUNTIME_STATS_MULTI_CORE_SPLIT. This Kconfig
      is enabled by default for multi-core devices.

🛠️ Changed

  • FreeRTOS:

    • Changed previous idle task run time percent metrics to measure CPU usage
      (i.e. the complement of the idle task run time)
    • Renamed the following metrics:
      • Single-Core + Multi-Core Default:
        • idle_task_run_time_percent -> cpu_usage_pct
      • Multi-Core Split:
        • idle0_task_run_time_percent -> cpu_usage_pct
        • idle1_task_run_time_percent -> cpu1_usage_pct
  • ESP-IDF:

    • Unknown or unclassified reboot reason codes returned by get_reset_reason()
      are now correctly recorded as kMfltRebootReason_Unknown instead of
      kMfltRebootReason_UnknownError (UnknownError is reserved for an
      "unexpected" reboot path, where Unknown is used when the reboot reason
      cannot be determined).

🚩 Deprecated

Support for the following vendor platform versions is deprecated in this
release, and will be removed in the following release:

  • ESP-IDF < v4.4 (Jan 26, 2022)
  • Zephyr < v2.7.0 (Oct 16, 2021)
  • nRF-Connect SDK < v1.9.2 (Jul 14, 2022)

Please contact us if you need support for earlier
versions!

1.12.0

25 Sep 19:42
Compare
Choose a tag to compare

📈 Added

  • ESP-IDF:

    • The SDK now supports being installed as an
      ESP Component from the Espressif
      registry, by adding the following lines to an esp-idf project's
      idf_component.yml manifest:

      dependencies:
        memfault/memfault-firmware-sdk:
          version: "1.12.0"
    • Heap Allocation Tracking is
      now enabled by default for ESP-IDF projects, controlled with the Kconfig
      symbol CONFIG_MEMFAULT_HEAP_STATS. The Memfault Trace UI will show
      information about the most recent heap allocations for malloc() calls.

🛠️ Changed

  • ESP-IDF:

    • The Memfault Build ID will be
      applied by default, controlled by the Kconfig setting
      CONFIG_MEMFAULT_USE_MEMFAULT_BUILD_ID. This is only valid for ESP-IDF
      versions >= 4.2.5 , and will cause a build error on older versions,
      requiring it to be set to n. Updating to this version of the SDK will
      require removing the similar logic in the project's CMakeLists.txt
      file (a build error will occur if both are present).

    • The Memfault Core Vital for
      Periodic Connectivity
      will now count failures to sync Memfault data if the HTTP connection cannot
      be established, but WiFi connectivity is available. This can occur when the
      WAN connection is down but the access point is still up, or if there is an
      external DNS failure. Previously this was not counted as a failure.

  • Zephyr

    • The Memfault HTTP client, enabled with Kconfig
      CONFIG_MEMFAULT_HTTP_ENABLE, requires POSIX_API to be enabled on newer
      versions of Zephyr. Previously, not explicitly enabling POSIX_API would
      result in a build error. Update it to be enabled by default in the Zephyr
      SDK, via Kconfig imply POSIX_API.

    • Zephyr 3.7.0+ requires enabling CONFIG_MBEDTLS_SHA1 when using Zephyr's
      mbedtls implementation. Memfault added a build-time check for this setting
      in Memfault SDK 1.11.2, but that check would also trip when not using
      Zephyr's mbedtls implementation. Update the build check to be more precise.

  • nRF-Connect SDK:

    • Minor changes to provide compatibility with NCS versions > 2.7.0, which
      target a Zephyr fork that is compatible with 3.7.0 but provides a
      "development" version number, 3.6.99.

🐛 Fixed

  • ESP-IDF:

    • Corrected a theoretical integer overflow issue in the demo CLI crash
      command, detected by static analysis tools. The impacted function was and is
      exclusively called with an argument of 10, so this issue was not
      exploitable in practice.

1.11.5

18 Sep 20:37
Compare
Choose a tag to compare

📈 Added

  • Zephyr:

    • Add the following built-in WiFi metrics for Zephyr devices, enabled by
      default on systems with WiFi:

      • wifi_connected_time_ms : time in milliseconds the device has been
        connected to a WiFi network
      • wifi_disconnect_count : number of times the device has disconnected from
        a WiFi network
      • wifi_ap_oui : the OUI of the WiFi AP the device is connected to

      The metrics can be disabled by setting CONFIG_MEMFAULT_METRICS_WIFI=n.

    • The Memfault Zephyr fault handler now labels faults as Stack Overflow, Bus
      Fault, MemManage Fault, and Usage Fault, among others, in addition to the
      existing Hard Fault label. Note that this does not change the types of
      faults collected (all these faults are already supported), but it does
      correct the label presented in the Memfault UI.

    • Add a new test command, mflt test stack_overflow, that will trigger a
      stack overflow fault when CONFIG_STACK_SENTINEL or
      CONFIG_MPU_STACK_GUARD is enabled.

    • The cpu_temp metric has been renamed to thermal_cpu_c to better reflect
      the metric's purpose. The metric is still collected by default on platforms
      with an enabled die-temp0 sensor, and can be disabled by setting
      CONFIG_MEMFAULT_METRICS_CPU_TEMP=n.

    • Add a new metric, memory_pct_max, which captures the max percentage of the
      heap used. It is enabled by default. This metric and the existing
      Heap_BytesFree metric are controlled with
      CONFIG_MEMFAULT_METRICS_MEMORY_USAGE.

  • ESP-IDF:

    • Add an option to upload logs by default when using
      MEMFAULT_HTTP_PERIODIC_UPLOAD, controlled with the Kconfig symbol
      MEMFAULT_HTTP_PERIODIC_UPLOAD_LOGS. This can also be controlled at runtime
      with the included API
      memfault_esp_port_http_periodic_upload_logs(bool enable)

    • Add a new metric, memory_pct_max, which captures the max percentage of the
      heap used. It is enabled by default. This metric and the existing heap_*
      metrics are now controlled with CONFIG_MEMFAULT_METRICS_MEMORY_USAGE.

    • Print the Memfault OTA URL from memfault_esp_port_ota_update() when a new
      update is available, for example:

      esp32> memfault_ota_check
      I (98125) mflt: Checking for OTA Update
      Download URL: https://ota-cdn.memfault.com/2950/9757/19036619757?token=0123456789abcdef&expires=1726192800&v=2
      I (98775) mflt: Update available!
      
      esp32> memfault_ota_perform
      I (15515) mflt: Checking for OTA Update
      Download URL: https://ota-cdn.memfault.com/2950/9757/19036619757?token=0123456789abcdef&expires=1726192800&v=2
      I (16205) mflt: Starting OTA download ...

🛠️ Changed

  • Zephyr:

    • The cpu_temp metric has been renamed to thermal_cpu_c to better reflect
      the metric's purpose. The metric is still collected by default on platforms
      with an enabled die-temp0 sensor, and can be disabled by setting
      CONFIG_MEMFAULT_METRICS_CPU_TEMP=n.
  • ESP-IDF:

    • The cpu_temp metric has been renamed to thermal_cpu_c to better reflect
      the metric's purpose. The metric is still collected by default on ESP32
      variants that support it (all but ESP32), and can be disabled by setting
      CONFIG_MEMFAULT_METRICS_CPU_TEMP=n.

    • The Kconfig CONFIG_MEMFAULT_ESP_HEAP_METRICS has been replaced with
      CONFIG_MEMFAULT_METRICS_MEMORY_USAGE.

1.11.4

10 Sep 17:20
Compare
Choose a tag to compare

See CHANGELOG.md for release notes.

1.11.3

05 Sep 13:20
Compare
Choose a tag to compare

See CHANGELOG.md for release notes.

1.11.2

30 Aug 21:09
Compare
Choose a tag to compare

See CHANGELOG.md for release notes.

1.11.1

12 Aug 18:34
Compare
Choose a tag to compare

See CHANGELOG.md for release notes.