Table of Contents

Introduction:

What is IOhubOS?

IOhubOS is a Linux-based distro designed for Industrial and IIoT environments, 
ready to run Docker-based applications.

Why am I testing IOhubOS?

  • I tested the EZvpn IOX1/IOhub at work and think it is a very powerful IIoT platform. When I heard about the IOhubOS release, I wanted to test it out and see how I could leverage the open source IOhub firmware.
  • Below are the reasons why I think the EZvpn IOX1 is a great device for Remote Assistance and IIoT Data Management.
    • The VPN service was quick and easy to set up
    • IOhub is a very powerful IIoT platform that made it very easy manage data from the field
    • The IOhub documentation is very well done and easy to follow due to the tutorial style
  • Because of the above reasons, I thought it would be worthwhile to test out IOHubOS

Hardware:

IOhubOS Minimum Hardware Requirements:

From IOhubOS GitHub Repo

  • x86_64 architecture (ARM compatibility will follow)
  • 1GbByte of RAM
  • 16GByte of storage
  • One or two network adapters

Hardware I used:

Software:

Documentation:

Steps Taken:

Flash installer.img to USB flash drive:

  • IOhubOS Installation Steps GitHub Page
  • Download installer image

  • Download Rufus

  • Open Rufus and select the correct USB device in Device dropdown
  • On Rufus window, click the Select button in Boot selection section

  • On Open pop up, select the installer.img file that was saved earlier and click Open button

  • On Rufus window, click START

Install IOHubOS:

  • Connect the USB hub to the USB port on the UNO 2271G
  • Connect the USB flashed with the installer.img to the USB hub connected to the UNO 2271G
  • Connect keyboard to the USB Hub connected to the UNO 2271G
  • Connect monitor to HDMI port on UNO 2271G
  • Connect power to the the UNO 2271G
    • Wiring Diagram - TODO
  • Click power button
  • Run iohub-installer <destination disk device> [<first network adapter>]
    • If destination disk device is unknown, run the lsblk command
    • The run command for the UNO 2271G is iohub-installer /dev/mmcblk0
  • Enter new root password
  • Once IOHubOS is installed, it will ask you to press enter to shut down the system
    • I got the following errors after pressing enter:
        [FAILED] Failed unmounting /run/live/medium
        [410.401822] [760] Failed to unmount /run/live/medium: Device or resource busy
        [410.406843] systemd-shutdown[1]: could not detach loopback /dev/loop0: Device or resource busy
        [410.409277] systemd-shutdown[1]: Failed to finalize file systems, loop devices, ignoring
      
  • After a forced shutdown, I removed the USB and rebooted the UNO 2271G
  • Once the system is started, after a few seconds, you will see on the console a message with the name of the network interface used to connect to the network and its IP address
    • Example: Eth0:192.168.1.68
  • Once IP address was identified, I used PuTTY to connect

Configure IOHubOS:

  • Most of the IOHubOS can be configured by editing the /iohub/envvars/ file using the nano /iohub/envvars/ command

  • I changed the following env variables:

IOHUBOS_TIMEZONE='Canada/Pacific'
IOHUBOS_NETWORK_MODE='router'

#Only for router mode.
#Only static mode is supported.
IOHUBOS_ETH1_DEVICE='enp2s0'
IOHUBOS_ETH1_IP='192.168.178.253'
IOHUBOS_ETH1_NETMASK='255.255.255.0' 

## === dhcp server configuration ===
IOHUBOS_DHCP_SERVER_ENABLED='true'          # dhcp server on eth1
IOHUBOS_DHCP_SERVER_FROM='192.168.178.200'  # e.g. 10.11.12.100
IOHUBOS_DHCP_SERVER_TO='192.168.178.250'    # e.g. 10.11.12.199
IOHUBOS_DHCP_SERVER_DNS='8.8.8.8'           # comma separated list, e.g. 192.168.190.1, 8.8.8.8

## === firewall configuration ===
IOHUBOS_FIREWALL_ROUTER_TO_INTERNET = 'true'
  • If you do not know the name of the ETH1 network device, you can run the lshw -class network -short command to get a list of available network devices.
    • My second ethernet device name is enp2s0
  • After these steps, the IOHubOS is running

Challenges:

  • SOLVED-Challenge 1 - DHCP server is not working
    • SOLUTION: define the DNS in the environment variables file. I left it undefined initially
  • SOLVED-Challenge 2 - nable to connect to the internet when connected to the ETH1
    • SOLUTION: define the DNS in the environment variables file. I left it undefined initially

Summary:

  • This OS is realetively easy to install and configure
  • The GitHub Readme, documentation and tutorials are easy to follow
  • I look forward to testing out the VPN functionality once that is released
  • Thanks to the IOHubOS developers as they were easy to get a hold of and quick to reply to my question

Next Steps:

  • Deploy Docker applications on the IOHubOS
  • Test out the VPN functionality once it is released

Comments

Feel free to comment, provide constructive feedback, or report an error/typo in the post.

All comments can be accessed via the issues page.


<
Previous Post
Frankenstein Automation Gateway Test
>
Next Post
Testing out Tentacle PLC