Introduction

RDK-V IP Client is a IP based Client Set-Top-Box (STB) with RDK 4.0 features which connnects directly with Network Gateways. Targets on Accelerator platforms and utilizes only open-sourced RDK components.

Unused components from MediaClient :

IP STB build is based from medicalient image with out the licensed components and other components which are not required for IP streaming. Some of the components which are removed as of now are,

Host Setup

Refer to the below link for Host Machine Setup

How to Build#SettinguptheHostEnvironment

Yocto Build Setup

All RPi based RDK images with the latest features are from the rdk-next branch

Initializing the Build Environment

To build RDK images from ipstb_bringup branch, follow the below build procedure

mkdir workspace
cd workspace

# initialize the manifest with repo tool 
repo init -u https://code.rdkcentral.com/r/rdkcmf/manifests -b dunfell -m rdkv-extsrc.xml
repo sync  -j `nproc` --no-clone-bundle --no-tags

Image build

MACHINE=raspberrypi-rdk-ipmc source meta-cmf-raspberrypi/setup-environment

bitbake rdk-generic-ipclient-image

Flashing Procedure

The micro SD card should not have any partition while flashing the image. The complete memory of the card should be free.

# Insert the micro SD card to the host system and mention the card's device file name
# of - output file (the device file for the inserted micro SD card
 bzcat <image name> | sudo dd of=/dev/<sd file> bs=4M iflag=fullblock oflag=direct conv=fsync

System View

JIRA Tracker

Compilation Errors(Now all are resolved)

S.NoComponentRecipeDependent onRemarks
1sysintNo bb fileIt is not yet opensourcedIf added in meta-rdk it is fixed
2sysint-confNo bb fileRemoving from package oss fileBuild is proceeding further
3virtual/mfrlib
Opensourcing
4tenablehdcp-devmeta-rdk-video/recipes-extended/tenablehdcp/tenablehdcp_git.bbiarmmgrsvirtual/mfrlib
5ledmgr-devmeta-rdk-video/recipes-extended/ledmgr/ledmgr_git.bbiarmmgrs
6iarm-query-powerstate-devmeta-rdk-video/recipes-extended/sys_mon_tools/iarm-query-powerstate_git.bbiarmmgrsvirtual/mfrlib
7tr69hostif-devmeta-rdk-video/recipes-thirdparty/tr69hostif/tr69hostif_git.bbBluetooth-mgr -> audiocapture -> iarmargs
8Netsrvmgr-pni-controller, netsrvmgr-pni-settings-loader, netsrvmgr-devmeta-rdk-video/recipes-extended/networkmgr/netsrvmgr_git.bbiarmmgrs
9iarm-set-powerstate-devmeta-rdk-video/recipes-extended/sys_mon_tools/iarm-set-powerstate_git.bbiarmmgrs
10rdkservices-devmeta-rdk-video/recipes-extended/rdkservices/rdkservices_git.bbiarmmgrs
11Key-simulator-devmeta-rdk-video/recipes-extended/sys_mon_tools/key-simulator_git.bbiarmmgrs
12iarmmgrs-devmeta-rdk-video/recipes-extended/iarmmgrs/iarmmgrs_git.bbvirtual/mfrlib
13ledmgr-extended-noop-devmeta-rdk-video/recipes-extended/ledmgr/ledmgr-extended-noop_git.bbiarmmgrs
14bluetooth-mgr-devmeta-rdk/recipes-connectivity/bluetooth/bluetooth-mgr_git.bbAudiocapturemgr -> iarmargs
15aampmeta-rdk-video/recipes-extended/aamp/gst-plugins-rdk-aamp_git.bb, meta-rdk-ext/recipes-extended/webkitbrowser-plugin/webkitbrowser-plugin_git.bb, meta-rdk-video/recipes-extended/injectedbundle/injectedbundle.bbiarmmgrs
16mfrlibs-rpi


17Wpe-webkit-dev, wpe-webkit-web-inspector-plugin, wpe-webkitmeta-rdk-ext/recipes-extended/wpe-webkit/wpe-webkit_2.22.2.bb

18audiocapturemgr, audiocapturemgr-devvirtual/media-utils iarmbus iarmmgrsiarmmgrsvirtual/mfrlib
19ttsmeta-cmf-video/recipes-graphics/tts/tts.bbappendwpeframework-clientlibrariessecurity agent library is added to LD flag to fix the issue
20mediautils

removed mediautils


Testing Procedure

root@raspberrypi-rdk-ipmc:~# cat /version.txt 

imagename:rdk-generic-ip-stb-client_rdk-next_20210902101930

BRANCH=rdk-next

YOCTO_VERSION=dunfell

 SPIN=0

BUILD_TIME="2021-09-02 10:19:30"

Generated on Thu Sep 02  10:19:30 UTC 2021

root@raspberrypi-rdk-ipmc:~# 

             eg :- gst-launch-1.0 playbin uri=aamp://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8 video-sink=westerossink 

    

UI Navigation

For details on UI page, visit RDK Accelerator Home UI - Version 2.0#ControllerUI

Cobalt lifecycle using terminal:

Launching cobalt using RDK Shell : execute below command from ssh terminal

   curl --data-binary '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.launch", "params":{"callsign": "Cobalt", "type":"", "uri":""}}' -H 'content-type:text/plain;' http://127.0.0.1:9998/jsonrpc

 Setting a video URL using deeplink method.

    curl --data-binary '{"jsonrpc":"2.0", "id":3, "method":"Cobalt.1.deeplink","params": "<videoURL>"}' -H 'content-type:text/plain;' http://127.0.0.1:9998/jsonrpc

Sending enter key to proceed video playback

    curl --header "Content-Type: application/json" --request POST --data '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.generateKey", "params":{"keys":[ {"keyCode": 13,"modifiers": [],"delay":1.0}]}}' http://127.0.0.1:9998/jsonrpc

Suspending the plugin using RDKShell

   curl --data-binary '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.suspend", "params":{"callsign": "Cobalt"}}' -H 'content-type:text/plain;' http://127.0.0.1:9998/jsonrpc

Resuming the plugin

   curl --data-binary '{"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.launch", "params":{"callsign": "Cobalt", "type":"", "uri":""}}' -H 'content-type:text/plain;' http://127.0.0.1:9998/jsonrpc

Destroy

    curl --data-binary ' {"jsonrpc":"2.0", "id":3, "method":"org.rdk.RDKShell.1.destroy", "params":{"callsign":"Cobalt"}}' -H 'content-type:text/plain;' http://127.0.0.1:9998/jsonrpc

Trouble Shooting