Iopsys building blocks

Iopsys uses a combination of different building blocks to achieve the optimal results.

Overview

The bulding blocks in iopsys are in part developed inhouse, and in parts taken from different sources, such as OpeWRT.

enter image description here

Orange blocks are made by inteno. Light blue are OpenWRT blocks that have been integrated to work with inteno SDK. The Asterisk pbx has been integrated by inteno into iopsys to support Voip.

Iopsys tries to stay as true to the OpenWRT project as much as possible.

Main Components

The main pieces of architecture iopsys relies on heavily are.

UBUS

UBUS provides communication between daemons and applications in iopsys. It consists of a daemon, library and some helpers. We also use the ubus layer to try to abstract away the hardware from the user space applications. A ubus daemon registers to ubus and publishes objects under specific namespace in the bus. Every deamon can provide multiple procedures with various amount of arguments. Daemons can generate events on the bus that different applications can subscribe to.

UCI

UCI Unified Configuration Interface is iopsys configuration user interface database. Uci holds all applications configurations data.

PROCD

procd is the process management daemon . It keeps track of processes started from init scripts (via ubus calls), and can suppress redundant service start/restart requests when the config/environment has not changed.

JUCI

JUCI is a JavaScript-based web interface for broadband routers running iopsys, its made and maintained inteno. JUCI is built with html5, angularjs and bootstrap with owsd and ubus as its backend.

Key points