Mistake on this page? Email us

Pelion Edge 2.2.0 - February 2021

New features

In this release of Pelion Edge 2.2, we introduce support for two additional platforms and one additional Yocto distribution operating system:

  • Now supported by Pelion Edge is the Linux microPlatform (LmP) OS, running on NXP's i.MX8 development platform imx8mmevk, an excellent choice for typical gateway solutions
  • AVNet's UltraZed-EG Starter kit based on Xilinx Zynq UltraScale+ MPSoC. This FPGA capable is the perfect choice when you need to support some legacy HW with modern, cost-efficient HW without doing your own custom SoC.
  • Pelion Edge continues support of Yocto's Poky OS on the Raspberry Pi 3.

Quick start guides are available for all three platforms and should be followed individually because the build systems have differences. meta-pelion-edge and meta-mbed-edge are the basis for all Pelion Edge programs. Although the operating systems are different in support models, Pelion Edge has been tested to perform and operate the same within both OS environments. Moreover, both operating systems have the same feature set, other than the following difference:

  • [FOTA Update] Pelion Edge on Poky OS continues to use overlayFS for upgrades as it did in previous releases. Pelion Edge on LmP OS uses a new mechanism called OSTree.

The primary features in this release:

  • [edge-core] Updated Edge Core to 0.15.0:

    • Moved the mbed-edge-core recipe to its own meta layer: meta-mbed-edge.
    • The new FOTA update framework library is supported on platforms imx8mmevk and uz3eg-iocc but not on raspberrypi3. To compile with this library, add the MBED_EDGE_CORE_CONFIG_FIRMWARE_UPDATE="ON", MBED_EDGE_CORE_CONFIG_FOTA_ENABLE="ON" and MBED_EDGE_CORE_CONFIG_CURL_DYNAMIC_LINK="ON" Bitbake parameters to local.conf. (Note: The location for local.conf is specific to each platform, so we recommend following the quick start guide in the documentation in detail.)
    • The old firmware update library, Update Client (UC) hub, is only supported on the raspberrypi3 platform. To enable that, add the MBED_EDGE_CORE_CONFIG_FIRMWARE_UPDATE="ON" parameter to local.conf.
  • [maestro] Updated Maestro to v2.9.0:

    • Gateway capabilities - Allows gateways to advertise the features supported by the platform. Maestro uses Edge Core's GRM JSON-RPC APIs to add to the gateway device's LwM2M resources. The registered resources are added under Pelion's reserved FeatureMgmt LwM2M object, 33457, with three resources: 0 - featureID, 1 - enabled and 2 - config.
    • Remote config management through LwM2M - FeatureMgmt config resource allows you to remotely view the current configuration of the feature and also push a config update using the LwM2M cloud service APIs. Maestro, on receiving an update, writes the content to the file path specified in the respective parameter config_filepath.
    • Removed parsing and generation of self-signed certificates. Also removed the platforms rp200 and wwrelay, which are no longer supported.
    • Routed Maestro traffic through the edge-proxy service instead of directly connecting to the Pelion Device Management cloud.
    • By default, disabled the Maestro's gateway logging feature in the configuration file for platforms imx8mmevk, uz3eg-iocc and raspberrypi3. The gateway logging feature is supported through Fluent Bit.
  • [logrotate] Added bbappend file to install a configuration that rotates the logs of files under /var/log.

  • [logrotate] Removed crontab method to call logrotate every 5min. Instead, we configured systemd logrotate timer to 5min.

  • [identity-tool] Established an independent recipe under recipes-connectivity and removed the dependency on wwrelay-utils:

    • Converted the identity node program to bash, which lives in a new project called pe-utils.
    • Installed v2.0.4 of identity-tool, which removes the generation of self-signed certificate.
  • [edge-proxy] Configured services gateway logs (Maestro), gateway stats (Maestro), relay-term, Fluent Bit HTTP endpoint to route traffic through the edge-proxy service and not consume self-signed certificate.

  • [meta-nodejs] Removed the dependency on node v8.x. Upgraded the node packages to work with default nodejs version of Dunfell.

  • [relay-term] Upgraded relay-term to work with node v12.x. Established an independent recipe from wwrelay-utils and removed the dependency on global-node-modules.

  • [mbed-fcce] Upgraded factory-configurator-client-example to v4.7.0 and pinned its dependencies.

  • FluentBit integration - allows you to upload logs to the cloud, filter log dynamically.

    • Added recipe to install Fluent Bit 1.3.5 on the gateway for providing an open source log processor and forwarder solution.
    • By default, Fluent Bit is configured with the following input endpoints - CPU, MEM, Systemd services - edge-core, edge-proxy, pelion-relay-term, Maestro, kubelet, Docker and wait-for-pelion-identity. FluentBit is also configured with an output endpoint HTTP to publish logs at API endpoint: http://gateways.local:8080/v3/device-logs (routing through the edge-proxy service).
  • Verified logging - allows you to sign the logs in the device to prevent log manipulation.

    • [journald] Enabled Forward Secure Sealing (FSS) feature of systemd journal.
    • To configure Pelion Edge gateway with a sealing key and to keep track of the verification key in production setup, use Pelion Edge Provisioner (PEP) tool v2.3.0.
    • By default, the gateway is configured with persistent journal logging for Yocto Poky Raspberry Pi 3. To disable persistent logging, set flag VOLATILE_LOG_DIR = "no" in local.conf, and update the Storage in recipes-core/systemd/systemd-conf/journald.conf. Note: If you disable persistent logging, the FSS feature won't work.
    • By default, the gateway is configured without persistent journal logging for LmP uz3eg-iocc and imx8mmevk. To disable persistent logging, set flag VOLATILE_LOG_DIR = "no" in local.conf, and update the Storage in recipes-core/systemd/systemd-conf/journald.conf. Note: If you disable persistent logging, the FSS feature won't work.
  • [systemd] Configured to manage the network. By default, we disabled Maestro's network management feature.

  • [systemd] Updated the unit startup sequence and changed Requires directive to Wants. This makes the system more robust when dealing with failing services.

    network-online --> edge-core --> wait-for-pelion-identity --> edge-proxy
                                                              --> edge-kubelet
                                                              --> fluentbit (td-agent-bit)
                                                              --> pelion-relay-term
                                                              --> maestro --> devicedb
    
  • [deprecation] Removed deprecated services:

    • devicejs-ng.
    • Compatible devicejs-ng protocol translators.
  • [image improvements] Simplified and improved the "raspberrypi" supported image "console-image":

    • console-image previously, version 1.0 through 2.1, contained Pelion Edge and development tools, including but not limited to: compliers, editors, analysis tools, stress tools and SQA tools. Pelion Edge version 2.2's console-image contains a minimized set of accompanying software for running and testing all of Pelion Edge's software and features. Note: This isn't a minimal image that strips common Linux tools but is instead what you might expect to find on a heavy embedded device. With this new strategy, you can customize the image more easily. You can strip the image more to make a more lightweight embedded OS or add more packages to make it more like the previously provided image.
      • LmP's equivalent image is named lmp-console-image.
    • meta-pelion-edge itself as a Yocto layer is now easier to incorporate with other layers, allowing other Yocto projects to incorporate Pelion Edge.
    • Updated the splash screen banner from "DeviceOS by WigWag" to "Pelion".
    • [recipe removals] Removed:
      • wwrelay-utils recipe. Previously, this bitbake recipe performed many functions that have been replaced. For more details, please reference the recipe additions section below.
      • strace-plus recipe because the image no longer ships with developer tools enabled.
      • tsb recipe because the old wigwag relay is no longer supported.
      • pps-tools recipe because the image no longer ships with developer tools enabled.
      • node-znp recipe because devicejs is deprecated.
      • node-netkit recipe because devicejs is deprecated.
      • fftw recipe because the image no longer ships with developer tools enabled.
      • emacs recipe because the image no longer ships with developer tools enabled.
      • dnsmasq recipe because Pelion Edge programs no longer need these features.
      • deviceOSWD recipe because the old wigwag relay is no longer supported.
      • maestro-watchdog recipe because the old wigwag relay is no longer supported.

Bug fixes

  • After production factory flow, if you ran the info command before Edge Core paired with the cloud, the info command showed N/A for the deviceID while displaying connected. This has been fixed.
  • Streamlined the startup sequence of Pelion Edge programs to remove the cyclic dependency, which caused many starts and stops of processes in certain conditions.
  • When conducting back-to-back production factory flow with the Pelion Edge Provisioner, the mcc_config directory sometimes was not written correctly, and upon reboot, Edge Core didn't connect properly. This has been fixed.

Known issues

  • The Pelion Device Management portal is not correctly updated after a firmware campaign in some instances.
  • [maestro] The FeatureMgmt config resource is initialized with a maximum 3.8KB of file content. The remaining file content is truncated during initialization. This is most likely due to the limitation of the gorilla/websocket library but needs further investigation. However, Pelion Device Management users can still push a file size of a maximum of 64KB through cloud service APIs.
  • [pt-example] cpu-temperature device reports random values because the default CPU temperature file is not the same on Yocto and LmP.
  • [info] The info command must be ran with sudo on LmP based boards (uz3eg-iocc & imx8mmevk)
  • [info] The info command on the uz3eg-iocc attempts to read the cpu temperature when the temperature file does not exist. This results in a cat error message.
  • The LmP updates don't accept firmware updates with numbers 10 and 100. By default, the tenth update you perform is version 0.0.10, which fails. To work around this problem, avoid software version numbers with 10 and 100:
    • For example, you can go from 0.0.9 to 0.0.11 by editing the MAIN component version information in a file called ~/Pelion_Edge_Credentials/.manifest-dev-tool$ cat update.version.yaml. Change MAIN: 0.0.10 to MAIN: 0.0.11.

Xilinx ZU3EG

If you enable kernel configurations CPU_IDLE and PREEMPT, the LmP release including PetaLinux 2020.2 does not work in a stable manner. Our default configuration has those disabled. If you have any issues with those configurations, please contact Xilinx support.

Limitations

  • There is a maximum size limit to the full registration message, which limits the number of devices Edge can host:
    • Maximum registration message size is 64KB.
    • Hosted devices with five typical Resources consume ~280B (the exact size depends, for example, on the length of resource paths). This limits the maximum number to 270 devices.
    • The more Resources you have, the fewer devices can be supported.
    • The Pelion Edge device Resources are also included in the same registration message.
    • Test the limits with your configuration, and set guidance accordingly.
  • Devices behind Pelion Edge do not support auto-observation.
  • Pelion Device Management Client enabled devices must first boostrap to the Pelion Device Management cloud before connecting to Pelion Edge.
  • No moving devices are supported (such as the device moving from Pelion Edge to another edge device.)
  • LmP's base partition table is set above 10GB to support three upgrade images in OSTree. Therefore, we only support SD card installation (compared to supporting onboard EMMC or NAND) for the imx8mmevk and the uz3eg-iocc.

Important note

While provisioning your gateway, please use vendor-id=42fa7b48-1a65-43aa-890f-8c704daade54 to unlock the rich node features, such as gateway logs and gateway terminal in the Pelion web portal.