Skip to content

inxware/ert-components

Repository files navigation

About inxware

Why use inxware?

inxware is a powerful solution helping you to rapidly develop real-time and data-intensive firmware for embedded devices. It is in active use across many sectors, including industrial IoT, embedded AI and machine learning systems, smart buildings, smart energy products, and advanced control systems.

It already supports devices ranging from basic microcontrollers (e.g. NXP Kinetis, STM32, ESP32, etc.) through Arduino, Raspberry Pi, and Android tables, all the way to full Windows/Linux PCs and containerised environments, allowing you to build products of any complexity.

The inxware development suite includes a powerful no-code IDE called Lucid, to help you to assemble the exact components you require for your application - potentially without ever needing to write any code. Our related Appland community gallery helps inxware users to share their applications. It is not essential to use Lucid with inxware, but it can provide significant development acceleration for many typical cases.

What is inxware?

inxware encompasses an ecosystem of software, including:

  • A graphical, no-code IDE called Lucid for creating your application(s) by connecting components together and adding control logic.
  • A event-driven runtime application called "eRT" (which includes a proprietary runtime kernel, called EHS Kernel) and Hardware Abstraction Layer (HAL).
  • A broad range of 'components' providing all of the functionality you would expect in an embedded system.
  • Your applications, these run within the eRT environment.
  • An IoT administration platform called Devman, which can be used to monitor and manage devices running your deployed inxware apps.

inxware diagram

eRT can be run bare-metal on microcontrollers or as an application in more full-featured RTOS- and OS-based systems. It is written in C and can be ported to virtually any platform that has a suitable toolchain (e.g. C/C++ compiler). It has already been ported to many popular platforms.

Here are some of the key features of inxware:

Cross-Platform Runtime

  • 10+ architectures: ARM, x86, RISC-V, Xtensa.
  • Multiple OS support: Linux, Android, Windows, FreeRTOS, Arduino.
  • Unified build system: includes Docker containerisation.

Rich Component Library

  • Core components: Operators, buffers, timers, file I/O.
  • Networking: Wi-Fi, HTTP, MQTT, TCP/UDP sockets.
  • Graphics & UI: Display drivers, controls, imaging.
  • Hardware interfaces: GPIO, ADC/DAC, PWM, UART.

Production Ready

  • OTA updates: Over-the-air firmware deployment.
  • Package formats: APK, DEB, firmware images, Unity plugins.
  • CI/CD integration: Automated testing and deployment.

No-Code Development

  • Visual programming: Drag-and-drop component assembly / app development.
  • Real-time debugging: Live system monitoring and management.
  • Rapid prototyping: From initial concept to working prototype in minutes.

How is inxware licenced?

The majority of the inxware runtime stack is published under a permissive Open Source licence (LGPL v3.0) and we welcome contributions from the community to expand and improve its capabilities and features.

There is a single closed-source component, the inxware event-handling system EHS Kernel, supplied in binary form in our ert-build-support repository. The EHS Kernel is required and automatically included in inxware firmware builds.

Please refer to our LICENSE.md document for full information on licensing.

Where do I get inxware from?

There are two routes to trying out inxware:

  1. Top-down: build your applications in the Lucid no-code environment and run them on your chosen hardware platform(s)

    • Register with the inx Appland community and try out Lucid for free.
  2. Bottom-up: integrate your own software components with inxware and build custom firmware images.

    • See the "build quick start guide" below.

The second option is only normally required if you need to develop your own eRT components, or create an eRT port to a new target hardware platform which isn't already supported by the published sources.

eRT build quick start guide

To create an inxware firmware image for your device, you will just need these three items:

  1. A Linux build machine (including Windows Subsystem for Linux)
  2. The ERT (Event RunTime) environment
  3. Your Lucid application, which would typically be located in the inxware Apps repository.

Note: This guide assumes you have access to a bash shell in a Debian/Ubuntu Linux distribution. If you have a Windows PC, you can install and run Linux within Windows using Windows Subsystem for Linux.

Build system requirements

Requirement Minimum Recommended
OS Linux (Ubuntu 18.04+) or Windows 10 with WSL2 Ubuntu 20.04+ or Debian 11+
RAM 8GB 16GB+
Storage 50GB free 100GB+ SSD
CPU 4 cores 8+ cores
Network Broadband internet High-speed for container downloads

Within a Linux bash shell, enter the following commands:

mkdir inxware && cd inxware

# Clone the main `ert-components` repository
git clone https://github.com/inxware/ert-components.git
cd ert-components

# Configure the build for your chosen target platform
./configure  # List all available targets
./configure linux_x86_64_clang  # Configure for Linux x64 - test on build machine

# Install the build dependencies
make prepdeps       # Downloads toolchains and dependencies (~40GB) 

# Build the runtime binary
make all_docker # Build using containerised environment

# Create a deployable package
make targetenv                  # Assemble the runtime environment
make targetenv_version     # Create versioned release (binary/package)

#Test your build
./configure -run  # Run the built application

Success! You now have a working eRT runtime. Try the Lucid IDE to create your first no-code application.

Repository dependencies

  • ert-build-support (~20GB): Binary toolchains and build tools
  • ert-contrib-middleware (~15GB): Pre-built 3rd-party libraries
  • apps (optional): Demo applications and examples

Docker configuration

For optimal performance, configure Docker with:

# Increase Docker resources (if using Docker Desktop)
# RAM: 8GB minimum, 16GB recommended
# CPU: All available cores
# Disk: 60GB minimum

# For Linux: add user to docker group
sudo usermod -aG docker $USER
# Logout and login again for changes to take effect

Troubleshooting

"Permission denied" with Docker

sudo usermod -aG docker $USER
# Logout and login again

"No space left on device"

# Clean Docker cache
docker system prune -a
# Check disk space
df -h

Git LFS download failures

# Install/update Git LFS
git lfs install
git lfs pull

Build dependencies missing

# Reinstall dependencies
make clean
rm -rf ../ert-build-support ../ert-contrib-middleware
make prepdeps

Supported platforms

Platform Category Architecture Operating System Status Package Format Use Cases
Desktop/server x86_64 Linux (Debian 9-12, Ubuntu 14-24) ✅ Stable DEB, Binary Development, Server apps
x86_64 Windows 7-11 ✅ Stable EXE, MSI Desktop applications
Single board ARM64 Linux (Raspberry Pi 3-5) ✅ Stable DEB, Image IoT gateways, edge compute
ARM64 Android (Rock Pi, Radxa) ✅ Stable APK Media players, kiosks
ARM32 Linux (Various SBCs) ✅ Stable DEB, Image Industrial controllers
Microcontrollers Xtensa ESP32/ESP32-S3 (FreeRTOS) ✅ Stable Firmware IoT sensors, edge devices
ARM Cortex-M NXP Kinetis (FreeRTOS) ✅ Stable Firmware Industrial automation
ARM Cortex-M Arduino (MBED, Native) ✅ Stable Firmware Prototyping, education
Mobile/gaming ARM Unity Plugin ✅ Stable Unity Package Games, interactive apps
ARM64 Android NDK ✅ Stable AAR, SO Mobile applications

Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge

Industrial & IoT

  • Raspberry Pi: All models (3, 4, 5, Zero)
  • Rock Pi: 4A/4B/4C+, Rock 3C, Rock 5A/5B
  • ESP32 family: ESP32, ESP32-S3, ESP32-C3
  • NXP Kinetis: K64F, K66F, RT series
  • STM32: F4, F7, H7 series (via Arduino)

Consumer devices

  • Android tablets and phones
  • Set-top boxes and media players
  • Digital signage displays
  • Interactive kiosks

Further reading

The following documents contain more information about inxware, eRT Components, and related topics:

Github build status

Build Status

build-linux_arm64_lvgl_gg_debian11

build-linux_arm64_gtk_gst_gg_debian11

build-linux_android_arm64

build-esp32s3_freertos-xtensa-community

build-linux_x86_64_clang_lvgl_debian11

build-linux_x86_64_clang_gtk_gst_gg_debian11

build-win_x86_32-lucid-win10

build-arduino-mbed-nano-community

Project statistics

GitHub stars

GitHub forks

GitHub contributors

GitHub last commit

Code size

License


Ready to get started? Try the Quick Start, find out more on YouTube, or explore the Lucid IDE to create your first no-code embedded application!

Attribution

Copyright © 2008–2025 inx Limited. The community eRT Components release is open‑source under LGPLv3. The EHS Kernel is proprietary and licensed separately as described in LICENSE.md.