July Updates

Support for Complex Upgrade Paths

Many firmware projects have complex firmware upgrade paths. This might be to enable binary differential updates to save bandwidth or maybe to allow for a project to remove backwards-incompatible code.

For example, when upgrading a firmware from a 1.x to a 2.x release, the device might need to go through a migration firmware as shown below.

must-pass-through

To use this, the Memfault CLI provides a --must-pass-through flag. The flag is also documented in the API docs

$ memfault upload-ota-payload --help
...
--must-pass-through When the release is deployed to a Cohort, forces a
device to update through this version even if a
newer version has also been deployed to the Cohort.

General Improvements

  • Improve usability of filtering for Issues, including the ability to search for Issues that affect a particular device.
  • Improve usability of the Issue distributions when projects have many software versions.
  • Fix a bug which would cause an Issue to have a "Last Seen" date in the future.

Embedded

  • When a Trace was received from a device but no symbol file has been uploaded for the corresponding firmware, Memfault will now show a warning in the Issues page.

    missing-symbol-file

  • The Memfault CLI tool can now post a chunk that is encoded in base64, raw bytes, or was printed by the SDK through logs.

    $ memfault post-chunk --help
    Usage: memfault post-chunk [OPTIONS] DATA
    Sends data generated by the memfault-firmware-sdk ("chunks") to the
    Memfault cloud.
    The command can operate on binary data encoded in the following formats:
    1. Hex String:
    memfault --project-key ${YOUR_PROJECT_API_KEY} post-chunk --encoding hex 0802a702010301076a5445535453455249414c0a6d746573742d736f667477617265096a312e302e302d74657374066d746573742d686172647761726504a101a1726368756e6b5f746573745f737563636573730131e4
    2. Base64 Encoded String
    memfault --project-key ${YOUR_PROJECT_API_KEY} post-chunk --encoding base64 CAKnAgEDAQdqVEVTVFNFUklBTAptdGVzdC1zb2Z0d2FyZQlqMS4wLjAtdGVzdAZtdGVzdC1oYXJkd2FyZQShAaFyY2h1bmtfdGVzdF9zdWNjZXNzATHk
    3. Binary File
    memfault --project-key ${YOUR_PROJECT_API_KEY} post-chunk --encoding bin chunk_v2_single_chunk_msg.bin
    4. memfault-firmware-sdk data export
    memfault --project-key ${YOUR_PROJECT_API_KEY} post-chunk --encoding sdk_data_export data_export.txt
  • For more details on the changes to the Firmware SDK that didn't make the changelog, check out the Memfault Firmware SDK changelog.

Android

  • Traces now show up within the bugreport timeline view. Hover over each dot to see exact reason for failure.

    traces-timeline

  • Add the ability to scrub the log data of personally identifiable information. You can find these settings under the Project Settings page.

    app-id-scrubbing

  • Improved Java exception parsing and de-duplication.
  • For more details on the changes to the Android Bort SDK that didn't make the changelog, check out the Memfault Bort SDK changelog.

Documentation