Skip to main content

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 a k_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 the k_timer ISR. The qemu 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:
      [00:09:45.821,000] <dbg> mflt: memfault_platform_log: Uploaded 118 bytes of Memfault data
      Only enabled when debug level prints are enabled for Memfault (CONFIG_MEMFAULT_LOG_LEVEL_DBG=y).

🛠️ 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 existing memfault_platform_config.h setting MEMFAULT_NVIC_INTERRUPTS_TO_COLLECT for Cortex-M targets. The default now is to collect all NUM_IRQS as defined by Zephyr, which on many platforms will increase from the previous default of 32. 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:

      PlatformPrevious DefaultNew DefaultByte Delta
      nRF528403264 (*48, rounded up to nearest multiple of 32)+44
      nRF913296 (*65 rounded up)+88
      nRF533296 (*69 rounded up)+88
      STM32F4073296 (*82 rounded up)+88
      STM32H7B032160 (*155 rounded up)+176
      STM32H56332160 (*155 rounded up)+176

      To restore the previous default, set CONFIG_MEMFAULT_COREDUMP_NVIC_INTERRUPTS_TO_COLLECT=32.

  • nRF-Connect SDK:

    • Fix a build issue impacting some nRF54 series chips related to reboot reason decoding. Thanks to @grochu for providing the fix in #94 🎉!

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 after memfaultd 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