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

Compare with Current View Page History

« Previous Version 22 Next »

<work in progress>

Before you begin

RDK is an open source code project distributed through industry standard open source licenses e.g. Apache 2.0.

Basic skills expected

Basic skills needed by a user to use the current documentation

  • Basic knowledge of Ubundu

  • Basic Build knowledge

  • Basic RDK knowledge

  • Basic knowledge of using a Raspberry Pi boxes (If trying in Raspberry Pi)

  • Basic knowledge of how to perform flashing and bring up a Raspberry Pi setup

  • Skills to connect and bring up Reference Board (If trying with Reference Board)

RDK Support

RDK Source Code

RDK V Releases

API Documentation

Build Setup Instructions

Hardware requirements and setting up the host environment and Downloading Source Code is explained below.

Setting up the Host Environment

Prerequisites


Requirement

Yocto 2.2 (Morty)

Yocto 3.1 LTS (Dunfell)

Linux

32/64 bit Ubuntu 16.04 LTS

Precise supported distributions and versions are here

64 bit Ubuntu 18.04 LTS

Precise supported distributions and versions are here

Free HDD Space

Minimum 100GB Free Memory

Minimum 100GB Free memory space

Oracle Virtual Box

5.0.40 or higher

-

Wireless Adapter

Brand Name: Tenda ralink & Model Number:W311MI

TP-Link Archer T4U AC 1200

-

USB to Ethernet Switch

To connect with Ethernet Switch & Multiple Clients


Host Tools version

Git 1.8.3.1 or greater

tar 1.24 or greater

Python 2.7.3

Git 1.8.3.1 or greater

tar 1.28 or greater

Python 3.5.0 or greater

Install the following packages for setting up the host VM

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


for yocto 2.2 (morty)
# essential packages installation
# super user mode is required
 
# major essential packages
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib g++-multilib build-essential chrpath socat bison curl
# supportive packages
sudo apt-get install libfile-slurp-perl 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 openjdk-7-jre


Note : Please note openjdk-7-jre package is not available for Ubuntu-16.04 anymore. Presumably openjdk-8-jre should be used instead.


for yocto 3.1 (dunfell)
# essential packages installation
# super user mode is required
 
# major essential packages
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib g++-multilib build-essential chrpath socat bison curl cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm

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”

Configure Git

Upgrade your Git version to 1.8.x or higher

On Ubuntu 16.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


# review your existing configuration
git config --list --show-origin
 
# configure user name and email address
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
 
# configure git cookies. Needed for Gerrit to only contact the LDAP backend once.
git config --global http.cookieFile /tmp/gitcookie.txt
git config --global http.saveCookies true

Configure repo

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

# create a bin directory
mkdir ~/bin
export PATH=~/bin:$PATH
 
# Download the repo tool and ensure that it is executable
curl http://commondatastorage.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.

Credential configuration

Note: it is also recommended to put credentials in .netrc when interacting with the repo.

A sample .netrc file is illustrated below

machine code.rdkcentral.com

    login <YOUR_USERNAME>

    password <YOUR_PASSWORD>

Downloading Source Code & Building

Downloading Source Code

Following commands fetch the source code using repo tool

$ mkdir <Directory-Name> && cd <Directory-Name>

Please use the following repo init command

$ repo init -u https://user@code.rdkcentral.com/r/manifests -m manifest.xml -b <branch_name>

Examples :

repo init -u https://code.rdkcentral.com/r/manifests -m rdkb.xml -b rdkb-20180527

repo init -u https://code.rdkcentral.com/r/manifests -m rdkb.xml -b master

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


$ repo sync -j`nproc` --no-clone-bundle

  • 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.

Building

$ source <setup-environment>

The above step configures and sets up your directory to start an appropriate build.

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

1) meta-rdk-bsp-emulator/conf/machine/qemuarmbroadband.conf
2) meta-rdk-bsp-emulator/conf/machine/qemux86broadband.conf
3) meta-rdk-bsp-emulator/conf/machine/qemux86hyb.conf
4) meta-rdk-bsp-emulator/conf/machine/qemux86mc.conf
5) openembedded-core/meta/conf/machine/qemuarm.conf
6) openembedded-core/meta/conf/machine/qemux86-64.conf
7) openembedded-core/meta/conf/machine/qemux86.conf

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

$ bitbake <image-name>

On Successful build, the ROOTFS (in vmdk format) would be available at the following reference location based on the build type :

-$ {HOME}/emulator/build-qemux86broadband/tmp/deploy/images/qemux86broadband/rdk-generic-broadband-image-qemux86broadband-<timestamp>.vmdk

Example :  

…/build-qemux86broadband/tmp/deploy/images/qemux86broadband/rdk-generic-broadband-image-qemux86broadband-20160217080610.vmdk


Environment Rpi 3b+

Host Setup

Refer the section Setting up the Host Environment for host setup details

Build Setup

build setup
repo init -u https://code.rdkcentral.com/r/manifests -b dunfell -m rdkv-nosrc.xml
repo sync -j `nproc` --no-clone-bundle --no-tags

Image Build

Media Client

Instruction to build media client image

image build
MACHINE=raspberrypi-rdk-mc source meta-cmf-raspberrypi/setup-environment
bitbake rdk-generic-mediaclient-wpe-image

Hybrid Gateway

Instruction to build hybrid gateway image

image build
MACHINE=raspberrypi-rdk-hybrid source meta-cmf-raspberrypi/setup-environment
bitbake rdk-generic-hybrid-wpe-image

Hybrid Gateway with Operator Ref. App

Instruction to build hybrid gateway image with operator reference application

image build
MACHINE=raspberrypirdkhybrefapp source meta-cmf-raspberrypi/setup-environment
bitbake rdk-generic-hybrid-refapp-image


The generated image resides under the directory build-<MACHINE>/tmp/deploy/images/<MACHINE> of the Yocto workspace

Flash Procedure

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

# of - output file (the device file for the inserted micro SD card
bzcat <IMAGE_NAME>-<MACHINE>.wic.bz2 | sudo dd of=/dev/sdb bs=4M iflag=fullblock oflag=direct conv=fsync

Known Issue

  • Cobalt is crashed upon launching over RDK Shell


Environment  IPSTB ref box

Same as RPI-above section and this can combine and can be made one.

Build basic image for Rpi

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

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

Image build

Generic image
MACHINE=raspberrypi-rdk-ipmc source meta-cmf-raspberrypi/setup-environment
 
bitbake rdk-generic-ipclient-image

Flashing Procedure

The image file will be generated under build-<MACHINE>/tmp/deploy/images/<MACHINE> directory.

eg: dsrava434@dvm-yocto3-docker-dsrava434:~/varsha/build-raspberrypi-rdk-ipmc/tmp/deploy/images/raspberrypi-rdk-ipmc$ pwd

/home/dsrava434/varsha/build-raspberrypi-rdk-ipmc/tmp/deploy/images/raspberrypi-rdk-ipmc

dsrava434@dvm-yocto3-docker-dsrava434:~/varsha/build-raspberrypi-rdk-ipmc/tmp/deploy/images/raspberrypi-rdk-ipmc$ ls -lrt rdk-generic-ip-stb-client_rdk-next_20210913112356.rootfs.wic.bz2

-rw-r--r-- 2 dsrava434 dsrava434 141959535 Sep 13 12:33 rdk-generic-ip-stb-client_rdk-next_20210913112356.rootfs.wic.bz2

dsrava434@dvm-yocto3-docker-dsrava434:~/varsha/build-raspberrypi-rdk-ipmc/tmp/deploy/images/raspberrypi-rdk-ipmc$ 

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

System View


Testing Procedure

  •  For connecting Controller UI, use URL: http://<machineip>:9998

  • Pluggins can be enabled or disabled from controller UI. 

  • Wifi related services can be triggered from Wi-Fi tab in controller UI. We can scan and select from available networks.

  • For ssh, we can use ssh root@machineip
  • 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

VERSION=4.09.02.21

SPIN=0

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

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

root@raspberrypi-rdk-ipmc:~# 

  • For playing a video using aamp-cli, launch aamp-cli from terminal, cd /usr/bin;aamp-cli.

  •  For playing a video using gstreamer, use 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

Known Issues

S. No

Issues

Status

Remarks

S. No

Issues

Status

Remarks

1Unable to pair bluetooth remote via resident appopenBT via controller UI is working as expected
2Wifi connections are unsuccessful via resident appOpenWifi via controller Ui is working as expected
3Playback using aamp-cli is not working as expectedopenplayback is successful, but screen is visible only if we disable residentapp service.
4Board reboot every 30 minutesopen

As work around, comment out On failure from dsmgr.service.

Path : /lib/systemd/system/dsmgr.service

Comment out " OnFailure=reboot-notifier@%i.service"

Jira Ticket: REFPLTV-1099 - Rebooting observed in RPi3 device in IPSTB image IN PROGRESS

5CNN application taking to more time to load the application.Sometimes device rebooted when we try to play any content.OpenSimilar behavior is observed in dunfell branch
6Vimeo application taking to more time to load the application.Sometimes device rebooted when we try to play any content. OpenSimilar behavior is observed in dunfell branch

Trouble Shooting

  •        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.


Build basic image IPSTB ref box

Code checkout:


$ mkdir <RDK_DIR>
$ cd <RDK_DIR>
$ repo init -u https://code.rdkcentral.com/r/collaboration/soc/amlogic/aml-accel-manifests -b rdk-next -m rdk-firebolt-dunfell-ref-sc2-k54-202109.xml 
$ repo sync -j4 --no-clone-bundle
 
or
 
$ repo init -u https://code.rdkcentral.com/r/collaboration/soc/amlogic/aml-accel-manifests -b rdk-next -m rdk-firebolt-dunfell-ref-sc2-k54-202109.xml --repo-branch=v2.9
$ repo sync -j4 --no-clone-bundle

Build image:


$ cd $(RDK_DIR)
$ export LOCAL_BUILD=1
$ source meta-amlogic/aml-setenv.sh
 
You're building on Linux
Lunch menu...pick a combo:
 
1.      mesons4-lib32-ap222
2.      mesons4-lib32-ap223
3.      mesons4-lib32-ap229
4.      mesons4-lib32-aq222
5.      mesons4-lib32-aq223
6.      mesonsc2-5.4-lib32-ah212
7.      mesonsc2-5.4-lib32-ah212-hybrid
8.      mesonsc2-5.4-lib32-ah212-vmx
9.      mesonsc2-5.4-lib32-ah219
10.     mesonsc2-5.4-lib32-ah232
11.     mesonsc2-5.4-lib32-ah232-irdeto
12.     mesonsc2-5.4-lib32-ah232-nagra
13.     mesonsc2-5.4-lib32-ah232-synamedia
 
Which would you like? [2] 4
 
$ bitbake lib32-rdk-generic-mediaclient-image


Other way:


$ repo init --no-clone-bundle -u https://code.rdkcentral.com/r/collaboration/oem/skyworth/skyworth-aml905X2-manifests -b rdk-next -m sc2-rdkservices-restricted.xml --repo-branch=v2.9
$ repo sync -j 32
$ source meta-rdk-skyworth-hx4x/setup-environment --hp44h-rdk --restricted --read-write
$ bitbake lib32-skyworth-generic-mediaclient-image

Flash image and bring up Rpi


Flash image and bring up IPSTB ref box

1) Using Burning tool
Keep pressing enter to stop at sc2_hp44h# 
Connect the usb-usb connector and launch Aml_Burn_Tool V3. 
sc2_hp44# run update
Burning tool should show connected. Select image and flash.
2) MfrUtils
Download the image to /data/ path on the device.
mfrUtil -u /data/aml_upgrade_package.img
3) Using firmware update plugin.
Please refer to Firmware Control plugin methods to flash through thunder plugin.
4) USB upgrade
Copy the aml_sdc_burn.ini and image to USB. 
Connect USB to the device and stop the device at the boot prompt. ie sc2_hp44h#
usb_burn aml_sdc_burn.ini
NOTE: Please reach out to Skyworth for aml_sdc_burn.ini

Flashing through xconf :

https://wiki.rdkcentral.com/display/RDK/Firmware+Upgrade+through+XCONF+Server

ToDo: Alanyse what to add from the above link

Yocto recipe structure of relevant components - wpeframework and RDKservices


Setup the Thunder plugin template


Develop a sample thunder plugin 


Interface with other RDK services


Interface with Lightning apps



List of Sections:



ItemData Exist?RemarksLinksComments 
Action Items
1Before you beginPartiallyBasic skills expected, relevant RDK links, hardware requirements, etc

Basic skills expected:  https://wiki.rdkcentral.com/display/RDK/Join+RDK

relevant RDK links: https://wiki.rdkcentral.com/display/RDK/Important+Links

hardware requirements: https://wiki.rdkcentral.com/display/RDK/How+to+Build#HowtoBuild-BuildSetupInstructions - Prerequisites

Can check the given linkToDo
2Environment Rpi 3b+Partiallybuild VM, pre requisites etc. for Dunfell buildshttps://wiki.rdkcentral.com/display/RDK/RDK-V+rdk-next+Yocto+3.1+dunfell+build+for+RaspberrypiCan check the given linkToDo
3Environment  IPSTB ref boxPartiallybuild VM, pre requisites etc. for Dunfell builds

same as RPI,


Belongs to Amlogic

Amlogic→ contact Akhil



4Build basic image for RpiYesBasic build commandshttps://wiki.rdkcentral.com/display/RDK/RDK-V+IP+Client+based+STB+on+Raspberrypi+3Can check the given linkToDo
5Build basic image  IPSTB ref boxYesBasic build commandshttps://wiki.rdkcentral.com/display/RDK/BSP+488+Dunfell+with+kernel+5.4+Release+Notes from AkhilAmlogic→ contact Akhil

6Flash image and bring up RpiPartiallyCurrent flash image steps + screenshotshttps://wiki.rdkcentral.com/display/RDK/RDK-V+IP+Client+based+STB+on+Raspberrypi+3#RDKVIPClientbasedSTBonRaspberrypi3-FlashingProcedureCan check the given linkToDo
7Flash image and bring up IPSTB ref boxPartiallyCurrent flash image steps + screenshotshttps://wiki.rdkcentral.com/display/RDK/Firmware+Upgrade+through+XCONF+Server
https://wiki.rdkcentral.com/display/RDK/Build+and+Flashing+Steps from Akhil

Amlogic→ contact Akhil



8Yocto recipe structure of relevant components - wpeframework and RDKservicesNoExplain layer structures in RDK-V  build.Refers both Rpi & Ref platformcan refer this : https://wiki.rdkcentral.com/display/RDK/RDK+Yocto+Build+Systems for yocto layer structure in RDK-V.

It belongs to meta-rdk-ext,met-rdk-video,meta-rdk-cmf.

Yocto layer structure for RDKservices:

this is the recipe where we can find rdkservices recipe in the meta-rdk-video layer.Based upon requirements it is adding in different meta layers 1 is meta-rdk-ext.Similarly broadcom also extended those one and for cmf some restrictions that is also plotted in.Not sure incorporate all like meta-rdk-ext,met-rdk-video,meta-rdk-cmf or meta-rdk-video is fine.

Ask deepthi like "which meta layer it is pointed to?Is this the correct approach?structure format ?"




Call with deepthi
9Setup the Thunder plugin templateNoCheck whether the Thunder plugin template earlier created and shared by the team is sufficient for this. Check whether this can be taken- https://wiki.rdkcentral.com/display/RDK/Defining+Thunder+Service+Plugins Can check the given linkToDo
10Develop a sample thunder plugin NoExplain how to develop based on the Thunder plugin templatecheck this page and its sub-pages : https://wiki.rdkcentral.com/display/RDK/RDKServices

May be Hello world we can take it.

Check with deepthi → check for template.

Template+Hello world example can give.
template : Fasil


Call with deepthi &Fasil
11Interface with other RDK servicesNoThunder Interfaces, COMRPC
Can get from RDKServices docsToDo
12Interface with Lightning appsNoThunderJS

Point of contact → krishnapriya

How they are using ThunderJS to communicate.


Can add: How sample application how it can interact like using some nodes .

Contact: Krishnapriya/Abhija

Abhija created page for systemservices


As per Lp : requires sometime assuming the content is not readily available


Call with krishnapriya,Abhija



  • No labels