Emulator Build Instructions

Created on April 5, 2018

RDK-V Emulator Build Instructions

Copyright 2015 RDK Management, LLC. All rights reserved.

The contents of this document are RDK Management, LLC Proprietary and Confidential and may not be distributed or otherwise disclosed without prior written permission of RDK Management, LLC.

Document Status 

Document Control Number


Document Title

RDK Emulator Users Guide






Issued (I)


RDK licensees & ASP Members

Document Status Codes

Work in Progress (WIP)

An incomplete document designed to guide discussion and generate feedback that may include several alternative requirements for consideration.

Draft (D)

A document in specification format considered largely complete, but lacking review. Drafts are susceptible to substantial change during the review process.

Pre-Issued (Pre I)

A revision of a document circulated for review or approval prior to release, but not approved for distribution

Issued (I)

A stable document, which has undergone rigorous review and is suitable for product design and development 
It will serve as a basis for testing requirements.

Legal Notices

This document is provided under the terms and conditions of the RDK License Agreement, License Agreement for Software Integration Kit, License Agreement for Set-top Box Software Integration Kit.

RDK Management LLC is not responsible for any liability of any nature whatsoever resulting from or arising out of any use or reliance upon this specification. This document is furnished on an “AS IS” basis, and RDK Management, LLC does not provide any representation or warranty, express or implied, regarding its accuracy, completeness, or fitness for a particular purpose.”

Table of Contents


RDK (Reference Design Kit) is an integrated set of software components, tools and documentation that help in the development of the software stack for set-top box based on the standard Linux operating system which is designed to meet the requirements of the latest generation media servers and clients.

The RDK emulator is an x86 based implementation of the RDK software stack. It is primarily targeted towards the RDK development community (integrators, component developers and application developers) that attempts to simplify the process of working with the RDK software stack without the need for a reference hardware platform.  The key applications in the RDK Emulator are the rmfApp, Media streamer and the RDK-Browser. As RDK emulator runs on desktop computers, applications can be tested and debugged before trying to deploy them to real devices.

Purpose of this Document

The purpose of this document is to enable RDK users and developers to be able to bring up the RDK stack and emulator on the PC platform. The document also includes step-by-step procedures to setup & build RDK Emulator


The intended audience includes the MSO teams, developers and external vendors responsible for the development of firmware and applications for RDK-based Set Top Boxes 


Scope of this document includes understanding RDK Emulator and  functionalities, supported build types and to run and test in Virtual Box environment.


RDK Emulator does not support all components of RDK 2.0 stack .Currently RDK Emulator supports mediaframework, media-streamer, RDK-Browser and RDK-Logger, XRE components.

Known Issues

  • During video playback, performance issues are there due to video scaling.
  • Also In rmfApp , while playing video through hnsource or qamsource , application may crash once EOS is reached.
  • It has been seen that open source package mirror repos may go down temporarily or may be blocked by local corporate firewalls. Please try the build again at a later time or after resolving local firewall issues. One test would be to access the failing url on the web browser and see if the site is up. This can help isolate local issues.

Abbreviations and Acronyms

The following table describes the acronyms and abbreviations used in this document




Reference Design Kit


Virtual Machine


Virtual Box


Quadrature Amplitude Modulation


Set Top Box


Cross-Platform Runtime Environment


Hard Disk Drive


End of Stream


Single Program Transport Stream


Multi-Program Transport Stream


Universal Plug and Play

Overview of RDK Emulator

  • Executes on x86-based platforms including virtualization environments such as Virtual Box and QEMU.
  • Multiple build types – media client, hybrid etc
  • Supports the RDK Browser startup application.
  • Up to date with the RDK generic trunk and any x86-specific platform code.
  • Built using Yocto and RDK build frameworks

Key Features

  • RMF Support
  • RDK Browser as a start-up application supporting playback of local TS file.
  • Video/Audio playback using fbdevsink and autoaudiosink gstreamer elements.
  • Remote control – x86-based QT application that is useful for  navigation  in RDK Browser and XRE Applications
  • Support for X2 guide.

Supported Build Types

Build Types

RDK Components Involved

Features/Applications Supported

Final Image Name

Startup Application

 RDK Mediaclient

  1. rdklogger,
  2. mediaframework
  3. rdkbrowser2
  1. rmfApp (Hnsource,Mediaplayersink)
  2. rdkbrowser2



  RDK Hybrid

  1. rdklogger,
  2. mediaframework
  3. mediastreamer
  4. Rdkbrowser2
  1. rmfApp (Hnsource,qamsource,mediaplayersink)
  2. rdkbrowser2
  3. rmfStreamer ( Http+DLNA Server Support)



Build Setup Instructions

Setting up the Host Environment

How to Build#SettinguptheHostEnvironment

Yocto 2.2 (Morty) support in RDK Emulator

Downloading Source Code & Building (morty version of RDK-Emulator)

The following commands fetch the source code of the emulator using the Android repo tool

yocto workspace setup
mkdir emulator && cd emulator
repo init -u https://code.rdkcentral.com/r/manifests -b rdk-next -m rdkv-nosrc.xml
repo sync -j`nproc` --no-clone-bundle --no-tags

The above step configures and sets up your directory to start an appropriate build for hybrid or media client.

For Mediaclient:

mediaclient image
MACHINE=qemux86mc-morty source meta-cmf-bsp-emulator/setup-environment
bitbake rdk-generic-mediaclient-wpe-image

For Hybrid:

hybrid image
MACHINE=qemux86hyb-morty source meta-cmf-bsp-emulator/setup-environment
bitbake rdk-generic-hybrid-wpe-image

On Successful build, the image (in .vmdk format) would be available at the following reference location based on whether your build type was Hybrid (qemux86hyb-morty) or Media Client (qemux86mc-morty):

–       build-qemux86hyb-morty/tmp/deploy/images/qemux86hyb-morty or

–       build-qemux86mc-morty/tmp/deploy/images/qemux86mc -morty

To build TDK-images

For Mediaclient:

mediaclient image
MACHINE=qemux86mc-morty source meta-cmf-bsp-emulator/setup-environment
bitbake rdk-generic-mediaclient-wpe-tdk-image

For Hybrid:

hybrid image
MACHINE=qemux86hyb-morty source meta-cmf-bsp-emulator/setup-environment
bitbake rdk-generic-hybrid-wpe-tdk-image


VMWare Player 6.X or less only supported to get wpe-webkit browser support
Host OS ubuntu 12.04 32-Bit

0 0 votes
Article Rating
Notify of
Latest Most voted
Inline Feedbacks
View all comments
Justin Ware

I’m using Ubuntu 16.04 32-bit (via VirtualBox) as recommended on this page. However I’m hitting a compilation error with libgpg-error-native:

In file included from /home/justinware/emulator/build-qemux86hybdev/tmp/work/i686-linux/libgpg-error-native/1.12-r0/libgpg-error-1.12/src/mkerrcodes.c:26:0:

./mkerrcodes.h:9:5: error: expected expression before ‘,’ token

   { , "GPG_ERR_E2BIG" },

I’m using source code from tag " rdkv-2018q1" and option 3 when using setup_environment.sh.

I can see this particular compilation issue has occurred for other developers using gcc 4 & 5, and has since been patched in the gpg source. Should I expect 16.04 to work or should I be using 14.04 or 12 instead?


Hi Justin Ware

  Please  Try compiling with latest repo URL repo init -u https://code.rdkcentral.com/r/manifests -b rdk-dev-1901 -m rdkv-extsrc.xml

Justin Ware

Hi Gayathri, thanks for the suggestion. I tried the version you suggested and chose entry 30 as the applicable one for the emulator but I got the following error while bitbake was setting up the build: NOTE: Resolving any missing task queue dependenciesNOTE: preferred version 3.3.% of gnutls not available (for item gnutls)NOTE: versions of gnutls available: 2.12.24 3.5.3NOTE: preferred version 3.3.% of gnutls not available (for item gnutls-dev)NOTE: versions of gnutls available: 2.12.24 3.5.3NOTE: preferred version 1.0.1 of dibbler not available (for item dibbler-client)NOTE: versions of dibbler available: 1.0.0RC2NOTE: preferred version 1.4.45 of lighttpd not available (for item lighttpd)NOTE:… Read more »


Hi Justin Ware   Have you done these steps Install the following packages for setting up: $     sudo apt-get  install   build-essential gettext bison libfile-slurp-perl gawk libncurses-dev autoconf flex doxygen libtool automake  libpcre3-dev zlib1g-dev libbz2-dev subversion minicom putty libssl-dev rpm python-pexpect python-svn python-argparse vim tofrodos meld dos2unix cmake uuid-dev ruby transfig libglib2.0-dev xutils-dev lynx-cur gperf autopoint  python-dulwich  python-dev curl vim diffstat texinfo chrpath openjdk-7-jre Configure bash as default command interpreter for shell scripts: $     sudo dpkg-reconfigure dash Select “No” To choose bash, when the prompt asks if you want to use dash as the default system shell – select “No”… Read more »

Justin Ware

Hi Gayathri, if these are the instructions from above then I have. Please note that “openjdk-7-jre” is not in the repository for Ubuntu 16.04 32-bit. I substituted “openjdk-9.jre” instead. “Try out in Fresh workspace” – I’m not sure what you mean. I have wiped my repo, initialised and sync’d again. I have not recreated the virtual machine from scratch. I created the virtual machine purely for the purpose of building the rdk-v emulator so it has no unnecessary packages or configuration changes. I’m running 64-bit Ubuntu 16.04 on my host which is not suitable, so I created an Ubuntu 16.04… Read more »

Justin Ware

Ah, it doesn’t have the missing runtime dependency on ‘dracut’ if I go for ‘qemux86hyb-morty’. Does this mean ‘qemux86hyb’ is no longer supported?

Kind regards,


Z-Lotfi Ben Taleb


I have an error with "ctrlm-xraudio-hal" 
"/usr/bin/python3: can’t find ‘__main__’ module in ”"

any idea?

Sri Swati Varahagiri

Hi Z-Lotfi Ben Taleb 

ctrlm-xraudio-hal – is related to Control Manager feature, as the feature is not functional fully, mask the recipe to avoid build error.

Z-Lotfi Ben Taleb

Hi Sri Swati Varahagiri
Thank you for your reply. When I masked the ctrlm recipe, I got a dependency issue as following:
“Missing or unbuildable dependency chain was: [‘packagegroup-rdk-media-common’, ‘ctrlm-main’]”

Janani B

Hi Z-Lotfi Ben Taleb 

ctrlm-main is related to control manager as well and since the feature is not yet functional completely, please remove the ctrlm-main feature from packagegroups. You can also remove the xr-atomic feature from package group which is also related to control manager.

Go To Top