Release Packages

This section contains links and downloadable files that are referenced throughout this documentation site. Below are sections outlining the various options when choosing a copy of Gateway Engine. The packages all contain the same version of Gateway Engine, but with specific Custom Gateway Applications that are packaged into it. Each option also contains an additional option of the git branch its build is based - master or dev. Release packages based on the dev branch are for development purposes and come with no guarantee or warranty. Releases based on the master branch are stable and undergo a comprehensive QA process.

Downloads

The download options below contain full Gateway Engine release packages.

To download the latest version of this release, click the button below.


Note

If your gateway has an internet connection and no browser to load this page and click the button with, the following command can be executed on the gateway to download the release package. It will quietly download the release and print the release name when it finishes.

basename $(curl -v -k --remote-name $(curl --silent -k https://s3-us-west-2.amazonaws.com/exosite-client-downloads/gateway-engine-release-area/gmq-master/latest.lnk) 2>&1 | awk '/GET/{print $(NF-1)}')

Previous Releases

If the download button doesn’t work in your browser, we also keep a downloads area for current and previous releases you can access by clicking here. The latest release is the one with the highest numerical designator and is also specified in the latest.lnk file.

Release Package Overview

A release package comes in the form of a compressed tar file. Unpacking this tar file and running the included installer will install Gateway Engine and all of its dependencies. The Gateway Engine software won’t start/execute until the machine has been rebooted. Most public releases of Gateway Engine come with an example program that other sections (Over the Air Updates (OTAU), Custom Gateway Applications) in this documentation refer to.

Here’s what a typical release package of Gateway Engine looks like:

Example (dev machine)

$ tar tvf GatewayEngine.v1.6.6.tar.gz
drwxr-xr-x jenkins/jenkins   0 2018-04-17 09:57 gateway-engine/
-rw-r--r-- jenkins/jenkins 5785 2018-04-17 09:57 gateway-engine/otau.py
-rw-r--r-- jenkins/jenkins 11344 2018-04-17 09:57 gateway-engine/LICENSE.txt
-rw-r--r-- jenkins/jenkins     1 2018-04-17 09:57 gateway-engine/requirements.txt
-rw-r--r-- jenkins/jenkins  4354 2018-04-17 09:57 gateway-engine/setup.py
drwxr-xr-x jenkins/jenkins     0 2018-04-17 09:57 gateway-engine/specs/
-rw-r--r-- jenkins/jenkins   252 2018-04-17 09:57 gateway-engine/specs/gwe.spec
-rw-r--r-- jenkins/jenkins   520 2018-04-17 09:57 gateway-engine/specs/resources.yaml
-rwxr-xr-x jenkins/jenkins  6264 2018-04-17 09:57 gateway-engine/packager.sh
drwxr-xr-x jenkins/jenkins     0 2018-04-17 09:57 gateway-engine/deps/
-rw-r--r-- jenkins/jenkins 595690 2018-04-17 09:57 gateway-engine/deps/device-client.v1.5.9.tar.gz
-rw-r--r-- jenkins/jenkins   2469 2018-04-17 09:57 gateway-engine/deps/acp.v4.tar.gz
drwxr-xr-x jenkins/jenkins      0 2018-04-17 09:58 gateway-engine/apps_to_install/
-rw-r--r-- jenkins/jenkins  34956 2018-04-17 09:58 gateway-engine/apps_to_install/gmq.v1.3.8.tar.gz
-rw-r--r-- jenkins/jenkins  35701 2018-04-17 09:57 gateway-engine/apps_to_install/meld3.v102.tar.gz
-rw-r--r-- jenkins/jenkins  42227 2018-04-17 09:57 gateway-engine/apps_to_install/elementtree.v126-20050316.tar.gz
-rw-r--r-- jenkins/jenkins 461249 2018-04-17 09:57 gateway-engine/apps_to_install/supervisor.v30.tar.gz
-rw-r--r-- jenkins/jenkins   8558 2018-04-17 09:57 gateway-engine/gwe.build
-rwxr-xr-x jenkins/jenkins   3372 2018-04-17 09:57 gateway-engine/install.sh
drwxr-xr-x jenkins/jenkins      0 2018-04-17 09:57 gateway-engine/init/
-rwxr-xr-x jenkins/jenkins   1097 2018-04-17 09:57 gateway-engine/init/init.sh
-rw-r--r-- jenkins/jenkins   8540 2018-04-17 09:57 gateway-engine/init/supervisord.conf
-rwxr-xr-x jenkins/jenkins   4849 2018-04-17 09:57 gateway-engine/init/supervisor
-rw-r--r-- jenkins/jenkins    298 2018-04-17 09:57 gateway-engine/init/gwe.conf
-rwxr-xr-x jenkins/jenkins    500 2018-04-17 09:57 gateway-engine/init/S90supervisord
drwxr-xr-x jenkins/jenkins      0 2018-04-17 09:57 gateway-engine/GatewayEngine/
-rwxr-xr-x jenkins/jenkins  21883 2018-04-17 09:57 gateway-engine/GatewayEngine/installer.py
-rwxr-xr-x jenkins/jenkins   2737 2018-04-17 09:57 gateway-engine/GatewayEngine/constants.py
-rw-r--r-- jenkins/jenkins    118 2018-04-17 09:57 gateway-engine/GatewayEngine/__version__.py
-rw-r--r-- jenkins/jenkins  11443 2018-04-17 09:58 gateway-engine/GatewayEngine/utils.pyc
-rw-r--r-- jenkins/jenkins    712 2018-04-17 09:57 gateway-engine/GatewayEngine/Gateway.cfg
-rwxr-xr-x jenkins/jenkins  11814 2018-04-17 09:57 gateway-engine/GatewayEngine/utils.py
-rw-r--r-- jenkins/jenkins  20592 2018-04-17 09:57 gateway-engine/GatewayEngine/tarball.py
-rwxr-xr-x jenkins/jenkins     36 2018-04-17 09:57 gateway-engine/GatewayEngine/__init__.py
-rw-r--r-- jenkins/jenkins   3275 2018-04-17 09:58 gateway-engine/GatewayEngine/constants.pyc
-rw-r--r-- jenkins/jenkins  20925 2018-04-17 09:57 gateway-engine/GatewayEngine/cli.py
-rw-r--r-- jenkins/jenkins     43 2018-04-17 09:57 gateway-engine/GatewayEngine/Engine.config
-rwxr-xr-x jenkins/jenkins  60690 2018-04-17 09:57 gateway-engine/GatewayEngine/GatewayEngine.py
-rw-r--r-- jenkins/jenkins   2557 2018-04-17 09:57 gateway-engine/GatewayEngine/README.md
-rw-r--r-- jenkins/jenkins  21137 2018-04-17 09:58 gateway-engine/GatewayEngine/tarball.pyc
-rw-r--r-- jenkins/jenkins 1197370 2018-04-17 09:57 gateway-engine/pip-9.0.1.tar.gz
-rw-r--r-- jenkins/jenkins   12537 2018-04-17 09:57 gateway-engine/ez_setup.py
-rw-r--r-- jenkins/jenkins   24809 2018-04-17 09:57 gateway-engine/README.md
-rw-r--r-- jenkins/jenkins      17 2018-04-17 09:57 gateway-engine/requirements-osx.txt
drwxr-xr-x jenkins/jenkins       0 2018-04-17 09:57 gateway-engine/test/
-rw-r--r-- jenkins/jenkins    5474 2018-04-17 09:57 gateway-engine/test/test_gwe.py
-rwxr-xr-x jenkins/jenkins   27455 2018-04-17 09:57 gateway-engine/test/test_gateway_engine.py
-rw-r--r-- jenkins/jenkins       0 2018-04-17 09:57 gateway-engine/test/install.sh
-rwxr-xr-x jenkins/jenkins    3730 2018-04-17 09:57 gateway-engine/test/self_test.py
-rw-r--r-- jenkins/jenkins       0 2018-04-17 09:57 gateway-engine/test/__init__.py
-rwxr-xr-x jenkins/jenkins    5826 2018-04-17 09:57 gateway-engine/test/test_engine.py

Notice the various sections of the release tarball from the above listing. There is typically only one section at the top-level of the tarball and that’s the gateway-engine/ directory.

At the gateway-engine/ directory level, there’s

install.sh
setup.py
GatewayEngine/
apps_to_install/
init/

The install.sh script (roughly) does the following in this order:

  • Run the init/init.sh script.
  • Run the pre_install_commands.sh script.
  • Install all tarballs in apps_to_install/.
  • Install GatewayEngine with setup.py.
  • Run the post_install_commands.sh script.

If you want to simply install everything needed to get your gateway data to Exosite promptly, we recommend executing install.sh. This will ensure all dependencies and programs get installed. Once complete, the gateway will need to be rebooted so all initializations can be executed. After a reboot, supervisord will be started by the linux init.d subsystem. Once supervisord is running, it will start GatewayEngine as well as any other program that it installed from the apps_to_install directory.

Note

If you want to manually start GatewayEngine you can use the same command that supervisord uses: gwe. If Supervisor is installed on the gateway prior to running the install.sh installer, then gateway engine installer overwrites it.

In the next section, we’ll download the latest version of one of Exosite’s public releases of Gateway Engine that contains an example application called coffee_reporter. This example application illustrates how Custom Gateway Applications fit into Gateway Engine’s run-time framework.

Release Notes

This section contains release notes for each release of Gateway Engine. The subsections are broken down by release and contain notes about known bugs that were fixed and new features added.

Notes on current and previous releases of Gateway Engine.
Date Version Notes  
2018-04-17 1.6.6 Update ota_state in fetch_status when tarball exists. Logging improvements.  
2018-04-11 1.6.5 Handle case where GWE crashes when there is no install.sh file in the tarball.  
2018-03-27 1.6.4 Release/publishing updates. No functional change.  
2018-03-27 1.6.3 Additional support for bundled OTAUs. Fixed a config file migration issue.  
2018-03-14 1.6.2 Hotfix. Fixed copy-paste error. No longer send ota_state to fetch_status when there’s no OTA in progress. Logging fixes. Fixed update_interval bug where 400 responses would corrupt GWE’s main config file.  
2018-01-11 1.6.1 Release/publishing updates. No functional change.  
2018-01-10 1.5.24 Installer can now find install.sh one-level down in tarball structure. Fixed gwe -e. Added support for bundling (gwe –bundle). During OTAU of gwe, supervisord is restarted. Added gwe_debug resource/dataport for stacktraces. Cruft removal. All upgrade logic now in otau.py. Added otau release areas. Updated resources.yaml for better defaults.  
2017-11-14 1.5.23 Content downloads are streamed direct to disk instead of being stored in RAM, then written. Downloads are much faster now.  
2017-10-23 1.5.22 Release/publishing updates. No functional change.  
2017-10-21 1.5.21 Release/publishing updates. No functional change.  
2017-10-21 1.5.20 Fix to incorrect variable name not caught in review (GWLog). Removed throttle check.  
2017-10-21 1.5.19 Added code comments.  
2017-10-20 1.5.18 Fix to extract_path bug. Logging improvements.  
2017-10-17 1.5.17 Added option to change to extract_path for OTAUs (default=`/tmp`). Fixed CLI printing of installed apps. Fixed startup case where GWE main config file missing. Using AtomicConfigParser as default parser in GWE now.  
2017-10-17 1.5.16 Release/publishing updates. No functional change.  
2017-09-29 1.5.15 Release/publishing updates. No functional change.  
2017-09-29 1.5.14 Fixed GWE version reported in dataport to semantic style with GWE+GDC. Changed ROGUE_APP, etc. tags to be more clear, self-documenting. Using AtomicConfigParser in the GWE installer. Added python version log message to install.sh for support debugging.  
2017-09-06 1.5.13 MuranoCLI fix to resources.yaml. No functional change.  
2017-09-01 1.5.12 MuranoCLI fix to resources.yaml. No functional change.  
2017-08-15 1.5.11 MuranoCLI fix to resources.yaml. No functional change.  
2017-07-14 1.5.9 Release/publishing updates. No functional change.  
2017-07-13 1.5.8 App installation status improvements to fetch_status. Fixed a CIK storage issue where GWE would clear it if it got a 400 response. Fixed the OTAU timeout (default=20 minutes).  
2017-07-07 1.5.7 Release/publishing updates. No functional change.  
2017-05-26 1.5.6 Release/publishing updates. No functional change.  
2017-05-26 1.5.5 Release/publishing updates. No functional change.  
2017-05-26 1.5.4 Release/publishing updates. No functional change.  
2017-05-26 1.5.3 Add date command output to the device_info so we can know the system clock. Started publishing OTAU tarballs.  
2017-05-02 1.5.2 Add support for Murano’s Advanced Device Connectivity. CLI improvements. Upgrade version of pip to 9.0.1.  
2017-03-23 1.4.11 Hotfix. Added dataports section of gwe config file upgrade/OTAU path.  
2017-01-27 1.4.8 Added GDC to version string in engine_report.  
2017-01-20 1.4.7 Improvements to device_report.  
2017-01-16 1.4.4 Fixed some installation issues. Using python tarfile module as portable way to untar source distributions.  
2017-01-16 1.4.3 Installation fixes for better platform support.  
2017-01-13 1.4.2 Hotfix. Fixing problem where dataport names were wrong.  
2017-01-13 1.4.1 Some logging improvements. Added AtomicConfigParser to the deps/ directory for install. Added support for custom dataport names in gwe.  
2016-12-08 1.3.9 Some logging and CLI fixes/improvements. There were some breakages in the ability to OTAU gwe due to a bug in the usage_report. This bug caused the /tmp/ifaces.db file to grow too large and, as a result, cause gwe to run out of memory when sending its report and OOM would kill it. In order to work around this problem, running the command rm /tmp/ifaces.db is sufficient to clear out the usage database..  
2016-12-06 1.3.4 Added --mac-address to CLI.  
2016-12-06 1.3.2 No longer doing hard replace on the . character in OTAU version string. Added python setup.py gdc for installing dev tools for building custom gateway apps.  
2016-12-01 1.3.1 Changed spec/ directory to specs/, which is what MuranoCLI expects by default. Added unit tests. Hotfix for relative import in setup.py. CLI moved to its own module. Fixing tarball cleanup after building custom app.  
2016-11-03 1.2.3 Lots of support for building custom gateway apps via CLI.  
2016-09-30 1.1.4 Fixed ‘environment’ option in gwe.conf so the system runtime env propagates to forked processes. Re-enabled the usage_report feature (beta) to show new, re-worked behavior. Added gwe --set-product-id <PRODUCT_ID> cli to configure Gateway Engine for use with Murano. Added gwe --gateway-cik cli to retrieve Gateway Engine’s current CIK. Added fetch_status alias to Gateway Engine model. Gateway Engine will write the STDOUT/STDERR of any OTAU install.sh script to this new alias. Improved upgrade and OTAU for gwe. Upgrades retain configurations from previous installation. Upgrading from a previous release with a newer Release Package can be done by adding touch file touch gateway-engine/THIS_IS_AN_OTAU.txt before executing install.sh.User agent now defaults to ‘GatewayEngine-v<VERSION>’. Overrides to this default are supported via the gwe --set-user-agent <USER_AGENT> cli and can be viewed with the gwe --engine-conf command. Reverting to default User-Agent can be done with gwe --set-user-agent \'\'. The ‘.’ character is no longer illegal to use in the version string of an OTAU app. Gateway Engine now installs pip and setuptools during Release Package installation. Added framework for Docker-based, virtualized automated test environment.  

Changing a gateway’s uuid or iface configuration has been supported by Gateway Engine since the iface option was added, but has been error prone and subject to confusion.

If ever during development of a gateway IoT solution you change the serial number scheme of the device fleet moving forward, you might need to change the serial number of a given gateway. Gateway Engine can be configured to use an interface (e.g. eth0, wlan0, ppp0, etc.) MAC address as the serial number with the iface option, or configured to use a custom serial number with the uuid option.

When Gateway Engine starts up, it checks for a uuid option. If one is not set (i.e. it is an empty string) it checks for an iface option. If neither are set, Gateway Engine refuses to run and exits -1.

In order to change the serial number of a gateway, the gateway administrator has to first ensure that uuid field is empty.

To check the current serial number setting, checking the uuid option in the Gateway Engine config file can be done with the following command.

$ gwe --gateway-cfg
[device]
cik = f1d4f10f3ca413caa08bba34c91d095d010bcd32
model = GatewayEngine_V1
vendor = gateway-engine-demo
uuid = 00:2F:AC:43:55:A0
iface = eth0

The following command will clear the current serial number from the Gateway Engine config file.

gwe --set-uuid \'\'

Check the config file again to confirm it has been set to an empty string.

$ gwe --gateway-cfg
[device]
cik = f1d4f10f3ca413caa08bba34c91d095d010bcd32
model = GatewayEngine_V1
vendor = gateway-engine-demo
uuid = ''
iface = eth0

Now that the serial number has been cleared, the gateway administrator can either choose to use a different interface’s MAC address with by changing the iface option with the following command.

$ gwe --set-iface wlan0
$

Or, if a custom serial number is desired, one can be configured with the following command.

$ gwe --set-uuid anyserial!@#$%^&*()number
$