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, 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 ~/Downloads/GatewayEngine.v1.4.9.tar.gz
drwxr-xr-x  0 jenkins jenkins     0 Mar 23 16:35 gateway-engine/
-rw-r--r--  0 jenkins jenkins  3961 Mar 23 16:35 gateway-engine/otau.py
-rw-r--r--  0 jenkins jenkins 11344 Mar 23 16:35 gateway-engine/LICENSE.txt
-rw-r--r--  0 jenkins jenkins     1 Mar 23 16:35 gateway-engine/requirements.txt
-rw-r--r--  0 jenkins jenkins  4429 Mar 23 16:35 gateway-engine/setup.py
drwxr-xr-x  0 jenkins jenkins     0 Mar 23 16:35 gateway-engine/specs/
-rw-r--r--  0 jenkins jenkins   252 Mar 23 16:35 gateway-engine/specs/gwe.spec
-rwxr-xr-x  0 jenkins jenkins  6264 Mar 23 16:35 gateway-engine/packager.sh
drwxr-xr-x  0 jenkins jenkins     0 Mar 23 16:35 gateway-engine/deps/
-rw-r--r--  0 jenkins jenkins 482043 Mar 23 16:35 gateway-engine/deps/device-client.v1.4.24.tar.gz
-rw-r--r--  0 jenkins jenkins   1482 Mar 23 16:35 gateway-engine/deps/acp.v3.tar.gz
drwxr-xr-x  0 jenkins jenkins      0 Mar 23 16:36 gateway-engine/apps_to_install/
-rw-r--r--  0 jenkins jenkins 7447011 Mar 23 16:36 gateway-engine/apps_to_install/gmq.v1.1.43.tar.gz
-rw-r--r--  0 jenkins jenkins   35701 Mar 23 16:35 gateway-engine/apps_to_install/meld3.v102.tar.gz
-rw-r--r--  0 jenkins jenkins   42227 Mar 23 16:35 gateway-engine/apps_to_install/elementtree.v126-20050316.tar.gz
-rw-r--r--  0 jenkins jenkins  461249 Mar 23 16:35 gateway-engine/apps_to_install/supervisor.v30.tar.gz
-rw-r--r--  0 jenkins jenkins    8508 Mar 23 16:35 gateway-engine/gwe.build
-rwxr-xr-x  0 jenkins jenkins    6346 Mar 23 16:35 gateway-engine/install.sh
drwxr-xr-x  0 jenkins jenkins       0 Mar 23 16:35 gateway-engine/init/
-rwxr-xr-x  0 jenkins jenkins    1113 Mar 23 16:35 gateway-engine/init/init.sh
-rwxr-xr-x  0 jenkins jenkins     520 Mar 23 16:35 gateway-engine/init/S80ftdi
-rw-r--r--  0 jenkins jenkins    8540 Mar 23 16:35 gateway-engine/init/supervisord.conf
-rwxr-xr-x  0 jenkins jenkins    4849 Mar 23 16:35 gateway-engine/init/supervisor
-rw-r--r--  0 jenkins jenkins     298 Mar 23 16:35 gateway-engine/init/gwe.conf
-rwxr-xr-x  0 jenkins jenkins     500 Mar 23 16:35 gateway-engine/init/S90supervisord
drwxr-xr-x  0 jenkins jenkins       0 Mar 23 16:35 gateway-engine/GatewayEngine/
-rwxr-xr-x  0 jenkins jenkins   15265 Mar 23 16:35 gateway-engine/GatewayEngine/installer.py
-rwxr-xr-x  0 jenkins jenkins    1134 Mar 23 16:35 gateway-engine/GatewayEngine/constants.py
-rw-r--r--  0 jenkins jenkins     118 Mar 23 16:35 gateway-engine/GatewayEngine/__version__.py
-rw-r--r--  0 jenkins jenkins   10814 Mar 23 16:35 gateway-engine/GatewayEngine/utils.pyc
-rw-------  0 jenkins jenkins     250 Mar 23 16:35 gateway-engine/GatewayEngine/Gateway.cfg
-rwxr-xr-x  0 jenkins jenkins   11089 Mar 23 16:35 gateway-engine/GatewayEngine/utils.py
-rw-r--r--  0 jenkins jenkins   12387 Mar 23 16:35 gateway-engine/GatewayEngine/tarball.py
-rwxr-xr-x  0 jenkins jenkins      36 Mar 23 16:35 gateway-engine/GatewayEngine/__init__.py
-rw-r--r--  0 jenkins jenkins    2318 Mar 23 16:35 gateway-engine/GatewayEngine/constants.pyc
-rw-r--r--  0 jenkins jenkins   19530 Mar 23 16:35 gateway-engine/GatewayEngine/cli.py
-rw-r--r--  0 jenkins jenkins      43 Mar 23 16:35 gateway-engine/GatewayEngine/Engine.config
-rwxr-xr-x  0 jenkins jenkins   45403 Mar 23 16:35 gateway-engine/GatewayEngine/GatewayEngine.py
-rw-r--r--  0 jenkins jenkins    2557 Mar 23 16:35 gateway-engine/GatewayEngine/README.md
-rw-r--r--  0 jenkins jenkins   13579 Mar 23 16:35 gateway-engine/GatewayEngine/tarball.pyc
-rw-r--r--  0 jenkins jenkins 1140573 Mar 23 16:35 gateway-engine/pip-8.1.2.tar.gz
-rw-r--r--  0 jenkins jenkins   12537 Mar 23 16:35 gateway-engine/ez_setup.py
-rw-r--r--  0 jenkins jenkins   24638 Mar 23 16:35 gateway-engine/README.md
-rw-r--r--  0 jenkins jenkins      17 Mar 23 16:35 gateway-engine/requirements-osx.txt
drwxr-xr-x  0 jenkins jenkins       0 Mar 23 16:35 gateway-engine/test/
-rw-r--r--  0 jenkins jenkins    5474 Mar 23 16:35 gateway-engine/test/test_gwe.py
-rwxr-xr-x  0 jenkins jenkins   26141 Mar 23 16:35 gateway-engine/test/test_gateway_engine.py
-rw-r--r--  0 jenkins jenkins       0 Mar 23 16:35 gateway-engine/test/install.sh
drwxr-xr-x  0 jenkins jenkins       0 Mar 23 16:35 gateway-engine/test/dqa-gwe/
-rwxr-xr-x  0 jenkins jenkins    3730 Mar 23 16:35 gateway-engine/test/self_test.py
-rw-r--r--  0 jenkins jenkins       0 Mar 23 16:35 gateway-engine/test/__init__.py
-rwxr-xr-x  0 jenkins jenkins    5604 Mar 23 16:35 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.
Release Notes  
1.4.11 Hotfix. Added dataports section of gwe config file upgrade/OTAU path.  
1.4.8 Added GDC to version string in engine_report.  
1.4.7 Improvements to device_report.  
1.4.4 Fixed some installation issues. Using python tarfile module as portable way to untar source distributions.  
1.4.3 Installation fixes for better platform support.  
1.4.2 Hotfix. Fixing problem where dataport names were wrong.  
1.4.1 Some logging improvements. Added AtomicConfigParser to the deps/ directory for install. Added support for custom dataport names in gwe.  
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..  
1.3.4 Added --mac-address to CLI.  
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.  
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.  
1.2.3 Lots of support for building custom gateway apps via CLI.  
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
$