Skip to content

Releases: memfault/memfault-firmware-sdk

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.

1.11.0

08 Aug 15:50
Compare
Choose a tag to compare

See CHANGELOG.md for release notes.