@@ -6,6 +6,183 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66and this project adheres to
77[ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
88
9+ ## [ 1.25.0] - 2025-06-09
10+
11+ This is a feature release of the Memfault Firmware SDK. The main new feature
12+ released in this version is support for tracking metrics through deep sleep on
13+ ESP32 devices. Full release notes are below.
14+
15+ ### 📈 Added
16+
17+ - Zephyr:
18+
19+ - Add a new choice config ` CONFIG_MEMFAULT_REBOOT_REASON_GET ` . By default,
20+ ` CONFIG_MEMFAULT_REBOOT_REASON_GET_HWINFO=y ` , which is supported by
21+ ` imply CONFIG_HWINFO ` in the overarching ` MEMFAULT ` symbol. This default
22+ enables better reboot reasons out-of-the-box via Zephyr's ` hwinfo ` module.
23+ The fall-back option is ` CONFIG_MEMFAULT_REBOOT_REASON_GET_BASIC ` , which
24+ provides a simple implementation. As before, users can override the default
25+ implementations with ` CONFIG_MEMFAULT_REBOOT_REASON_GET_CUSTOM=y ` .
26+
27+ - Add a new Kconfig setting, ` CONFIG_MEMFAULT_ENABLE_REBOOT_DIAG_DUMP ` , to
28+ print the reboot reason code on system boot, for debugging purposes. This
29+ feature is enabled by default. It can be disabled with
30+ ` CONFIG_MEMFAULT_ENABLE_REBOOT_DIAG_DUMP=n ` .
31+
32+ - Add a ` boot_time_ms ` metric, which tracks how long the system takes to boot
33+ the application. Can be disabled with ` CONFIG_MEMFAULT_METRICS_BOOT_TIME=n ` .
34+
35+ - Add new builtin Wi-Fi metrics, enabled by default when ` CONFIG_WIFI=y ` , and
36+ can be disabled with ` CONFIG_MEMFAULT_METRICS_WIFI=n ` :
37+
38+ - ` wifi_beacon_interval `
39+ - ` wifi_dtim_interval `
40+ - ` wifi_frequency_band `
41+ - ` wifi_primary_channel `
42+ - ` wifi_security_type `
43+ - ` wifi_sta_rssi `
44+ - ` wifi_standard_version `
45+ - ` wifi_twt_capable `
46+ - ` wifi_tx_rate_mbps ` (Zephyr 4.1.0+ only)
47+
48+ These add on top of the existing Zephyr Wi-Fi metrics:
49+
50+ - ` wifi_ap_oui `
51+ - ` wifi_connected_time_ms `
52+ - ` wifi_disconnect_count `
53+
54+ - Add an option to upload logs by default when using
55+ ` MEMFAULT_HTTP_PERIODIC_UPLOAD ` , controlled with the Kconfig symbol
56+ ` MEMFAULT_HTTP_PERIODIC_UPLOAD_LOGS ` . This can also be controlled at runtime
57+ with the included API
58+ ` memfault_zephyr_port_http_periodic_upload_logs(bool enable) `
59+
60+ - Add a new Kconfig option, ` CONFIG_MEMFAULT_PLATFORM_TIME_SINCE_BOOT_CUSTOM ` ,
61+ to provide a custom implementation of
62+ ` memfault_platform_get_time_since_boot_ms() ` in your application. The
63+ default is an implementation using ` k_uptime_get() ` .
64+
65+ - ESP-IDF:
66+
67+ - Add a ` boot_time_ms ` metric, which tracks how long the system takes to boot
68+ the application. Can be disabled with ` CONFIG_MEMFAULT_METRICS_BOOT_TIME=n ` .
69+
70+ - Add support for tracking metrics across ESP32 deep sleep cycles, enabled
71+ with the Kconfig ` CONFIG_MEMFAULT_DEEP_SLEEP_SUPPORT=y ` . To utilize this
72+ feature, these functions must be called by the application:
73+
74+ - ` memfault_platform_deep_sleep_save_state() `
75+
76+ Must be called just prior to entering deep sleep
77+ (` esp_deep_sleep_start() ` )
78+
79+ - ` memfault_platform_deep_sleep_restore_state() `
80+
81+ Must be called before ` memfault_platform_boot() ` in the application
82+ startup sequence.
83+
84+ This feature includes built-in metrics for tracking deep sleep:
85+
86+ - ` deep_sleep_time_ms ` - time spent in deep sleep
87+ - ` active_time_ms ` - time spent out of deep sleep
88+ - ` deep_sleep_wakeup_count ` - number of times the device woke up from deep
89+ sleep
90+
91+ There are several Kconfig options for controlling the deep sleep feature,
92+ including controlling the heartbeat trigger and HTTP periodic upload. See
93+ ` menuconfig ` "Memfault deep sleep support" or
94+ [ ` ports/esp_idf/memfault/Kconfig ` ] ( ports/esp_idf/memfault/Kconfig ) for
95+ details.
96+
97+ - Add new metrics tracking flash usage:
98+
99+ - ` flash_spi_erase_bytes `
100+ - ` flash_spi_write_bytes `
101+ - ` flash_spi_total_size_bytes `
102+
103+ - Add capture of the ESP-IDF Task Watchdog stuck task list in coredumps. This
104+ is enabled by default if ESP-IDF Task Watchdog is enabled, and can be
105+ disabled with the Kconfig
106+ ` CONFIG_MEMFAULT_COREDUMP_CAPTURE_TASK_WATCHDOG=n ` .
107+
108+ ### 🛠️ Changed
109+
110+ - nRF Connect SDK:
111+
112+ - ` CONFIG_MEMFAULT_REBOOT_REASON_GET_CUSTOM ` is now a choice in the new choice
113+ config ` CONFIG_MEMFAULT_REBOOT_REASON_GET ` . As a result, it will be the
114+ default choice if ` CONFIG_MEMFAULT_NRF_CONNECT_SDK=y ` instead of being
115+ ` imply ` -ed by ` CONFIG_MEMFAULT_NRF_CONNECT_SDK ` to work around the
116+ restriction that choice configs cannot be selected. As before, users can
117+ override this behavior with ` CONFIG_MEMFAULT_REBOOT_REASON_GET_CUSTOM=n ` .
118+
119+ - ESP-IDF:
120+
121+ - Rename ` CONFIG_MEMFAULT_TIME_SINCE_BOOT_CUSTOM ` ->
122+ ` CONFIG_MEMFAULT_PLATFORM_TIME_SINCE_BOOT_CUSTOM ` . A new ESP-IDF port choice
123+ Kconfig ` CONFIG_MEMFAULT_PLATFORM_TIME_SINCE_BOOT ` now supports 3 settings
124+ for platform time since boot:
125+
126+ 1 . ` MEMFAULT_PLATFORM_TIME_SINCE_BOOT_ESP_TIMER ` default, suitable for most
127+ applications
128+ 2 . ` MEMFAULT_PLATFORM_TIME_SINCE_BOOT_DEEP_SLEEP ` applicable for deep-sleep
129+ applications
130+ 3 . ` MEMFAULT_PLATFORM_TIME_SINCE_BOOT_CUSTOM ` disable builtin
131+ implementations and implement a custom
132+ ` memfault_platform_get_time_since_boot_ms() `
133+
134+ - Renamed the ` spi_flash_chip_id ` metric (added in ` 1.23.0 ` ) to
135+ ` flash_spi_manufacturer_id ` .
136+
137+ - Renamed the ` wifi_auth_mode ` metric to ` wifi_security_type ` to more
138+ accurately indicate the property being measured.
139+
140+ - General:
141+
142+ - Add the ` demo ` component to the default set of components added to an
143+ Eclipse project when using the
144+ [ ` eclipse_patch.py ` ] ( scripts/eclipse_patch.py ) utility. The default
145+ components can be overridden with the ` --components ` argument.
146+
147+ - Coredumps no longer include the device serial by default. The uploading
148+ serial (passed to the chunks endpoint) is instead used to identify the
149+ device associated with the coredump. Enabling
150+ ` #define MEMFAULT_EVENT_INCLUDE_DEVICE_SERIAL 1 ` in
151+ ` memfault_platform_config.h ` will include the device serial in coredumps.
152+
153+ ### 🐛 Fixed
154+
155+ - ESP-IDF:
156+
157+ - Remove debug logging from ` memfault_platform_time_get_current() ` . When log
158+ timestamps are enabled, and debug level logs are enabled, this function can
159+ infinitely recurse.
160+
161+ - Fix Memfault Build ID insertion when
162+ ` CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES=y ` . Previously, the build ID was
163+ inserted at the wrong build step, resulting in a missing build ID in the
164+ flashable image.
165+
166+ - Zephyr:
167+
168+ - Remove debug logging from the RTC-backed
169+ ` memfault_platform_time_get_current() ` (enabled when
170+ ` CONFIG_MEMFAULT_SYSTEM_TIME_SOURCE_RTC=y ` ). When log timestamps are
171+ enabled, logging from this function can result in infinite recursion under
172+ certain conditions.
173+
174+ - Update the west module allowlist to include ` cmsis_6 ` in the
175+ [ Zephyr QEMU Sample App] ( examples/zephyr/qemu/qemu-app ) . The ` cmsis_6 `
176+ module is now used for TF-M and Cortex-M as of
177+ [ this PR] ( https://github.com/zephyrproject-rtos/zephyr/pull/89370/files ) .
178+
179+ - Update the Memfault Zephyr logging backend to properly capture log lines
180+ when ` CONFIG_LOG_MODE_IMMEDIATE=y ` on Zephyr 3.7.0+.
181+
182+ - Wiced:
183+
184+ - Fix broken symlinks in the [ Wiced example] ( examples/wiced ) .
185+
9186## [ 1.24.0] - 2025-05-06
10187
11188### 📈 Added
@@ -145,6 +322,11 @@ and this project adheres to
145322 - Set the User-Agent to ` MemfaultSDK/<version> ` when sending HTTP requests to
146323 Memfault.
147324
325+ - Zephyr:
326+
327+ - Improve support for flushing data cache prior to reboot, for SOCs with
328+ ` CONFIG_DCACHE ` enabled.
329+
148330### 🛠️ Changed
149331
150332- General:
0 commit comments