Testing out IOHubOS
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.
- Excerpt from IOhubOS GitHub Repo
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:
- Advantech UNO 2271G
- USB Hub
- 24Vdc Power Supply
- USB Flash Drive
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 theSelect
button inBoot selection
section -
On
Open
pop up, select theinstaller.img
file that was saved earlier and clickOpen
button -
On
Rufus
window, clickSTART
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
- If destination disk device is unknown, run the
- 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
- I got the following errors after pressing enter:
- 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
- Example:
- 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 thenano /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
- My second ethernet device name is
- 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.