Skip to content

Releases: aws/aws-iot-fleetwise-edge

Release v1.2.0

21 Nov 19:31
Compare
Choose a tag to compare

New features:

Breaking changes:

  • The collectionSchemeListTopic, decoderManifestTopic, canDataTopic and checkinTopic config fields are deprecated. If a config file has any of them, they will be ignored. Now FWE defaults to AWS reserved topics without needing any additional config. If you still need to customize the topics you can set the prefix using the new iotFleetWiseTopicPrefix field.
  • Only affects existing iWave and Android instances: Replaced the CAN-based CustomDataSource implementation with the new Network agnostic data collection approach for custom data sources. Existing iWave and Android instances will need to be re-configured and have changes made to their decoder manifest to use this new version.

Release v1.1.2

30 Oct 15:40
Compare
Choose a tag to compare

Bug fixes:

  • MQTT connection fixes:
    • Retry MQTT topic subscription when it fails. When FWE starts up, it tries to establish the MQTT
      connection and retries until it succeeds. Only after that, it subscribes to the topics. But if a
      subscription failed (e.g. due to network issues), it never retried, making FWE never receive
      messages from the topic until the process is restarted.
    • On shutdown only unsubscribe to MQTT Channels that are subscribed
    • When persistent sessions are enabled, don't unsubscribe on shutdown. This is required for FWE to
      receive messages while it was offline.
    • Connect only after all listeners are subscribed. If a message was received right after
      connection was established, it could be silently ignored because the listeners for the topic
      weren't registered yet.
  • ROS2 related bug fixes:
    • If more than one campaign used a ROS2 signal in its expression, only the first campaign would
      receive data for evaluation.
    • If FWE receives a campaign more than once from the cloud, data collection would stop due to
      internal signal IDs being reallocated.
    • Fixed segfault for VSD build when campaigns received before decoder manifest
  • Fixed invalid read on shutdown when network is down

Improvements:

  • Update AWS C++ SDK to v1.11.284.
  • Update Boost to 1.84.0.
  • Enable flow control for MQTT5 client (when using iotCore connection type). This limits data sent
    by FWE to what is defined in IoT Core limits for throughput and number of publishes.
  • Change default values for some MQTT connection settings and make them configurable in the config
    file. All defaults are now the same as the AWS SDK:
    • Keep alive interval changed from 60 seconds to 1200 seconds. Set keepAliveIntervalSeconds
      to override it.
    • Ping timeout default changed from 3000 ms to 30000 ms. Set pingTimeoutMs to override it.
    • Persistent sessions are now disabled by default. Set sessionExpiryIntervalSeconds to a
      non-zero value to enable it.
  • Add implicit casting between numeric and Boolean data types in expression evaluation. E.g.
    1 + true will equal 2, and false || 3 will equal true.
  • Add support for relative paths to the certificate, private key files and persistency directory,
    relative to the directory containing the configuration JSON file.
  • Make demo.sh more generic, by 1/ Allowing multiple 'node', 'decoder', 'network interface', and
    'campaign' JSON files to be passed, rather than having specific options for CAN, OBD and ROS2, 2/
    Add --data-destination option to specify data destination (default is still Amazon Timestream.)
    This allows the Android-specific demo script to be removed.
  • Previously if the CAN network interface goes down, FWE would exit with an error. Now it will
    continue to run and will resume data collection if the interface comes back up, however it will
    still exit with an error if the interface is removed from the system.
  • Improved developer guides
  • Added Disconnect Packet to the MQTT Client Stop sequence to help customers understand what the
    reason for the vehicle disconnection from the broker
  • Added usage of data type from decoder manifest for CAN and OBD signals
  • Add new signal type UNKNOWN
  • Split MQTT channels into separate Sender and Receiver compared to previously using the same
    channel instance to send and receive messages
  • Adaptive payload sizing for both compressed and uncompressed data

Release v1.1.1

15 Feb 13:15
Compare
Choose a tag to compare

Bug fixes:

  • Fixed possible segfaults at startup triggered by bad configuration.
  • Fixed periodic upload trigger for heartbeat campaigns, that previously was only triggered by further data reception.

Improvements:

  • Improve error output for bad configuration, to indicate where an option is missing or incorrect.
  • Upgraded GitHub actions to support Node v20, as Node v16 is now EOL.
  • Fixed some Coverity check regressions.
  • Removed unsupported 'Geohash' feature.
  • Corrected cleanup instructions in guides.
  • Build Boost from source with -fPIC to enable linkage in a shared library.

Release v1.1.0

27 Nov 05:01
Compare
Choose a tag to compare

Features:

  • Add support for 'vision system data', with initial support for collection from ROS2. This enables collection of complex data types including structures, arrays and strings. Nested structures and arrays of structures are also supported.
    • Known limitations:
      • When no internet connection is available, collected vision system data is currently dropped, i.e. it is not persisted to the filesystem for later upload when connectivity is restored.
      • When the upload of vision system data to S3 fails, e.g. due to poor connectivity or throttling by S3, currently only one retry is attempted.

Improvements:

  • Update AWS C++ SDK to v1.11.177.
  • Update Yocto reference to kirkstone and NXP Linux BSP 37.0.
  • Switch to MQTT 5 client for better error messages. This is fully backward compatible with the previous client. Please note that currently we are not using nor supporting any MQTT 5 specific feature besides reason codes.
  • When a CAN interface goes down at runtime, FWE will now exit with with an error.
  • Enabled FWE_FEATURE_IWAVE_GPS for the GitHub armhf pre-built-binary, and added auto-detection of the iWave GPS for backwards compatibility with configuration files without the .staticConfig.iWaveGpsExample section.

Release v1.0.8

25 Sep 12:42
Compare
Choose a tag to compare

Bug fixes:

  • Update AWS C++ SDK to v1.11.148, which includes an important bugfix for MQTT 3.1.1 clients.

Improvements:

  • Add support for building as a library exported by CMake. Set the CMake option FWE_BUILD_EXECUTABLE to OFF, then use find_package(AwsIotFwe), ${AwsIotFwe_INCLUDE_DIR} and link with AwsIotFwe::AwsIotFwe.
  • Non-functional source code improvements:
    • Simplify src/ folder structure, removing sub-namespaces & sub-libraries, and moving unit test files to test/unit/.
    • Correct #includes using include-what-you-use.
    • Move from compile-time mocking to link-time mocking of AWS C++ SDK using Google Mock.
  • Fix GitHub CI: support separate Ubuntu package mirror file, fix caching of Android install files.
  • Add support for shared libraries to dependency install scripts.
  • Developer guide and demo script improvements:
    • Add clean up instructions.
    • Better support existing S3 buckets, with check for same region & ACLs being disabled, and allow setting of bucket policy.
    • Allow HTML generation of results for custom DBC files.

Release v1.0.7

02 Aug 15:00
Compare
Choose a tag to compare

Features:

  • Add Android Automotive (AAOS) support.
  • Add experimental Greengrass V2 support

Bug fixes:

  • Fix always saving data to disk when offline, even when configured not to in the campaign.
  • Fix possible NullPointerException in Android app.

Improvements:

  • Refactor persistent file handling, which now saves files under a subfolder called
    FWE_Persistency in the directory configured in the config file by persistencyPath. Now a
    separate file is saved for each payload file to be uploaded. An extra file PayloadMetadata.json
    is created containing metadata for these files, the schema for which can be found
    here.
  • Reduce Android app minSdk to 21 (Android 5.0).
  • Update AWS C++ SDK to v1.11.111.

Deprecation:

  • Remove the experimental camera feature (-DFWE_FEATURE_CAMERA). This is unsupported and it was
    not being maintained.

Release v1.0.6

12 Jun 12:47
Compare
Choose a tag to compare

Features:

  • Add Android support, including shared library and demonstration app.

Improvements:

  • Change from arn to sync_id for campaign_arn and document_arns, the sync_id being the ARN
    followed by the timestamp of the last update. The change is backwards compatible with older
    versions of the edge agent.
  • Ubuntu package mirror from system used, rather than ports.ubuntu.com.
  • Add root CA and inline credentials support to static config file.
  • Add extra metrics for AWS SDK heap usage, used signal buffer, MQTT messages sent out.
  • Add support for in-process ingestion of external GPS, CAN and OBD PID values when FWE is compiled
    as a shared library.
  • Fix compiler warnings for armhf build.
  • Update Protobuf to v3.21.12, AWS C++ SDK to v1.11.94.

Release v1.0.5

11 May 16:37
Compare
Choose a tag to compare

Bugfixes:

  • RemoteProfiler not always uploading logs

Improvements:

  • Refactor Producer/Consumer architecture, removing the buffer and thread between the
    CANDataSource and the CANDataConsumer. The static config option socketCANBufferSize was
    therefore removed.
  • Add documentation on how to use edge specific metrics.
  • Change from arn to sync_id for all decoder manifest Protobuf fields, the sync_id being the
    ARN followed by the timestamp of the last update. The change is backwards compatible with older
    versions of the edge agent.
  • Improve MISRA C++ 2008, and AUTOSAR C++ compliance.
  • Updated CloudFormation templates to use IMDSv2.

Release v1.0.4

06 Mar 09:42
Compare
Choose a tag to compare

Bugfixes:

  • Fix OBD timers not being reset. If the decoder manifest is empty or DTCs are not collected the OBD
    PID or DTC timers were not reset, causing a 100% CPU and log spam with the following message
    [WARN ] [OBDOverCANModule::doWork]: [Request time overdue by -X ms].
  • Support OBD2 PIDs ECU response in different order than requested. Also accept ECU response if not
    all requested PIDs are answered.
  • Unsubscribe and disconnect from MQTT on shutdown: previously a message arriving during shutdown
    could cause a segmentation fault.

Improvements:

  • Update to Ubuntu 20.04 for the development environment.
  • Add flake8 checking of Python scripts.
  • Improve GitHub CI caching.
  • Improve MISRA C++ 2008, and AUTOSAR C++ compliance.
  • Improve logging: macros used to automatically add file, line number and function.
  • Improve unit test stability, by replacing sleep statements with 'wait until' loops.
  • Removed redundant JSON output code from DataCollection* files.

Work in Progress:

  • Support for signal datatypes other than double, including uint64_t and int64_t.

Release v1.0.3

11 Jan 10:07
adab89b
Compare
Choose a tag to compare

Features:

  • Added OBD broadcast support to send functional rather than physical requests to ECUs to improve compatibility with a broader range of vehicles.
    This behavior does however increase CAN bus load. The config option broadcastRequests can be set to false to disable it.

Bugfixes:

  • Fix CollectionSchemeManager and CollectionInspectionEngine to use monotonic clock
    This now makes check-in and data collection work even when the system time jumps.
    Please note that the timestamp present in check-in and collected data may still represent the system time, which means that newly collected data may
    be sent with a timestamp that is earlier than the previous sent data in case the system time is changed to some time in the past.

Improvements:

  • Logs now show time in ISO 8601 format and UTC.
  • Added optional config logColor for controlling ANSI colors in the logs. Valid values: Auto, Yes, No. Default value is Auto, which will make
    the agent try to detect whether stdout can interpret the ANSI color escape sequences.
  • A containerized version of the edge agent is available from AWS ECR Public Gallery: https://gallery.ecr.aws/aws-iot-fleetwise-edge/aws-iot-fleetwise-edge.
  • Improve CERT-CPP compliance.
  • Improve quick start guide and demo script.
  • Clarify the meaning of the startBit.