RDK Resources

[*RDK Preferred*]

Code Management Facility

Code Releases

RDK Forums

[RDK Conferences]

RDK Support


Papers & Presentations Archive

In the News!

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Objective :

Objective of this analysis is to see whether the metrological WebPlatform for Embedded can be used as a light weight init system for RDK.

This thunderstrom image contains applications or RDK services getting launched through wpeframework-plugin-launcher

Yocto Build Procedure:

Build Steps:

$ repo init -u https://code.rdkcentral.com/r/manifests -m rdkv-asp-nosrc.xml -b thunderstorm

$ repo sync -j4 --no-clone-bundle

$ source meta-cmf-raspberrypi/setup-environment

for HYBRID image

12) meta-cmf-raspberrypi/conf/machine/raspberrypi-rdk-hybrid.conf

$ bitbake rdk-generic-hybrid-wpeframework-image

for Mediaclient image

select 14) meta-cmf-raspberrypi/conf/machine/raspberrypi-rdk-mc.conf

$ bitbake rdk-generic-mediaclient-wpeframework-image

on boot up You can get the UI screen which shows ip address

We can control the plugins from Controller WebUI by loading IP address in  Browser

We can load Weburl's from WebkitBrowser WebURL controller UI

Key Components available in the THUNDERSTORM WPEFramework

  • WPE WebKit - powerful low-resource embedded WebKit engine with Wayland support
  • WPE Backend - Abstraction layer for WPE WebKit with support for MESA based gfx or Wayland/EGL gfx
  • WPE Framework - plugin based framework for embedding C/C++ components and bridging the "web" world.
  • WPE Framework plugins - various plugins from a DHCP Server, Wifi Control, Bluetooth, Compositor to premium app based plugins (NF, Amzn, etc)

WPEFramework is a small framework built for embedded devices. It consists out of the following main components:

  • Framework Core
  • Framework Plugins
  • Framework UI

WPE Framework and WPEFramework-plugin and wpeframework-plugin-launcher are key components for micro services

WPEFramework offers an event driven interface framework for subsystem availability signaling to the plugins. This framework is utilized to realize concurrent startup scenario using a conditional evaluation only in case a condition changes. This allows for startup without requiring sleeps, or resource consuming polling mechanisms.

for each micro service need to implement one plugin as part of wpeframework plugins and plugin should configured as part of any of these subsystems

enum subsystem {


// platform is available.


// Network connectivity has been established.


// System identification has been accomplished.


// Graphics screen EGL is available.


// Network connectivity to the outside world has been established.


// Location of the device has been set.


// Time has been synchronized.


// Provisioning information is available.


// Decryption functionality is available.


// Content exposed via a local web server is available.


Usage comparison systemd vs Metro Init system

  In Image to startup wpeframework need to use inti.d or systemd to intialize wpeframework  on boot up

wpeframework will handle starting and stopping of micro services in metrological webkit


                                                              Systemd Architecture


                                                  WPEFramework architecture

Systemd init systemwpeframework microservices system

systemd consumes more space as it launches multiple process for different funtionalities, it provides so many features

ex: systemd, systemd-journald, systemd-udev, systemd-logind

Single process handles most of these features "WPEframework" like logging

and tracing with less CPU load.device info Starting and stopping of services are faster.

No UI based control UI based control

states allowed in services

start, stop, restart

states allowed here activate/deactivate

SUSPEND and RESUME possible

adding new systemd service script is easyAdding new plugins involves development of plugins, adding interface in wpeframework  and implementation UI Java script
Here request and response can be done through command line

All request and response bodies should use the JSON format for data. from UI

Uses D-BUS internally for communication between the services. to set and initialize  the servicesLight Weight internal RPC channel available, Web API and controller to launch plug-ins

Stopping or starting the services may require sleep calls to make resource availability and resource release

WPEframework take cares of resource availability through its internal  available subsystem
Runtime enabling/disabling of tracing information not availableRuntime enabling/disabling of tracing information within the plugins allowed and possible
all process launched through systemd services are child to inti process (PID 1)All plugins or micro services are child process to WPEframework process
debugging is command line with out UIdebugging is UI based and remote with screen capture feature and cmd line based
Adding new service is pretty easyAdding new  micro service need more implementation like plugin and UI in wpeframework write one json file and keep the file in /etc/wpeframework/plugins
Allows launching of application through remote via command line interface

Allows launching of multiple application through remote UI

via enabling and disabling plugin

Virtual remote not available to applicationsVirtual remote is available to Applications
systemd can control the Boot order Control in boot order by wpeframework
property changs of process like nice value and schedule policy and stack size settings not available in systemdCan adjust nice, schedule policy, priority, stack size for a plugin
startup  process are all parallelstartup of micro services are all parallel
More contol on applications and services not possibleUses REST Full API integrated into plugin to interact with the device

Component responsible for launching custom application or service through wpeframework Plugin architecture


We can write a simple json file and keep it in /etc/WPEFramework/plugins it will auto load the application

List of changes done to remove systemd dependancy from RDKV and integrate Thunder


















  • No labels