Build & Customise OpenWrt for Raspberry Pi

OpenWrt Raspberry Pi Subtarget

OpenWrt is an open source operating system based on Linux especially designed for embedded & networking devices. This OS is well known for its lightweight footprint, standardized configuration approach (using LUCI interface), easy to build images, as opkg packages. At the core of OpenWrt is a writable root file system, where the users can add and/or remove packages, modify configs etc…. without having to re-flash the entire firmware/operating system. This is achieved by overlaying a read-only compressed SquashFS file system with a writable JFFS2 filesystem using OverlayFS. You can install pre-built packages from OpenWrt repo (which contains approximately 3500 packages) using opkg package manager. The Build Process Below steps cover the required pre-build environment and how to build OpenWrt from the source tree for Raspberry Pi board. Even though OpenWrt recommends Debian for the build machine, I built it successfully on Ubuntu 18.04 Desktop. Setup Build Environment Build OpenWrt Fetch the source tree from Openwrt git repo Move to OpenWRT …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

MediaPipe is an Open Source Perception Pipeline Framework Developed by Google

MediaPipeObjectDet

MediaPipe is an open-source perception pipeline framework introduced by Google, which helps to build multi-modal machine learning pipelines. A developer can build a prototype, without really getting into writing machine learning algorithms and models, by using existing components. This framework can be used for various vision & media processing applications (especially in VR) such as Object Detection, Face Detection, Hand Tacking, Multi-hand Tracking and Hair Segmentation. MediaPipe supports various hardware and operating system platforms such as Android, iOS & Linux by offering API’s in C++, Java, Objective-c, etc. And this framework also capable of utilizing GPU resources. MediaPipe Components The framework is comprised of three major components A framework for inference from the pipeline data Tools for evaluation And a collection of reusable inference and processing components It follows the approach of Graph-based frameworks in OpenCV and all processing happens with the context of the Graph. The Graph contains a collection of nodes and each node is implemented as a …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

The Case for Running Chromium OS on IoT Devices

Chromium OS IoT Device

The concept of Chromium OS for IoT was presented by Linaro Veteran Khasim Syed Mohammed at Linaro Connect 2019,  In his presentation, he talked about the possibilities and advantages of using Chromium OS for IoT devices. This approach looks promising since it’s running on a Linux Kernel base, and Chromium OS uses a lightweight graphics stack that relies on Linux DRM APIs. This may help to create an IoT device with a graphics interface, without consuming too many hardware resources. Why Chromium OS From the architecture front, chromium OS has impressive advantages compared to other lightweight Linux operating systems, such as Direct Rendering Manager, support for web-based applications, etc… Graphics Stack In  Linux-based operating systems, most of the time the graphics/display stack is handled by the X-Window system (Xserver and clients). This increases the complexity of development, consumes a large number of hardware resources and increases the product development life cycle.  So to have a very basic GUI for an …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Zsync HTTP-based File Transfer Utility Transfers Large Files Efficiently

Zsync WorkFlow Diagram

Zsync is an opensource file transfer utility built on top of rsync algorithm. This helps to download partial/differential files over the HTTP protocol. The utility allows downloading only new parts of a file from a centralized location,  where the older version of the file is already within your computer. While rsync is for syncing data from one computer to another,  zsync allows file distribution, where the file hosted in a server using any web server can be distributed to many and downloaded seamlessly. How it works The command-line utility will do all the differential calculations in the client, instead of doing it in the server as in rsync. Server metadata will be created only once and stored as part of the control file. And rest of the operations and decision making will be handled by the client-side application. This will reduce the huge processing needed on the server-side, even when thousands of clients are trying to fetch the file. Server …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

PicoLibC is a Lightweight C library for Embedded Systems

PicolibC

Well-known developer,  Keith Packard has recently announced the launch of “picolibc” through his blog.  Picolibc is a C Library for embedded systems which  is suitable for small micro-controllers, and this standard C library API’s allows to run even in low memory (RAM) devices. This is an upgraded version of “newlib-nano” with few interesting changes which includes replacement of “stdio” lib with ATMEL-specific printf code adopted from avrlibc. As part of this library, Keith also launched picocrt,  which is responsible for initializing memory and invoking various constructors before calling its own C program, the main function. Features picolibc is a revised version of newlibc, without full-fledged stdio lib and uses lightweight stdio lib from avrlibc, which is more suitable to low memory embedded devices. Meson build-system eases the build process of picolibc source tree for various target platform and hardware. Updated the math test suite to use Glibc as a reference The library is BSD licensed, and non-BSD components were removed …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

UpSwift – Manage IoT & Embedded Linux Devices Easily & Quickly

UpSwift

UpSwift offers a GUI based management interface to their customers to update, manage, control & diagnose IoT and embedded devices. The solution also supports OTA updates to any device which is running the Linux operating system including Raspberry Pi board and other Arm SBC’s. Because of the pull-based, client/server architecture, the client-side binary looks for updates in configurable frequent interval and executes the changes and updates. The communication between the client and the server is established over secured REST API’s. By monitoring the applications logs and other device parameters, UpSwift’s Cloud-Smart engine is capable of behaving intelligently by sending email alerts to the administrator. UpSwift Basic WorkFlow Post-registration and package selection with UpSwift Cloud-based dashboard, customers can start adding their devices into UpSwift dashboard. Depending upon the selected plans (number devices connected, features, etc.. will vary depends on the plan chosen), customers will be able to manage their products remotely. And post device registration, you will be able to download/install …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Real-Time Performance and Health Monitoring Using Netdata

Netdata

Netdata is a real-time open source monitoring tool, that generates hundreds of metrics of performance and health monitoring parameters. Netdata is capable of  visualizing this data with real-time capabilities along with alerts and notifications. This monitoring agent can be installed in all variant of Linux systems, Mac OS, FreeBSD and in Raspberry Pi . Netdata provides options for archiving the metrics to a remote server by using TimeSeries Databases and processing engines, and can be visualized using Grafana or other tools. Architecture Overview Metrics collector Fetches various system &  health monitoring parameters (uptime, CPU load, CPU usage, RAM utilization, disk usage etc.) . Fetches application metrics including web servers, databases, containers, etc… Netdata’s Internal plugins  collect  most of the metrics from standard Linux system parameters such as /proc, /sys and other Linux kernel sources External plugins contains ready to use plugins developed by using other programing language and interfaced to Netdata daemon as stdout communication. Also allows to write custom …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Qt for MCUs – Qt Announces support for Microcontrollers

QT_TitleImage1

[Update August 24, 2019: Added information about expected release date and license] About Qt for MCUs Qt- The well known opensource toolkit for creating graphical interface announced their new release: Qt for MCUs, targeting MCU’s. The new graphical toolkit will be capable of running on devices without operating system. This may be a game changer in the entire MCU world, since Qt for MCUs allows developers to create fluid user interfaces on cost-effective micro controllers. This means we will be able to see smartphone like GUI’s which are running on low-end  MCU’s with limited resources. With reference to their press release, assuring that Qt-GUI will consume less power to save the battery life. Qt for MCUs Software Stack While developing any applications for MCU,  developers still can use their powerful declarative UI language QML and rich set of ready-made Qt Quick controls.  And the C++ APIs, helps the user interface with C++  based back-end. applications are being rendered by Qt’s …

Support CNX Software – Donate via PayPal or become a Patron on Patreon