# Register Devices

Ionoid.io dashboard offers the possibility to manage an entire fleet of devices. By just clicking on buttons from one single page, you will be able to control and remotely deploy applications to hundreds or thousands of devices.

Ionoid.io uses Linux-IoT operating systems and supports multiple flavors that run systemd, the system and service manager for Linux operating system. You can check the supported boards and operating systems.

First you have to register your device(s) on Ionoid.io. It is as simple as clicking on a button, downloading an OS image, flashing the device storage then booting the device.

There is also the possibility to configure your image by chaning the WiFi network(s) password(s), the device name, or informations about cellular network(s). Please follow with the next section that explains it in more details.

# Prepare Registering

On Ionoid.io, devices belong to projects. If you didn't yet create a project, please follow these guidlines. Once you've created a project, open the ADD A DEVICE tab, you will notice 5 sections:

# Project General Informations

Here you can set a name (a hostname) for the device. If you let it blank, the default hostname that is set in the original image will be choosed. You can also prefix a -* to the name to get a random ID at the end of the device hostname, in case you have multiple devices serving the same purpose and you need a different name for each devices (e.g. temp-sensor-1254, temp-sensor-5699, temp-sensor-8445, ... etc).

You can also choose the image that will be flashed into the device. Click on the device model to see images that are available for this model.

Project General Informations Section

# Project Parameters

Used only to display the project name, API key for devices and the API endpoint used by the device.

# General Settings

You can change the default Google DNS and NTP servers that will be used by devices.

# Deployment Settings

Here you can enable/disable two very interesting features that concern deployment of applications:

  • The dual A/B application deployment: if enabled, this will ensure that the application can recover even if the deployment is incomplete or corrupted
  • The application delta update: if enabled, the deployment will only download the parts of code that changed in the application. Leading to a save of time and bandwidth which may be significant.

# Advanced Settings

# WiFi Configuration

You can add up to 5 WiFi networks by clicking on Add a WiFi network, for each network you can set:

  • The network ID (SSID) (required)
  • The network visibility (default to 'not hidden')
  • The network security mode (default to 'No security')
  • The network password (required unless the security mode is set to 'No security')
  • The network priority: networks with higher priority will be preferred. Default is 0. The higher number means higher priority

Add a WiFi Network

You can also add a fallback WiFi network by clicking on Add a fallback WiFi NETWORK, this network will be used in case all other networks are unavailable.

TIP

For development purpose, it is strongly recommended that you set a second WiFi network as a fallback, in case there are some errors. Maybe use your phone wireless as a second WiFi.

# Cellular Configuration

You can add up to 2 cellular networks, for each network you have to specify in order:

  • The country to which the cellular network belongs
  • The network ID (generally the provider name)
  • The APN used for this network ID

Once you choosed the APN, fields 'Plan' and 'Usage' will be filled with the corresponding data. Use this data to confirm that APN you choosed is really the one you are aiming to use.

Add a Cellular Network

WARNING

Selecting an incorrect plan may result in billing issues for your account or prevent connectivity.

# Connectivity Check

If you have cellular connectivity problems or even WiFi related ones, the Connectivity Check feature will allow you to:

  • Monitor connectivity,
  • Try to recover,
  • Or reconfigure the connectivity,
  • And if all fails, reboot the device again.

However rebooting devices should be last resort operation, usually reconfiguring connectivity will solve the problem.

The Connectiviy Check feature supports 4 parameters:

  1. The interval between two successive connectivity checks
  2. The number of failed connectivity checks that will trigger a network reconfiguration
  3. The maximum number of failed network connectivity and reconfiguration that will trigger the Failure Action
  4. The Failure Action to perform on connectivity and reconfiguration limit

Configure ConnectivityChecks

The network reconfiguration operation will:

  • Reset all Network Manager connections
  • Reset all GSM modems and Modem Manager connections

The Failure Action supports the following operations:

  • No action (by default): do not take any action, device state may stay in failure until connectiviy is back
  • Normal reboot: perform a normal reboot operation
  • Force reboot: perform a forced reboot operation by terminating all processes, should cause no dirty file systems
  • Immediate reboot: similar to a hardware reboot, which might result in data loss
  • Normal poweroff: perform a normal poweroff operation
  • Force poweroff: perform a forced poweroff operation by terminating all processes
  • Immediate poweroff: similar to a hardware poweroff operation, which might result in data loss

To be supported soon:

  • Exit: performs a systemd service manager exit call. Use this only with enabled hardware watchdog
  • Force exit: porforms a forced exit by systemd the service manager. Use this only with enabled hardware watchdog

# Boot Configuration

Here you can specify the kernel boot options.

# Project Environment Variables

Here you can set the environment variables that can be used by apps on the target device. So that you have not to hardcode their values into these apps. Think of an endpoint URL that your app will use, say, to grab some data from the internet. If this URL changes in the future, or if you want to use a different service that offers the same data, the only thing you will need to do is to change the environment variable without touching the app.

Add a Cellular Network

Once all configuration done, you can now follow with OS image generation.

# Generate OS Image

To generate the OS image, you have three options:

# Download OS Image

All you have to do is to click on the Download OS to download a ready-to-flash image:

Generate OS Image

Wait a few seconds until the image has been fully generated, then click on the image link to start download:

OS Image Ready

TIP

You can save the current project configuration as the default one by clicking on Save as default project settings.

You can also download the config.json file that has been used to generate the image (not mandatory):

Download OS Config

Once the OS image downloaded, you can flash the device using this image.

# Using Ionoid.io Build Scripts

PREREQUISITE

In order to use the build scripts, you will have to install the following tools first:

  • jq which is a lightweight and flexible command-line JSON processor.
  • multipath-tools to create device maps from partition tables.

If you want to build your own OS, you will first need to generate the config.json file corresponding to the current project configuration. For that, simply click on Download config file.

WARNING

Please keep in mind that the config.json file contains your project credentials and secrets, do not share this file with untrusted parties.

Now, you must have on hand an OS image to use, you have two options:

  • Use a Raspbian image that you can download from here.
  • Use SealOS (Secure Linux-IoT OS): SealOS is a secure Linux-IoT operating system that is distributed to some Ionoid.io partners for now. A more general purpose version will be available for free soon. To get your SealOS image please contact us at contact@ionoid.io.

NOTE

Ionoid.io Raspbian images are adapted from the official Raspbian images. The only difference is that Ionoid.io Raspbian images use NetworkManager to handle network connectivity. Also, the openresolv package has been removed because of incompatibility with NetworkManager.

WARNING

  • Ionoid.io network connectivity works only if NetworkManager is installed.
  • Default user and password for Raspbian images are pi and raspberry. Make sure to change them after you successfully login into your Raspbian OS.

Once you've got your OS image, open your favorite console and follow the following steps:

  • Create a working directory and access it:
mkdir -p ionoid-build && cd ionoid-build
  • Copy (or move) your image to that directory:
cp /path/to/os/image.zip .
  • Copy (or move) the downloaded config.json file to the same directory:
cp /path/to/file/config.json .
  • Run the build script to build your final configured Linux-IoT image. Make sure to enter the root password when asked (superuser privileges are required to mount the image in order to configure it). In the followig command, we suppose that you didn't rename the config.json file, and that the image name is image.zip:
curl https://github.install-ionoid.sdk.ionoid.net/install-tools.bash | IMAGE=image.zip CONFIG=config.json bash

Once the build process finishes, you will find the new patched image in the output directory. You can now flash the device using this image.

# Installing on an Already Running Linux System

To be added soon

# Flash OS Image to Storage

Please follow these guidlines to flash the generated OS image to the storage of your device.

# Boot the device

Once the device flashed with the new OS image, boot your device and observe the project details page on the dashboard, you will notice that the device appeared in the list of devices:

Boot the Device

Now you can control you device from the dashboard using the control menu that is above the device list.

Have Questions?

We're always happy to help with IoT projects or other questions you might have! Check our documentation, contact our support team at support@ionoid.io, or our sales team sales@opendevices.io. You can also ask questions on our forums or open an issue on Github.