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
Image Removed
Copyright 2021 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.
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 rdk-next ipstb_bringup branch, follow the below build procedure
Code Blockdeck |
---|
|
| RDark | title | Generic build
reference master rpi/dunfell/ipmc-nosrc
|
code | language | bash# bringing qt dependent components to dynamic layer
(cd meta-rdk; git fetch |
title | apply fixes |
---|
mkdir workspace cd workspace # initialize the manifest with repo tool repo init -u | componentsgeneric/rdk-oe/meta-rdk refs/changes/76/55976/3 && git cherry-pick FETCH_HEAD)
(cd meta-rdk-ext; git fetch https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-rdk-ext refs/changes/75/55975/2 && git cherry-pick FETCH_HEAD)
(cd meta-rdk-video; git fetch https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-rdk-video refs/changes/05/55905/3 && git cherry-pick FETCH_HEAD)
# depedencies removal
(cd meta-rdk-video; git fetch https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-rdk-video refs/changes/34/55534/1 && git cherry-pick FETCH_HEAD)
(cd meta-rdk-video; git fetch https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-rdk-video refs/changes/04/55904/1 && git cherry-pick FETCH_HEAD)
# IP STB changes
(cd meta-rdk; git fetch https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-rdk refs/changes/56/55456/8 && git cherry-pick FETCH_HEAD)
# others
## bringing sysint to rdk-video layer (open sourcing)
(cd meta-rdk-video; git fetch https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-rdk-video refs/changes/12/55812/4 && git cherry-pick FETCH_HEAD) |
Code Block |
---|
language | bash |
---|
title | other workarounds |
---|
|
git clone https://code.rdkcentral.com/r/components/generic/rdk-oe/meta-cmf-raspberrypi-restricted -b rdk-next
mkdir -p meta-cmf-raspberrypi/recipes-oem
mv meta-cmf-raspberrypi-restricted/recipes-oem/mfrlibs meta-cmf-raspberrypi/recipes-oem |
...
manifests -b rdk-next -m rdkv-extsrc.xml repo sync -j `nproc` --no-clone-bundle --no-tags |
|
Code Block |
---|
language | bash |
---|
theme | RDark |
---|
title | generic image |
---|
|
MACHINE=raspberrypi-rdk-ipmc source meta-cmf-raspberrypi/setup-environment
bitbake rdk-ipgeneric-mcipclient-image
|
...
Image build
...
- Note. The kernel Image and root filesystem will be
...
- created under the ./tmp/deploy/images/raspberrypi-rdk-ipmc folder
Flashing Procedure
The micro SD card should not have any partition while flashing the image. The complete memory of the card should be free.<MACHINE> directory
Code Block |
---|
|
# Insert the micro SD card to the host system and mention the card's device file name
# of input- output file (if) is the imagedevice file to flashfor and the outputinserted file (of) is the card's device file name
bzcat rdk-ip-mc-image-raspberrypi-rdk-ipmc.wic.bz2micro SD card
bzcat <image name> | sudo dd of=/dev/<sd file> bs=4M iflag=fullblock oflag=direct conv=fsync |
System View
Image Added
JIRA Tracker
Jira |
---|
server | JIRA |
---|
columnIds | issuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
maximumIssues | 20 |
---|
jqlQuery | targets = R-Pi AND project = REFPLTV AND labels in (_rdk_ip_stb, _rdk_rpi_open_sourcing) |
---|
serverId | 11deff04-0380-3a3d-a916-0849d4e573f7 |
---|
|
Compilation Errors(Now all are resolved)
S.No | Component | Recipe | Dependent on | Remarks |
---|
1 | sysint | No bb file | It is not yet opensourced | If added in meta-rdk it is fixed |
2 | sysint-conf | No bb file | Removing from package oss file | Build is proceeding further |
3 | virtual/mfrlib |
| Opensourcing |
|
4 | tenablehdcp-dev | meta-rdk-video/recipes-extended/tenablehdcp/tenablehdcp_git.bb | iarmmgrs | virtual/mfrlib |
5 | ledmgr-dev | meta-rdk-video/recipes-extended/ledmgr/ledmgr_git.bb | iarmmgrs |
|
6 | iarm-query-powerstate-dev | meta-rdk-video/recipes-extended/sys_mon_tools/iarm-query-powerstate_git.bb | iarmmgrs | virtual/mfrlib |
7 | tr69hostif-dev | meta-rdk-video/recipes-thirdparty/tr69hostif/tr69hostif_git.bb | Bluetooth-mgr -> audiocapture -> iarmargs |
|
8 | Netsrvmgr-pni-controller, netsrvmgr-pni-settings-loader, netsrvmgr-dev | meta-rdk-video/recipes-extended/networkmgr/netsrvmgr_git.bb | iarmmgrs |
|
9 | iarm-set-powerstate-dev | meta-rdk-video/recipes-extended/sys_mon_tools/iarm-set-powerstate_git.bb | iarmmgrs |
|
10 | rdkservices-dev | meta-rdk-video/recipes-extended/rdkservices/rdkservices_git.bb | iarmmgrs |
|
11 | Key-simulator-dev | meta-rdk-video/recipes-extended/sys_mon_tools/key-simulator_git.bb | iarmmgrs |
|
12 | iarmmgrs-dev | meta-rdk-video/recipes-extended/iarmmgrs/iarmmgrs_git.bb | virtual/mfrlib |
|
13 | ledmgr-extended-noop-dev | meta-rdk-video/recipes-extended/ledmgr/ledmgr-extended-noop_git.bb | iarmmgrs |
|
14 | bluetooth-mgr-dev | meta-rdk/recipes-connectivity/bluetooth/bluetooth-mgr_git.bb | Audiocapturemgr -> iarmargs |
|
15 | aamp | meta-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.bb | iarmmgrs |
|
16 | mfrlibs-rpi |
|
|
|
17 | Wpe-webkit-dev, wpe-webkit-web-inspector-plugin, wpe-webkit | meta-rdk-ext/recipes-extended/wpe-webkit/wpe-webkit_2.22.2.bb |
|
|
18 | audiocapturemgr, audiocapturemgr-dev | virtual/media-utils iarmbus iarmmgrs | iarmmgrs | virtual/mfrlib |
19 | tts | meta-cmf-video/recipes-graphics/tts/tts.bbappend | wpeframework-clientlibraries | security agent library is added to LD flag to fix the issue |
20 | mediautils |
|
| removed mediautils |
Testing Procedure
- Controller UI : For connecting Controller UI, use URL: http://<machineip>:9998
- Image Added
- Enabling / Disabling the Plugins from controller UI.
- Image Added
- Wi-Fi Services: Wifi related services can be triggered from Wi-Fi tab in controller UI. We can scan and select from available networks.
- Image Added
- R-Pi Board Console Access : Execute ssh root@machineip from your host PC
- Image Details Verification: For verifying the image details, we can use cat /version.txt command.
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:~# |
---|
- Playing a video using gstreamer, with aamp as gstreamer plugin element by using aamp:// in the uri:
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
- Playing a video using gstreamer, with gst-launch-1.0.
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
- Playback through Youtube Application : For launching youtube from controller UI, enable cobalt plugin, youtube page will be loaded in TV UI.
Image Added
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
- Overcoming build time fetch errors:
- If fetch failure occurs for libinput, comment SRC_URI related changes from meta-cmf/recipes-graphics/libinput/libinput_git.bbappend.
- If fetch failure occurs for gst-plugins-ugly,use mirror source, for that comment out SRC_URI related changes from meta-cmf/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bbappend.
- If the wireless networks are not listed in controller wifi page, try after disabling and enabling wifi from Network page, networks will be listed.
- Disable cntlm-main.service if device reboot occasionally.