Emulator Users Guide

Created on April 5, 2018


RDK-V Emulator Users Guide


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

D10-20141105

Document Title

RDK Emulator Users Guide

Version

D05

Date

2015/02/23

Status

Issued (I)

Distribution

RDK licensees & Preferred 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


Introduction


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

Audience


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


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

Limitations


RDK Emulator does not support all components of RDK 2.0 stack .Currently RDK Emulator supports 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

Abbreviation/Acronym

Description

RDK

Reference Development Kit

VM

Virtual Machine

VBox

Virtual Box

QAM

Quadrature Amplitude Modulation

STB

Set Top Box

XRE

Cross-Platform Runtime Environment

HDD

Hard Disk Drive

EOS

End of Stream

SPTS

Single Program Transport Stream

MPTS

Multi-Program Transport Stream

UPNP

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 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. rdkbrowser
  1. rmfApp (Hnsource,Mediaplayersink)
  2. rdkbrowser

rdk-generic-mediaclient-image-qemux86.vmdk

RDK-Browser

  RDK Hybrid

  1. rdklogger,
  2. mediastreamer,
  3. Rdkbrowser
  1. rmfApp (Hnsource,qamsource,mediaplayersink)
  2. rdkbrowser,rmfStreamer ( Http+DLNA Server Support)

rdk-generic-hybrid-image-qemux86.vmdk

RDK-Browser

Build Setup Instructions


Setting up the Host Environment


Host Requirements

RequirementRemarks
Linux                           32 bit Ubuntu 16.04 operating system
Free HDD SpaceMinimum 100GB Free Memory
Oracle Virtual Box4.3.18 or higher

Install OS – Ubuntu 16.04

The instructions provided below are meant to be executed via the command line on an Ubuntu machine:

Install the following packages for setting up your host VM:

$     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”

Also install the below list of packages for Yocto build:

$     sudo apt-get install sed wget cvs subversion git-core coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff

Configure Git:

Upgrade your Git version to 1.8.x or higher

On Ubuntu 12.04 LTS, if you are unable to upgrade your git version using apt-get, then follow the below steps in order to upgrade  

$     sudo apt-get install python-software-properties

$     sudo add-apt-repository ppa:git-core/ppa

$     sudo apt-get update

$     sudo apt-get install git

 

Once git is installed, configure your name and email using the below commands

$          git config –global user.email “you@example.com

$          git config –global user.name “Your Name”

Configure repo

In order to use Yocto build system, first you need to make sure that repo is properly installed on the machine:

$          mkdir ~/bin

$          PATH=~/bin:$PATH

$          curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

$          chmod a+x ~/bin/repo

Trivia: Repo is a repository management tool that is built on top of Git. Its main purpose is to help manage projects that consist of many Git repositories, it can also be used to manage uploads to the CMF Gerrit instance and automate aspects of the development workflow.

Repo does not replace Git, it simply aids management of projects that contain multiple Git repositories into a single local working directory. Git will still be used for local operation such as commits etc.

Repo manages this for you by means of an XML based Manifest file. The Manifest file defines which repositories the project uses and links to appropriate revisions of each git repository, i.e where the upstream repositories reside and where they should be cloned locally. It is the manifest.xml (or default.xml) that determines which Git repositories and revisions repo will manage. This manifest.xml file is hosted in a Git repository along with all the other git repositories.

Setting up .netrc for RDK emulator

CMF git uses https. This step prevents the password prompt every now and then during code checkout and build.

Create a file .netrc in home directory.

$          vi .netrc

The contents of the .netrc should be as follows:

machine code.rdkcentral.com login <gerrird_userid> password <gerrit_password>

Downloading Source Code & Building


The following commands fetches the source code of emulator using repo tool

$ mkdir emulator && cd emulator

$ repo init -u https://code.rdkcentral.com/r/manifests -m emulator.xml

Note: For latest code iteration, check the RDK-V Releases page to get the latest iteration branch

$ repo sync

$ source meta-cmf/setup-environment       

  • Cloning the code before login once to code.rdkcentral.com, user would get the Authentication error, even though the account is in good standing and has all the required access.
  • Please login to code.rdkcentral.com before attempting to clone.

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

There are different kinds of builds listed. Please read the options and select the number of the build you need.

Following options are just a sample guide:

For Hybrid:

Select option for qemux86hyb-morty – 1 if you need to build a hybrid device. 

Note: For RDK2.1 emulator builds, the option would be option 3.

For Media Client:

Select option qemux86mc-morty – 2 if you need to build a media client device.

Next, you would need to initiate the build using the following command:

For Hybrid:

$ bitbake rdk-generic-hybrid-image

For Media Client:

$ bitbake rdk-generic-mediaclient-image

On Successful build, the ROOTFS (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):

–       ${HOME}/emulator/build-qemux86hyb-morty/tmp/deploy/images/qemux86hyb-morty or

–       ${HOME}/emulator/build-qemux86mc-morty/tmp/deploy/images/qemux86mc -morty

Note: The qt3d repo has changed and this causes older builds (10/24 and earlier) to fail while fetching qt. A fix can be applied by changing the repo in the qt3d recipe.

Before you build, you need to edit the file /meta-qt5/recipes-qt/qt5/qt3d_git.bb and set the QT_MODULE_BRANCH to “dev” instead of “master” as outlined below:

For more information regarding the change, please refer: https://github.com/meta-qt5/meta-qt5/commit/adeaa6128b665920eb98eb7c064f4aacbd74b873

QT_MODULE_BRANCH = “dev”

Bringing up the Emulator on Virtual Box


Install Virtual Box and follow the following steps to bring up RDK Emulator on Virtual Box:

In the following steps, it is recommended to review the description and screenshot completely before proceeding with steps.

STEP 1: Create your new VM Instance:

  • Open Virtualbox

  • Select New [A popup will come up]

  • Select Type as ‘Linux’

  • Select Version as ‘Other Linux (32 Bit)’

  • Click on “Next”

  • Choose a Memory Size of 512 MB


  • Use an existing virtual hard drive file which would be your newly built image in *.vmdk format and create your VM:

STEP 2: Configure your new VM Instance:

  • Click on “Settings” tab to configure your new VM instance

  • Configure your VMs network settings
  • Choose “Bridged Adapter” mode as shown in the screenshot below

STEP 3: Create an external hard drive:

Your VM has been built with very limited hard drive space. In order to run emulator and play video files, you need to copy your video files into the file system for playback. For this, you will need to setup a virtual external hard drive.

  • Select the vm instance on the main menu of Virtual Box
  • Click Settings -> Storage -> Add Hard disk [icon]
  • Click ‘Create new disk’ (Note: In the screenshot below, “Choose existing disk” may seem highlighted. Please select “Create new disk”)


  • Select VDI (VirtualBox Disk Image) as your Hard Drive file type:

  • Select “Dynamically allocated” storage: 

STEP 4: Formatting and partitioning your new external hard drive:

  • Boot up your VM
  • Your emulator VM boots up to show the RDK Browser HTML application which can be used to select and launch multiple other applications using the Tab key & Enter key
  • Use BACKSPACE to come out of Readme, WatchTV, iHeartRadio and Sample Video
  • To come out of the X2 guide, use Ctrl+Backspace
  • In order to learn your VM IP, use the RDK Browser application “tab” key to chose the various applications. Choose Device Info which will provide you the IP address as shown in the screenshot below:

  • Once you have the IP address you may SSH into your VM from your linux shell console. Use root as the ssh user.
$ ssh root@x.x.x.x
  • Use the “mount” command to see the current status of connected hard disks
$ mount

  • Use fdisk command to list out connected hard drives. You may note that in the screenshot below, there are two hard drives listed. hda and hdb. hdb is the external hard drive that we have created in the previous step.
$ fdisk -l

  • Use fdisk to create your new hard disk partition
$ fdisk /dev/hdb

Review the description of the steps during fdisk operation below and the following screenshot for reference before proceeding.

  • Use fdisk to create your new hard disk partition
    • Use the command “n” to add a new partition
$ Command (m for help): n
    • Select partition type as the suggested default “p” for primary partition

$ Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

    • Set your partition number as the suggested default. In the example case: 1
$ Partition number (1-4, default 1): 1
    • Press “Enter” key for First sector & Last sector prompts
    • Select the command “p” to print the partition table on screen for review
$ Command (m for help): p
    • Select the command “w” to write the partition table to disk and exit fdisk
$ Command (m for help): w


  • Format your newly created partition with ext3 file system
$ mkfs.ext3 /dev/hdb1

  • Create a folder for mounting your new partition at /ext_hdd
  • Mount your newly created hard disk partition to /ext_hdd

$ mkdir /ext_hdd

$ mount /dev/hdb1 /ext_hdd

STEP 5: Copy a Single Program Transport stream to your file system to be used for emulator video playback.

  • Pre-requisite to the step is assumed that /ext_hdd is already mounted with the external hard disk partition on your emulator VM
  • Copy your SPTS video file from your host machine to /ext_hdd folder on the emulator VM 
  • Note: The following command is performed from your Host Machine
$ scp <your_spts_file_name>.ts root@<your_emulator_vm_ip>:/ext_hdd
  • Back on your emulator VM, create a link in /opt/www/ to point to the external hard drive at its mount point /ext_hdd
$ ln -sf /ext_hdd/<your_spts_file_name> <your_spts_file_name>
  • In the screenshot below<your_spts_file_name> is assumed to be “received_spts1.ts” as an example.

 

Usage Instructions


Logging into your VM


As described in the previous section, you can log in to your emulator VM from your Host Machine using the ssh command.

$ ssh root@x.x.x.x

Note: In order to learn the IP address of your VM, use the RDK Browser application “tab” key to navigate to “Device Info” which will provide you the IP address. Press “Enter” key to enter Device Info

Using rmfApp


Introduction


The rmfApp application is supported for all build types. Once you SSH into your emulator VM, you can play a video stream located at a url using a source and a sink.

Where is rmfApp?

rmfApp is located in the folder: /usr/bin on your emulator VM

How to run rmfApp?

Navigate to the folder /usr/bin and run rmf App using command ./rmfApp. After the initial log statements when the rmfApp starts up, press “Enter” key to get the rmfApp prompt – “rmfApp>”

rmfApp Command Line Options

root@qemux86:~# rmfApp [-source SOURCE] [-sink SINK] [other options] url

SOURCE can be: hnsource ,qamsource

SINK can be:   mediaplayersink 

Other options include:
•        -recordingId <id>: id of recording to create where <id> is a decimal number
•        -recordingTitle <title>: title of recording

Example Sequence of rmfApp usage

Before using rmfApp, it will be better to terminate rdkbrowser as it may impact the performance of playback. You may use the systemctl command to terminate rdkbrowser as shown below.

$ systemctl stop rdkbrowser.service

rmfApp is located in the directory /usr/bin. Navigate to the directory containing the rmfApp:

$ cd /usr/bin

Launch RMF App using the command below:

$ ./rmfApp

Once the app is launched, press enter again to get the prompt “rmfApp->”:

$ rmfApp->
NOTE:

Note 1: There is an additional step required prior to using the emulator because it is built without the gsttee module in gst-plugins-rdk:

Before invoking rmfapp, it is necessary to set the environment variable ‘USE_GENERIC_GSTREAMER_TEE’ to ‘TRUE’, 

example : 

root@qemux86hyb-morty:/usr/bin# export USE_GENERIC_GSTREAMER_TEE=TRUE root@qemux86hyb-morty:/usr/bin# ./rmfApp 

Note 2: In the streaming scenario it is necessary to kill the rmfStreamer process on the hybrid image, which is started automatically, and invoke it manually as illustrated below : 

Streaming Scenario : 

Hybrid : 

barracuda:~> ssh root@193.120.91.104

root@qemux86hyb-morty:/#

root@qemux86hyb-morty:/# export USE_GENERIC_GSTREAMER_TEE=TRUE root@qemux86hyb-morty:/# cd /usr/bin root@qemux86hyb-morty:/usr/bin# ps -aef  | grep rmf root@qemux86hyb-morty:/usr/bin#kill -9 <pid> root@qemux86hyb-morty:/usr/bin# ./rmfStreamer 

IP Client : 

barracuda:~> ssh root@193.120.91.132

root@qemux86mc-morty:/#

root@qemux86mc-morty:/# export USE_GENERIC_GSTREAMER_TEE=TRUE root@qemux86mc-morty:/# cd /usr/bin root@qemux86mc-morty:/usr/bin# ./rmfApp

rmfApp->launch -source hnsource -sink mediaplayersink

http://193.120.91.104:8080/vldms/tuner?ocap_locator=ocap://0x125d

Simulated Live Playback on a Hybrid Emulator


In a simulated live playback, the following rmfApp command maybe used to playback the local SPTS video file:

launch -source qamsource -sink mediaplayersink ocap://0x125d

Where 

  • source : qamsource
  • sink; mediaplayersink
  • url: ocap://0x125d
$ rmfApp-> launch –source qamsource –sink mediaplayersink ocap://0x125d

Simulated Playback on a Hybrid Emulator


launch –source hnsource –sink mediaplayersink http://127.0.0.1:50050/received_spts1.ts

Where

$ rmfApp-> launch –source hnsource –sink mediaplayersink http://127.0.0.1:50050/received_spts1.ts

Simulated Live Playback on a Media Client Emulator


 In a simulated live playback, the following rmfApp command maybe used to playback the local SPTS video file:

 launch –source hnsource –sink mediaplayersink http://<HYBRID IP>:8080/vldms/tuner?ocap_locator=ocap://0x125d

 Where  

  • source : hnsource
  • sink; mediaplayersink
  • url: http://<HYBRID IP>:8080/vldms/tuner?ocap_locator=ocap://0x125d
$ launch –source hnsource –sink mediaplayersink http://<HYBRID IP>:8080/vldms/tuner?ocap_locator=ocap://0x125d

Scheduling & Playing Back Recordings from the Media Client using Recording ID


RDK recordings on the Hybrid device are created from a cloud-based scheduler using json messages. Once the recordings are created, the rmfApp on the media client device can be used to playback the newly recorded media content. 

This section outlines the use case:

Step 1: Preconditions / Prerequisites: 

  • As the hybrid VM has very limited memory and as recordings are by default stored in /opt/data/, you should create a new directory /ext_hdd/data within the external hard drive that we had set up earlier and also create a soft link to /opt/data

mkdir -p /ext_hdd/data

ln -sf /ext_hdd/data /opt/data

NoteThe above directory and the soft link needs to be in place each time before scheduling recordings. 

 Your recordings will get created in the following path on the Hybrid VM:

/opt/data/OCAP_MSV/0/0/DEFAULT_RECORDING_VOLUME/

/opt/data/OCAP_MSV/0/0/DEFAULT_RECORDING_VOLUME/chunks

If there is a media file created in the /chunks folder above, then the recordings have been successfully created.

Step 2: Launching rmfStreamer on Hybrid VM

There are multiple scripts in the folder /usr/bin. There are two scripts for launching rmfStreamer:

  • rmfstreamer
  • rmfStreamer

Note that the name of each file is similar apart from the usage of upper case and lowercase “s” in each file name.

Launch rmfStreamer using the script: rmfstreamer

cd /usr/bin/

sh rmfstreamer

if you run in into issues accessing rmfstreamer, then change the access permissions of file appropriately:

chmod 777 rmfstreamer

Once rmfStreamer starts, you will see log print statements on the console.

Step 3: Start playback of recorded content on Hybrid emulator from your Media Client emulator

Now you can playback from the media client using the rmfApp on the media client VM using the following sample commands:

cd /usr/bin

./rmfApp

rmfApp> launch -source hnsource -sink mediaplayersink http://<hybird_vm_ip>:8080/vldms/

Note: Where the recording id is “6” as set in the schedule.json message from the server. Users may write a small application to simulate the scheduler server json messages.

Westeros and WPE-webkit Support on RDKV Emulator

RDK emulator supports westeros compositor and renderer module as westeros-renderer-gl

Building WPE-image:

# To build the same for different build types, use the below command
  
#Hybrid
MACHINE=qemux86hyb-morty source meta-cmf/setup-environment
bitbake rdk-generic-hybrid-wpe-image
To test WPE image from the VM console

1)Boot the VM in NAT mode and ssh in to the VM to get the console as mentioned above.

ex: ssh -p 2222 root@localhost

2)Then type the following command

To support westeros surface width and height are HD so emulator need to set HD resolution

To enable support for 1280×720 resolution in emulator please follow the steps mentioned in this page.
This will help us in adding custom resolution in Virtual Box.

Applications testing over westeros Compositor

1) ssh login to the Emulator

Westeros compositor will  run automatically in startup of Emulator image

run following commands in terminal for manual starting the compositor on Emulator if needed

$ mkdir -p /run/user/0
$ export XDG_RUNTIME_DIR=/run/user/0/
$ westeros --renderer <renderer module> --display <socket-name> &
$ westeros --renderer /usr/lib/libwesteros_render_gl.so.0.0.0 --display WPE &
$ gdisplay start
$ export WAYLAND_DISPLAY=WPE

westeros compositor will launch

Testing Westeros_compositor

to test westeros compositor with simple egl test apliaction

run westeros_test

# After Launching westeros compositor in emulator
$ export XDG_RUNTIME_DIR=/run/user/0/
$ export WAYLAND_DISPLAY=WPE
$ westeros_test
(or)
$ westeros_test --display WPE

Testing Videosink on Westeros Compositor

$ export XDG_RUNTIME_DIR=/run/user/0/
$ export WAYLAND_DISPLAY=WPE

#Check the plugin in image
$ gst-inspect-1.0 westerossink

# To play the video and render on westeros compositor
$ gst-launch-1.0 playbin uri=http://localhost:50050/received_spts1.ts videosink=westerossink

Testing WPE-WEBKIT on Westeros compositor

ssh to emulator VM terminal run following commands

$ export XDG_RUNTIME_DIR=/run/user/0/
$ export WAYLAND_DISPLAY=WPE
$ WPElancher <http url >

Ex: WPELauncher http://easyhtml5video.com

$ export XDG_RUNTIME_DIR=/run/user/0/
$ export WAYLAND_DISPLAY=WPE
$ WPELauncher http://www.youtube.com/tv
 

 


Note: Video Positioning is not proper with the present video sink so positioning is not setting properly as of now in Emulator. We will update it once it is done**


Closedcaption support in RDK Emulator

1)Boot the VM in NAT mode and ssh in to the VM to get the console.

ex: ssh -p 3022 root@localhost

2)To check the closedcaption in rmfapp start the rmfapp and launch a video as shown below

ex: cd /usr/bin; ./rmfApp

rmfApp->launch -source hnsource -sink mediaplayersink http://127.0.0.1:50050/received_spts1.ts

now you will be able to see ccdata displayed on sccsreen

3)To enable or disable closedcaption rendering in rmfApp user “e” or “enable” to enable closedcaption and “d” or “disable” to disable the closedcaption

ex: rmfApp->d

expexted output: closedcaption rendering should stop on screen.


To enable closedcaption again type the command “e” as shown below.

rmfApp->e

expected output: Closedcaption rendering should start on screen

4)To show and hide the closedcaption after enabling the cc rendering user “s” or “show” tp show the cc window and “h” or “hide” to hide the cc window

example: rmfApp->h

expected output: CC window should not be visible on screen

To show the closedcaption again type the command “s” in rmfapp as shown below.

rmfApp->s

expected output: CC window should be visible on screen.

5)To pause and play the video after launching the video as shown below

ex: rmfApp->launch -source hnsource -sink mediaplayersink http://127.0.0.1:50050/received_spts1.ts

rmfApp->p (To Pause the video)

expected output: Stop the playing video also closedcaption rendering should stop

To resume the video paused type the command “p” again in rmfapp as shown below.

rmfApp->p (To play the video)

expected output: Video playing should resume and closedcaption rendering aswell.

6)Checking closedcaptioning in recorded content. 

After recording the video using the method provided in the above link using rmfApp try to play the recorded content.

Ex: To view the recording list

rmfApp-> l

expected output : To show the list.

total Space: 1886208000 bytes

free Space: 358744064 bytes

number of recordings= 1

————————————-

recording 0 id 30 title “Recording_tile”

————————————-

Now play the recorded content as shown below.

RmfApp->launch -source  -sink mediaplayersink path://local/30

expected output: Recording content should play along with closedcaption rendering.

Note: To play the recorded content use path://local/id where id is the recordingid.

8) To exit from the rmfApp first kill the running proccess and then press q to quit

Ex: rmfApp->kill 1

rmfApp->q


Yocto 2.2 (morty) support in RDK Emulator

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


The following commands fetches the source code of emulator using repo tool

#Yocto-2.2 Build (morty builds)
 
$ mkdir emulator-morty && cd emulator-morty
 
 # Download code in yocto integration mode

$ repo init -u https://code.rdkcentral.com/r/manifests -b morty -m emulator.xml

$ repo sync
 
# To build the same for different build types, use the below command
  
# Mediaclient
MACHINE=qemux86mc-morty source meta-cmf/setup-environment
bitbake rdk-generic-mediaclient-wpe-image
  
#Hybrid
MACHINE=qemux86hyb-morty source meta-cmf/setup-environment
bitbake rdk-generic-hybrid-wpe-image
 
# Note
VMWare Player 6.X or less only supported to get wpe-webkit browser support
Host OS ubuntu 12.04 32-Bit

#Yocto-2.2 Build (RDK-DEV-1901 builds)

$ mkdir emulator-rdk-dev && cd emulator-rdk-dev

# Download code in yocto integration mode

for Non-Preferred:
$ repo init -u https://code.rdkcentral.com/r/manifests -b rdk-dev-1901 -m rdkv-extsrc.xml

for Preferred:

$ repo init -u https://code.rdkcentral.com/r/manifests -b rdk-dev-1901 -m rdkv-asp-extsrc.xml

$  repo sync

# To build the same for different build types, use the below command

# Mediaclient
MACHINE=qemux86mc-morty source meta-cmf/setup-environment
bitbake rdk-generic-mediaclient-wpe-image
  
#Hybrid
MACHINE=qemux86hyb-morty source meta-cmf/setup-environment
bitbake rdk-generic-hybrid-wpe-image

#To build TDK-images

# Mediaclient
MACHINE=qemux86mc-morty source meta-cmf/setup-environment
bitbake rdk-generic-mediaclient-wpe-tdk-image
  
#Hybrid
MACHINE=qemux86hyb-morty source meta-cmf/setup-environment
bitbake rdk-generic-hybrid-wpe-tdk-image

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

Bringing up the Emulator on VMWare Player


Install VMplayer in Host Machine

Use the below Link download to install VMware Player on host

https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/5_0|PLAYER-504|product_downloads

After downloading

sudo ./VMware-Player-<Version>.bundle (LInux OS)

Run  VMware-Player-<Version>.exe  (Windows OS)

Reason for VMplayer: in Mesa Higher versions EGL-PLATFORM fbdev is not available as it is deprecated so we tried using DRM (Direct Rendering Manager driver for graphics)

for DRM driver is available only in vmware only (vmwgfx so we have gone for VMware Player)
 

Steps to bring up RDK Emulator on VMware Player

1        Once VMware Player is installed, open the VMWare Player  using the command

vmplayer &  or open using GUI

2       Click File –> Create a New Virtual Machine –> Select  ‘i will install my operating system later’ –> click Next

3       Select ‘Linux’ –> Version  ‘Other Linux 3.x kernel’ –> Click Next –> Give name –> Click Next

4       Maximum Disk Size : 8 Gb –> Select ‘Store Virtual Disk as a Single File’ –> Click Next –> Memory for this Virtual Machine ‘512 Mb’ –> Click ‘Close’  –> Click  ‘Finish’

5       Click ‘Edit virtual machine settings’ –> select Hard Disk (IDE) –> Click ‘Remove’   –>Click  ‘Add’  –> Select Hard Disk  –> Select  ‘Use existing Virtual Hard disk’

6       File browse and set the path to the *.vmdk  file –> Click Finish –> Click ‘Keep Existing Format’

7       Network Adapter select Bridge Adapter  –> Click Save

8       Click Play Virtual Machine

         Cannot connect the virtual device ide1:0 because no corresponding device is available on the host.
         Do you want to try to connect this virtual device every time you power on the virtual machine? [YES] [NO]

          You select [NO]

9       This will bring the emulator up with the initial splash screen followed by RDK-Browser as startup application.

*** Note :  No support for Shared Folder.

step 1:

 

Step 2:

Step3:

Step 4:

Step 5:

 

Click ‘Save’  –> Click  ‘Finish’

Click ‘Edit virtual machine settings’ –> select Hard Disk (IDE) –> Click ‘Remove’   –>Click  ‘Add’  –> Select Hard Disk  –> Select  ‘Use existing Virtual Hard disk’

 

Step 6:

Step 7:

Step 8:

Step 9:

Step 10:

Step 11:

step 12:

 

Applications testing over westeros Compositor

 

WPELauncher  (wpewebkit default browing Application)

1) ssh login to the Emulator

   systemctl stop wpe-launcher ( this will stop the wpe-webkit browser

to launch any url through wpe launcher use this script sh startWPE.sh

ex:

sh startWPE.sh http://www.easyhtml5video.com

sh startWPE.sh http://www.google.com

Using rmfApp


for using rmfApp in morty builds need to follow the below steps

in ssh terminal of emulator type the following commands

  1. systemctl stop westeros-startup ( to stop westeros-compositor)
  2. rmmod vmwgfx

now you can see tty terminal console of emulator

from ssh terminal follow the normal rmfApp playback usage steps mentioned in this guide

 

Known Issues:

  1. westeros Mouse click does not work.
  2. DRM drivers does not work properly with virtualbox (virtualbox is unsupported for browser applications and graphics drivers)
  3. VMware player supported Till 6.0.x version and lower versions only for RDK Emulator.

PXSCENE Support Test Procedure in Emulator


for using morty emulator WPE image we can validate pxscene examples in emulator

Pxscene works over the wayland compositor (westeros compositor)

 

Before launching pxscene examples need to export these parameters and run pxscene examples

$ export XDG_RUNTIME_DIR=/run/user/0/
$ export WAYLAND_DISPLAY=WPE
Example 1 :
$ ./pxscene ( will launch default browser.js)
Example 2 :
$ ./pxscene http://www.pxscene.org/examples/px-reference/gallery/fancy.js
Example 3 :
$ ./pxscene http://www.pxscene.org/examples/px-reference/gallery/gallery.js
Example 4 : 
$ ./pxscene http://www.pxscene.org/examples/px-reference/gallery/picturepile.js

 

Please find screen shots attached

  1. Browser.js

2.Fancy.js

 

 

Gallery.js

Picturepile.js

 

 

RDKBROWSER2 Support Test Procedure in Emulator


for using morty emulator WPE image we can validate rdkbrowser2 examples in emulator

works over the wayland compositor (westeros compositor)

 

For testing rdkbrowser2

$ export XDG_RUNTIME_DIR=/run/user/0/
$ export WAYLAND_DISPLAY=WPE

 Example 1 :
$ ./rdkbrowser2 ( will launch http://www.example.com)
Example 2 :
$ ./rdkbrowser2 --url http://www.google.com
Example 3 :
$ ./rdkbrowser2 --url http://www.youtube.com/tv
Example 4 : 
$ ./rdkbrowser2 --url http://www.easyhtml5video.com

Note: Video performance is gittery in emulator with westerosink ( software of emulator
WEBBGL related urls not suported as graphics GPU available in the VMplayer is having limitation
with 3d graphics renderering

 

Cursor will work with rdkbrowser2

Ex: Picture-1 google.com

 

Ex 2: Youtube.com playback with westeros-sink

 

Ex 3 easyhtml5video.com

 

 

 

 

1
COMMENT

  Subscribe  
Latest Oldest Most voted
Notify of
Daren Hayward

The link to RDK-V Releases just takes you to the top of the page.

I think this is a more useful link RDK-V Releases

Go To Top