August 2025
Improved Linux Support
We've introduced Python crash support and custom trace capture for Linux devices. These updates close observability gaps where Python apps mix native code or where failures don't trigger kernel crashes. With full Python stack traces and structured custom traces integrated directly into Memfault Issues, you can now capture a broader range of problems, see them grouped fleet-wide, and get the same alerts and contextual data you rely on for other issues.
Saved Issue Search and Summaries
Managing issues across large and fragmented fleets just got much easier. You can now save filtered issue searches, pin your favorites to the sidebar for fast access, and even subscribe to scheduled email summaries that notify you of changes in the issues that matter most. This ensures your team gets higher-signal alerts without the noise.
General
-
Enhanced Software Versions page with improved filtering, search, and version details, making it easier to find and analyze relevant software releases and active device usage.
-
Added normalization option for over-time metric charts, allowing device counts to be displayed as a percentage of active devices for easier comparison across segments and changing fleet sizes.
-
You can now tag team members in issue comments, automatically notifying them by email with a direct link to the comment.
-
Added support for comparison operators in software version filters
(>, >=, <, <=, !=)
, making it easier to search, filter, and analyze device and issue data across version ranges. -
Added the ability to save, share, and manage issue searches (with options to pin personal favorites in the sidebar) for faster access and collaboration.
MCU
[1.28.0] - 2025-08-04
This is a minor update release.
Highlights:
- added a new test command for simulating hangs in ISRs
- improved NMI exception capture
- fixed a build issue in the nRF-Connect SDK port
📈 Added
- Zephyr:
- Add a new test command,
mflt test isr_hang
, which will cause a busy loop hang inside ak_timer
, which normally is executing from an ISR context. The system will only exit this condition if there is a watchdog or other higher-priority interrupt capable of preempting thek_timer
ISR. Theqemu
sample app is updated to enable a watchdog which generates an NMI exception, caught by Memfault. - Added a debug print when uploading data using
CONFIG_MEMFAULT_HTTP_PERIODIC_UPLOAD
that shows the bytes sent:Only enabled when debug level prints are enabled for Memfault ([00:09:45.821,000] <dbg> mflt: memfault_platform_log: Uploaded 118 bytes of Memfault data
CONFIG_MEMFAULT_LOG_LEVEL_DBG=y
).
- Add a new test command,
🛠️ Changed
-
Zephyr:
-
NMI exceptions are now properly handled. Prior to this change, a coredump was captured on NMI exceptions but the MSP context was not fully unwound and the NVIC state was not included in the trace data.
-
Add a new Kconfig option,
CONFIG_MEMFAULT_COREDUMP_NVIC_INTERRUPTS_TO_COLLECT
, which controls the existingmemfault_platform_config.h
settingMEMFAULT_NVIC_INTERRUPTS_TO_COLLECT
for Cortex-M targets. The default now is to collect allNUM_IRQS
as defined by Zephyr, which on many platforms will increase from the previous default of32
. This improves the out-of-the-box information at the cost of 44 bytes in coredump storage consumed per additional 32 interrupts. Some example deltas shown below, including the byte delta in the stored coredump:Platform Previous Default New Default Byte Delta nRF52840 32 64 (*48, rounded up to nearest multiple of 32) +44 nRF91 32 96 (*65 rounded up) +88 nRF53 32 96 (*69 rounded up) +88 STM32F407 32 96 (*82 rounded up) +88 STM32H7B0 32 160 (*155 rounded up) +176 STM32H563 32 160 (*155 rounded up) +176 To restore the previous default, set
CONFIG_MEMFAULT_COREDUMP_NVIC_INTERRUPTS_TO_COLLECT=32
.
-
-
nRF-Connect SDK:
Android
v5.4.2 - August 4, 2025
🚧 Fixes
- Fixed a bug where bugreports would not always be cleaned up due to incorrect file permissions in the Bort app.
📈 Improvements
- Refactored the device config handlers into clearer interfaces and implementations.
- Added several more bugreport reply broadcasts (OK_REQUESTED, OK_GENERATING, OK_GENERATED, ERROR_GENERATED_TIMEOUT).
- Added optional constraints on bugreport requests through a multibind interface.
Linux
[1.24.0] - 2025-08-18
This release adds an example recipe for a systemd
service that depends on
memfaultd
. Additionally it changes the query frequency of eMMC lifetime
metrics.
Added
- Added an example service that depends on
memfaultd
. This is useful for when you want to run some code aftermemfaultd
has finished starting.
Changed
- Changed the read interval for eMMC lifetime values to only happen once an hour regardless of configuration. The lifetime values will change very infrequently. Reading them at a lower frequency can help lower CPU utilization and reduce eMMC controller wakeups without sacrificing any resolution. This can improve battery life for battery powered devices.
[1.23.0] - 2025-08-11
This release adds support for Python based stacktraces, as well as a few minor changes. Additionally we've made some changes to flash lifetime metrics, and how they're collected.
Added
- Add generic custom trace support
- This allows you to send text based backtraces to memfaultd.
- They can be sent via the
memfaultctl save-trace
command - They can also be sent via
/v1/trace/save
local endpoint
- Added Python stack trace support
- Python stack traces utilize the above custom backtrace support
- By integrating pyfault you can send backtraces directly from a crashing python process.
- Add new virtual memory metrics from
/proc/vmstat
. These are represented as the following keys:memory/vm/swaps_in_per_second
memory/vm/swaps_out_per_second
memory/vm/pages_in_per_second
memory/vm/pages_out_per_second
- Added OUI (Organizationally Unique Identifier) collection for network device identification and troubleshooting
Changed
- Changed flash lifetime metrics to use
pct_remaining
format instead of previous representation, providing clearer visibility into remaining device lifespan
Fixed
- Fixed MMC lifetime reading where
memfaultd
would attempt to read lifetime values from older MMC devices that don't support this feature - Fixed handling of invalid individual lifetime values - they no longer cause the entire lifetime collection to fail
- Fixed overly verbose device info logging that was cluttering log output
- Fixed build configuration for macOS by removing
--compress-debug-sections=zlib
from cargo config that was causing compilation issues - Fixed unit test reliability by properly mocking
boottime_ms
values