Releases: aws/aws-iot-fleetwise-edge
Releases · aws/aws-iot-fleetwise-edge
Release v1.2.0
New features:
- Remote commands for actuators, see the CAN actuators guide and the SOME/IP guide.
- Network agnostic data collection and actuator commands.
- SOME/IP support, see the SOME/IP guide for data collection and commands, the Device shadow proxy for SOME/IP guide, and the CAN over SOME/IP guide.
- String datatype support for both sensor data collection and actuator commands.
- Last Known State (LKS), a lighter method of data collection.
- Custom functions in expressions.
- Store and forward, for conditional upload of collected data.
- UDS DTC data collection.
Breaking changes:
- The
collectionSchemeListTopic
,decoderManifestTopic
,canDataTopic
andcheckinTopic
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 newiotFleetWiseTopicPrefix
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.- For iWave devices, see the iWave guide.
- For Android (including AAOS), see the Android guide.
Release v1.1.2
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.
- Retry MQTT topic subscription when it fails. When FWE starts up, it tries to establish the MQTT
- 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
- If more than one campaign used a ROS2 signal in its expression, only the first campaign would
- 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 to1200
seconds. SetkeepAliveIntervalSeconds
to override it. - Ping timeout default changed from
3000
ms to30000
ms. SetpingTimeoutMs
to override it. - Persistent sessions are now disabled by default. Set
sessionExpiryIntervalSeconds
to a
non-zero value to enable it.
- Keep alive interval changed from
- Add implicit casting between numeric and Boolean data types in expression evaluation. E.g.
1 + true
will equal2
, andfalse || 3
will equaltrue
. - 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
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
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.
- Known limitations:
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 GitHubarmhf
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
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
toOFF
, then usefind_package(AwsIotFwe)
,${AwsIotFwe_INCLUDE_DIR}
and link withAwsIotFwe::AwsIotFwe
. - Non-functional source code improvements:
- Simplify
src/
folder structure, removing sub-namespaces & sub-libraries, and moving unit test files totest/unit/
. - Correct
#include
s usinginclude-what-you-use
. - Move from compile-time mocking to link-time mocking of AWS C++ SDK using Google Mock.
- Simplify
- 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
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 bypersistencyPath
. Now a
separate file is saved for each payload file to be uploaded. An extra filePayloadMetadata.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
Features:
- Add Android support, including shared library and demonstration app.
Improvements:
- Change from
arn
tosync_id
for campaign_arn and document_arns, thesync_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
Bugfixes:
- RemoteProfiler not always uploading logs
Improvements:
- Refactor Producer/Consumer architecture, removing the buffer and thread between the
CANDataSource
and theCANDataConsumer
. The static config optionsocketCANBufferSize
was
therefore removed. - Add documentation on how to use edge specific metrics.
- Change from
arn
tosync_id
for all decoder manifest Protobuf fields, thesync_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
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
, includinguint64_t
andint64_t
.
Release v1.0.3
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 optionbroadcastRequests
can be set tofalse
to disable it.
Bugfixes:
- Fix
CollectionSchemeManager
andCollectionInspectionEngine
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 isAuto
, 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
.