RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
<work in progress>
Table of Contents |
---|
RDK is an open source code project distributed through industry standard open source licenses e.g. Apache 2.0.
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)
Hardware requirements and setting up the host environment and Downloading Source Code is explained below.
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
Code Block | ||||
---|---|---|---|---|
| ||||
# 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.
Code Block | ||||
---|---|---|---|---|
| ||||
# 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
Code Block | ||
---|---|---|
| ||
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
Code Block | ||
---|---|---|
| ||
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
Code Block |
---|
# 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:
Code Block | ||
---|---|---|
| ||
# 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
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
Warning |
---|
|
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
Host Setup
Refer to the link for host setup details: Host Setup
Code Block | ||||
---|---|---|---|---|
| ||||
repo init -u https://code.rdkcentral.com/r/manifests -b dunfell -m rdkv-nosrc.xml repo sync -j `nproc` --no-clone-bundle --no-tags |
Instruction to build media client image
Code Block | ||||
---|---|---|---|---|
| ||||
MACHINE=raspberrypi-rdk-mc source meta-cmf-raspberrypi/setup-environment bitbake rdk-generic-mediaclient-wpe-image |
Hybrid Gateway
Instruction to build hybrid gateway image
Code Block | ||||
---|---|---|---|---|
| ||||
MACHINE=raspberrypi-rdk-hybrid source meta-cmf-raspberrypi/setup-environment bitbake rdk-generic-hybrid-wpe-image |
Instruction to build hybrid gateway image with operator reference application
Code Block | ||||
---|---|---|---|---|
| ||||
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
The micro SD card should not have any partition while flashing the image. The complete memory of the card should be free
Code Block | ||
---|---|---|
| ||
# 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 |
Same as RPI-above section and this can combine and can be made one.
Code Block | ||
---|---|---|
| ||
$ 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 |
$ 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:
Code Block | ||
---|---|---|
| ||
$ 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 |
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
https://wiki.rdkcentral.com/display/RDK/Firmware+Upgrade+through+XCONF+Server
ToDo: Alanyse what to add from the above link
Item | Data Exist? | Remarks | Links | Comments | Action Items | ||
---|---|---|---|---|---|---|---|
1 | Before you begin | Partially | Basic 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 link | ToDo | |
2 | Environment Rpi 3b+ | Partially | build VM, pre requisites etc. for Dunfell builds | https://wiki.rdkcentral.com/display/RDK/RDK-V+rdk-next+Yocto+3.1+dunfell+build+for+Raspberrypi | Can check the given link | ToDo | |
3 | Environment IPSTB ref box | Partially | build VM, pre requisites etc. for Dunfell builds | same as RPI, | Belongs to Amlogic Amlogic→ contact Akhil | ||
4 | Build basic image for Rpi | Yes | Basic build commands | https://wiki.rdkcentral.com/display/RDK/RDK-V+IP+Client+based+STB+on+Raspberrypi+3 | Can check the given link | ToDo | |
5 | Build basic image IPSTB ref box | Yes | Basic build commands | https://wiki.rdkcentral.com/display/RDK/BSP+488+Dunfell+with+kernel+5.4+Release+Notes from Akhil | Amlogic→ contact Akhil | ||
6 | Flash image and bring up Rpi | Partially | Current flash image steps + screenshots | https://wiki.rdkcentral.com/display/RDK/RDK-V+IP+Client+based+STB+on+Raspberrypi+3#RDKVIPClientbasedSTBonRaspberrypi3-FlashingProcedure | Can check the given link | ToDo | |
7 | Flash image and bring up IPSTB ref box | Partially | Current flash image steps + screenshots | https://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 | ||
8 | Yocto recipe structure of relevant components - wpeframework and RDKservices | No | Explain layer structures in RDK-V build.Refers both Rpi & Ref platform | can 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 | |
9 | Setup the Thunder plugin template | No | Check 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 link | ToDo | |
10 | Develop a sample thunder plugin | No | Explain how to develop based on the Thunder plugin template | check 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. | Call with deepthi &Fasil | |
11 | Interface with other RDK services | No | Thunder Interfaces, COMRPC | Can get from RDKServices docs | ToDo | ||
12 | Interface with Lightning apps | No | ThunderJS | 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 |