Overview

Mender is a secure and robust Open source over-the-air (OTA) update manager for Embedded Linux devices. It is used to validate end-to-end OTA functionality across Cassini platforms.

It offers:

  • A/B system updates

  • Capsule updates for firmware

  • Robust rollback mechanisms

  • Secure authentication and artifact verification

  • Device grouping and phased rollout support

Duration: up to 60 minutes

This section describes the manual testing process for validating Mender client on Cassini platforms. It ensures end-to-end OTA functionality including provisioning, mender system update and mender capsule update.

The validation workflow begins with the following preparation steps:

This integration prepares the device for Mender OTA flow through:

This integration validates the Mender OTA flow through:

Note

EDK2 on the KV260 platform currently does not support capsule updates due to limitations in the EDK2 firmware stack.

Cleans up the test environment for future test runs:

Mender environment variables:

  • BRANCH: Specifies the Git branch tag for the Docker image used

  • CAPSULE: Name of the capsule update image to be used.

  • HOST_MACHINE_USER : Username of the host machine running Mender server

  • MACHINE : Target platform machine name

  • MENDER_SERVER_DIR : Mender server directory on the host machine

  • MENDER_DUT_TEST_DIR : Mender test directory on DUT. It needs to be part of /data

  • MENDER_SERVER_HTTPS_PORT : HTTPS port exposed to clients (default: 443)

  • MENDER_SERVER_HTTP_PORT : HTTP port exposed to clients (default: 80)

  • MENDER_SERVER_IP : IP address of the the host machine running Mender server

  • MENDER_SERVER_NAME : Mender server name

  • MENDER_FW_GUID : GUID for the ESRT entry and the capsule payload.

  • MENDER_CAPSULE_VERSION : Version for the capsule payload. This is verified against ESRT entry version after the update.

  • MENDER_FW_VERSION : Current version for the ESRT entry.

Build with Mender Support

Cassini images include Mender client support by default. For more details, see Over-the-Air Update. It is recommended to build with Developer Support.

These are the required environment variables, refer here for more details.

  • CAPSULE

  • MACHINE

  • MENDER_SERVER_DIR

Create a clean test directory

rm -Rf ${MENDER_SERVER_DIR}
mkdir -p ${MENDER_SERVER_DIR}/artifacts

Copy the generated .mender artifact to a designated directory for performing system update

cp ${BUILDDIR}/tmp/deploy/images/${MACHINE}/cassini-image-base-${MACHINE}.mender \
  ${MENDER_SERVER_DIR}/artifacts/${MACHINE}.mender

Copy the generated ${CAPSULE} artifact to a designated directory for performing capsule update

cp ${BUILDDIR}/tmp/deploy/images/${MACHINE}/${CAPSULE} \
  ${MENDER_SERVER_DIR}/artifacts/${MACHINE}.uefi.capsule

Important

The name of ${CAPSULE} depends on the target platform used to build the capsule.

  • For corstone1000, the capsule name is typically ${MACHINE}-v6.uefi.capsule

  • For kv260, the capsule name is typically {{ MACHINE }}_fw.capsule