E10 Migration

This section covers the major high-level differences between the SNAPconnect E10 and the SNAPconnect E20 gateways.

Initial Log In

Depending on what version of software your SNAPconnect E10 is running, you’re probably either used to logging in as root or snap. If you’re on a newer SNAPconnect E10 and log in as snap, the first time you logged in you weren’t prompted for a password. It was up to you to set a password.

The default on the SNAPconnect E20 gateway is to log in with the username snap and the password synapse. After logging in the first time, you will immediately be required to provide a new password. This is a security feature to ensure gateways are not deployed with known default passwords.

SNAPtoolbelt

The SNAPconnect E20 gateway ships with an additional utility: SNAPtoolbelt. SNAPtoolbelt is a collection of scriptable command line tools for interacting with devices in a SNAP network. You can issue commands to SNAP devices, including your bridge node, with SNAPtoolbelt from the command line. For example, you can send a ping to the SNAP network using the command:

snap network ping

BusyBox vs. Ubuntu

The SNAPconnect E10 was BusyBox based and did not provide package management. The SNAPconnect E20 runs Ubuntu 14.04 LTS, which provides APT package management. This means installation of new software is as simple as running:

sudo apt-get install <package-name>

Security

There are many APT packages available that can help you secure the SNAPconnect E20 gateway. For example, you can install the Uncomplicated Firewall package:

sudo apt-get install ufw

You can also install and update python packages via pip:

sudo -H pip install --extra-index-url https://update.synapse-wireless.com/pypi/ pycrypto

One of the most significant benefits of remote updates is the ability to address security updates quickly and efficiently. When vulnerabilities for SSL or other security packages are discovered, updates are generally available via APT within days of announcement. You can have security patches installed automatically using the unattended-upgrades package.

Synapse Repository

In addition to the packages offered by Ubuntu and the Python repositories, Synapse Wireless hosts our own APT and pip packages specifically for the gateways. You do not have to specify any additional options to apt-get packages from our server; however for pip you will need to add our repo as an --extra-index-url:

sudo -H pip install --extra-index-url https://update.synapse-wireless.com/pypi/ snapconnect

Network Connectivity

The SNAPconnect E20 comes with Wi-Fi and cellular support. It has integrated support for Wi-Fi and optional cell modem. Many additional USB, Wi-Fi and cell modem drivers and firmware are included on the device or available via the APT repository.

Porting SNAPconnect Applications

The SNAPconnect E20 comes with Python 2.7 and the latest version of SNAPconnect, so you shouldn’t have to change much to move your application over. A few things that you may have to modify are:

  • How to start the SNAPconnect application

  • What serial port to open

  • How to control the LEDs and read the buttons

Starting/Stopping Applications

Previously on the SNAPconnect E10, having an application start on boot and stop on shutdown or reboot was done via creating scripts in /etc/init.d/, such as /etc/init.d/S999snap to start and /etc/init.d/X999snap to stop.

On the Ubuntu based SNAPconnect E20, you can continue to do this however this method is deprecated in favor of using Upstart. Upstart allows you to control your SNAPconnect application as a service. Upstart makes it easier to configure your application to do things like automatically restart if it terminates unexpectedly, or start after a particular subsystem is available.

See the /gateways/e20/common-linux section for more information.

Changes to serial_open

When migrating your SNAPconnect application over, one minor change you may need to make in your script is the serial port you open via serial_open. On the SNAPconnect E10, you would call one of:

serial_open(1, '/dev/ttyS1')

or

serial_open(1, '/dev/ttyS0')

On the SNAPconnect E12 and SNAPconnect E20, the serial ports vary depending on which gateway you’re on, but are always symlinked to /dev/snap1 and /dev/snap0. This allows you to make your script portable:

serial_open(1, '/dev/snap1')

and

serial_open(1, '/dev/snap0')

Going forward on SNAPconnect gateways, these devices are guaranteed to point to UART1 and UART0 on the SNAP bridge node.

LEDs and Button Interaction

The SNAPconnect E20 handles toggling LEDs and reading buttons differently from the SNAPconnect E10. Your SNAPconnect (or other scripts you have on your gateway) application may need to update the OS calls it uses to read the button or toggle LEDs. Consult the “LEDs and Buttons” section for more details.