Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page provides the step-by-step procedures for OEMs to adopt RDK-B. OEM layer sits on top of the SoC layer and later adds support for software for boot-up, image updates, and APIs to handle custom drivers. These could be specializations to the generic or SoC components or complementary software components provided by the OEM to create a fully functional set-top device.

Background Color
color#F5F5F5

Before You Begin
Anchor
Before You Begin
Before You Begin


RDK License

SoC vendors are advised to get into an agreement with RDK Management LLC to obtain the free license so as to use the complete RDK Code base in their platform. More details about license is available at https://rdkcentral.com/licenses/ . Please email info@rdkcentral.com if you have additional questions about licenses or membership


Background Color
color#F5F5F5

Bringing up RDK by OEM- Approach
Anchor
Bringing up RDK by OEM- Approach
Bringing up RDK by OEM- Approach


This section will detail the recommended step by step procedure of adopting RDK by OEM

Product Specifications


The first step to get a fully functional product is to define the product features and see if they meet the standard requirements. See here to know what are all the features available in RDK-B and can implement based on your requirement. OEM can use this as a guide while engineering the RDK OEM platform. OEM can cross check the expected features/specifications with the capabilities of the SoC platform being used and can finalize the features supported by the product.

RDKM On-boarding
Anchor
RDKM On-boarding
RDKM On-boarding


RDKM provides a collaboration zone facility for SoCs to facilitate easier engineering of RDK based devices. The collaboration zone will help SoCs to work with OEMs, RDKM and any 3rd party along with a common space to develop & integrate, manage and verify the device. The zone includes facilities for code management, a confluence based RDK Wiki for knowledge management & sharing, a JIRA for tracking activity progress, issues as well as to manage the activities, a test setup to validate devices. The access restrictions implemented will help the collaboration zone to be accessible only for the authorized personnel thereby guarding any sensitive information related to SoC/OEM/Third party.

Roles & Responsibilities

A table explaining the roles & responsibilities of OEM & RDKM in the collaboration zone is given below:


#

Activity

Owner

Remarks

1

OEM Collaboration zone creation

RDKM

RDKM will setup Collaboration space, access restrictions

2

JIRA Project creation

OEM

JIRA project. OEM will be the owner of the JIRA project.

3

SoC / OEM meta -layer creation in collaboration zone

OEM/RDKM

RDKM will create the space and SoC/OEM push the code changes

4

Device specific HAL repo creation

OEM

Create necessary device specific HAL implementation for porting RDK into Accelerator

5

Share SoC SDK Artifacts

RDKM

Details which SDK version to be used. RDKM will support the integration with OEM libraries

6

Manifest creation

OEM

Manifest for building the accelerator

7

Provide Devices to RDKM team

OEM


8

Device flashing instructions/recovery mechanisms

OEM

OEM should share the device flashing instruction.

9

Sanity, Functionality Testing & automation tests

RDKM/OEM

TDK-B Documentation

10

Monthly release & tagging

OEM

Monthly tagging and release with stakeholders along with test results

Anchor
How to create a collaboration zone
How to create a collaboration zone


Expand
titleHow to create a collaboration zone

It is expected that OEM has already obtained a license to work with RDKM (If not, OEM can send a mail to support@rdkcentral.com to start off with the discussions) .

With this user account, an INFRA ticket can be raised at https://jira.rdkcentral.com to create a collaboration repo. The ticket should contain the details for

  • Location of collaboration zone
  • Collaboration zone access groups/members

Anchor
How to create user accounts for OEM members
How to create user accounts for OEM members


Expand
titleHow to create user accounts for OEM members

OEM users can sign up at https://wiki.rdkcentral.com/signup.action to create a user account in RDK. For any issues faced, a mail can be sent to support@rdkcentral.com

Anchor
How to get access to the collaboration zone/repo
How to get access to the collaboration zone/repo


Expand
titleHow to get access to the collaboration zone/repo

An INFRA ticket needs to be raised at https://jira.rdkcentral.com with the below details

  • Collaboration zone/repo name
  • User name and the mail id's of the members to whom the access is needed
  • OEM collaboration zone/repo owner name

For any issues faced, a mail can be sent to support@rdkcentral.com

Anchor
How to create a JIRA project for OEM
How to create a JIRA project for OEM

Expand
titleHow to create a JIRA project for OEM

An INFRA ticket needs to be raised at https://jira.rdkcentral.com to create a JIRA project for OEM.  Once approvals are received along with required access restrictions, the project will be created. . For any issues faced, a mail can be sent to support@rdkcentral.com

Anchor
How to create a Git/ Github repository for meta layers or manifests or HAL layers
How to create a Git/ Github repository for meta layers or manifests or HAL layers


Expand
titleHow to create a Git/ Github repository for meta layers or manifests or HAL layers

To get a Git repository a request needs to be raised to CMF team using the CMFSUPPORT ticket at https://jira.rdkcentral.com . Once approvals are received along with required access restrictions, the repo will be created. Any changes in merge permissions can be requested in same ticket. For creating any specific branches in the repo, another ticket in the same CMFSUPPORT can be raised. For any issues faced, a mail can be sent to support@rdkcentral.com .

Once the git repo is created, it can be accessed at https://code.rdkcentral.com

Anchor
How to get access to SoC SDK artifacts
How to get access to SoC SDK artifacts


Expand
titleHow to get access to SoC SDK artifacts

An INFRA ticket needs to be raised at https://jira.rdkcentral.com to get access to SDK artifacts.  Once approvals are received along with required access restrictions, the access should be in place. For any issues faced, a mail can be sent to support@rdkcentral.com

Product Engineering


Once the product features are decided, the device engineering can be started. OEM needs to decide on the hardware layout that incorporates OEM components to the SoC board. The device will be categorized either as a home broadband device or a business gateway based on the hardware capabilities.

Device Firmware

OEM can make use of the below details to start developing a Yocto build to engineering the device firmware builds based on RDK Yocto build setup.

Yocto based RDK builds are flexible enough to easily accommodate SoC & OEM changes. The starting point for the Yocto builds is a manifest file. The manifest file is an xml file that contains details of the different open embedded Yocto build layers, meta layers, RDK as well as open-source components that need to be fetched during initial stages ( than during bitbake time ) as well as the URL locations from where the data can be pulled. A set of sample manifests that can be used as a template for developing OEM specific manifests are given below

Expand
title Click here to see set of sample manifests for developing OEM specific manifests
#

File

Remarks

1

Device Specific Manifest

This is the starting point of the build and is specific to a device. Usually, it contains references to other manifest files which will be having a specific set of repos

2

OEM manifest

This manifest contains meta layer details of OEM( which might or might not be generic across OEMs multiple devices ) and, optionally, some OEM specific repos

3

SoC manifest

This manifest contains meta layer details of SoC and, optionally, some SoC specific repos

4

RDK-B manifest

This manifest can contain meta layers specific to RDK & RDK-B and, for EXTERNALSRC cases, the RDK & RDK-B component repo details too. It might be supplemented with a conf file too

5

OE layers manifest

This manifest has details of the basic Yocto Open Embedded layers

6

Third-party apps

This manifest can contain meta layers related to their applications which are chosen by OEM


For more details on getting RDK-B ported to an OEM device, please refer to the links RDK-B OEM Specific Porting .

SoC/OEM meta-layer creation

To match the layered structure of Yocto builds, a OEM-specific layer is used to include OEM changes and additions. Use the yocto-layer create sub-command to create a new general layer.

$ yocto-layer create mylayer

There shall be a separate device (machine) configuration file (.conf) for each device for the particular OEM for which the layer is intended. The general naming terminology for the OEM layer is meta-rdk-oem-<oem name>

The device (machine) configuration file shall include the corresponding include (.inc) file to get machine configuration details.


Expand
title Click here for more details on SoC/OEM meta-layer creation

Adding a new machine to Yocto involves the following:

Create a new layer that will hold all the recipes and machine configurations for the new SoC/OEM

the yocto-layer command is not enabled by default,  If you want to add a new layer using the "yocto-layer" script, you need to first download the poky and put it in your codebase, and run the script to create a new folder.

You can download poky from git using :               

$  git clone https://github.com/seife/yocto-poky.git 

Use the yocto-layer create sub-command to create a new general layer.

$ yocto-layer create mylayer <specify the layer which you need to be created>

Eg :

Please enter the layer priority you'd like to use for the layer: [default: 6] 6
Would you like to have an example recipe created? (y/n) [default: n] n
Would you like to have an example bbappend file created? (y/n) [default: n] n
New layer created in meta-new-layer.

There shall be a separate device (machine) configuration file (.conf) for each device for the particular chip family for which the layer is intended for.

For Eg: A layer "meta-rdk-oem-OEM-X-SOC-Y" means this layer shall be able to build any devices manufactured by  OEM "X" with all variants of SoC "Y" like Y-1,Y-2 etc

The device (machine) configuration file shall include the corresponding include (.inc) file to get machine configuration details.

Adding the Machine Configuration File for the new SoC/OEM

To add a machine configuration, you need to add a .conf file with details of the device being added to the conf/machine/ file.

The most important variables to set in this file are as follows:

  • TARGET_ARCH (e.g. "arm")
  • PREFERRED_PROVIDER_virtual/kernel (see below)
  • MACHINE_FEATURES

You might also need these variables:

  • KERNEL_IMAGETYPE (e.g. "zImage")
  • IMAGE_FSTYPES (e.g. "tar.gz")
  • The default configuration is defined in meta-rdk/conf/distro/rdk.conf and it should be overwritten by the machine-specific conf file.

Adding a Kernel for the Machine

The OpenEmbedded build system needs to be able to build a kernel for the machine. We need to either create a new kernel recipe for this machine or extend an existing recipe. We can find several kernel examples in the source

The directory at meta/recipes-kernel/linux that you can use as references. If you are creating a new recipe, the following steps need to be done,

  • Setting up a SRC_URI.
  • Specify any necessary patches
  • Create a configure task that configures the unpacked kernel with a defconfig.

If you are extending an existing kernel, it is usually a matter of adding a suitable defconfig file. The file needs to be added into a location similar to defconfig files used for other machines in a given kernel.

A possible way to do this is by listing the file in the SRC_URI and adding the machine to the expression in COMPATIBLE_MACHINE:

  • COMPATIBLE_MACHINE = '(qemux86|qemumips)'

Adding Recipe for SoC/OEM

The following kind of recipes can be added to SoC/OEM layer. The recipes shall be grouped as described in slide “BSP Reference Layer”

  • recipes (.bb) to build Kernel
  • recipes(.bb)  to build SDK
  • Kernel patches (SoC/OEM specific - if any)
  • SDK patches (SoC/OEM specific - if any)
  • Any SoC/OEM specific scripts or files which need to be installed in RF

Creating packages for building images 

Create a custom package group for the SoC/OEM which shall list all the recipes that are required for this image.

For example, the following recipe can be appended to the broadband package group.

meta-rdk-soc-<soc>/meta-<processor_name>/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend:
RDEPENDS_packagegroup-rdk-ccsp-broadband_append += " \
    ccsp-cr \
    rsync \
    utopia \
    lighttpd \
.
.
.
"


Create a custom image for the required SoC/OEM. For example:

meta-rdk-<soc>/meta-<processor_name>/recipes-core/images/<image>.bb:
IMAGE_INSTALL += " \
    packagegroup-<soc/oem specific packages> \
    "
"

Adding your own custom layer

Use the yocto-layer create sub-command to create a new layer.

$ yocto-layer create newlayer

Add this to ./meta-rdk/conf/bblayers.conf.sample.

Recipes can be placed inside recipes-< > folders. There can be a configuration file inside conf/ for layer-specific configuration and classes folder for keeping information that is useful to share between metadata files.


TDK



RDKM offers an in-house Test & certification suite that facilitates OEMs to get their devices tested for their features.

For more details on TDK refer: TDK-B Documentation

SDK Releases



Once the porting of RDK-B gets completed by SoC vendors, they will make it available for OEMs. SoC will provide the HAL+ SDK binary or the complete source code, which the OEMs can receive and install.

HAL + SDK binary

If the SoC vendor provides HAL+ SDK binary, the OEMs can make use of the RDK Artifactory server. Artifactory server is a Repository Manager that functions as a single access point organizing all the binary resources including proprietary libraries, remote artifacts, and other 3rd party resources. It is a secure and restricted server, only collaboration members will have access to this server. OEM and SoC secure information can be hosted on the Artifactory server.

OEM vendors will work in collaboration with the SoC vendor. SoC vendor can define a HAL layer, share the source of HAL & yocto Yocto meta layer that can be stored in RDK CMF Git repository, share the SDK binary that can be stored in RDK Artifactory (Shared only from authorized SoC vendors who will work in collaboration with the OEM vendor) and then publish necessary documentation on how to build the OEM SDKimage. OEM vendors can use the git/ Artifactory for periodic updates (for releases) or for bug fixes. All the source code, binary and documentation will be strictly access restricted and access will be allowed only for authorized personnel by OEM vendors.


The artifactory server can be accessed by adding the Artifactory details and login credentials in the .netrc file, just like it is done for normal git repositories. A sample is given below:

machine your.artifactory.host
login YOUR_ARTIFACTORY_USERNAME
password YOUR_PASSWORD_OR_KEY_OR_TOKEN

Complete source code

If the SoC vendor provides complete source code, OEM vendors can work in collaboration with the SoC vendor. SoC vendor can define a HAL layer, share the source of HAL & yocto meta layer that can be stored in RDK CMF Git repository, and then publish necessary documentation on how to build the OEM SDK.OEM vendors can use the git/ Artifactory for periodic updates (for releases) or for bug fixes. All the source code, binary and documentation will be strictly access restricted and access will be allowed only for authorized personnel by OEM vendors.

For both approaches, the RDKM collaboration zone will be used with strict access restrictions.

Collaboration with

SoC Vendors

Operators


After a successful bring-up of an RDK on the OEM platformbased image in OEM device, the next step will be to allow OEMs operators to work with SoC vendors OEMs to get a device based on the OEM platformoperator code on that OEM device. RDKM offers collaboration space for OEMs which would help OEMs to collaborate with SoC and RDK teams (as well as any 3rd party) in their journey to engineering work with an operator specific layer and bring up a successful RDK product.

RDKM collaboration zone includes features like (but not limited to) CMF facility to maintain build manifests as well as SoC/OEM/ SoC Operator specific code, Soc and OEM SDK artifact  artifact storage facility, JIRA & RDK Wiki spaces, integration with Test & Certification suites, monthly & release tagging, etc.

Please refer to RDKM On-boarding for more details on facilities available for OEMs and SoCs as part of the collaboration zone. In short, it will include:

  • Access restricted Git repositories and Artifactory servers
  • Access restricted Confluence and JIRA spaces for Management and Documentation
  • Access to RDKM support as well as extended documentation
  • Access to test & certification support 


Background Color
color#F5F5F5

Procedure for OEM porting of RDK
Anchor
Procedure for OEM porting of RDK
Procedure for OEM porting of RDK


Include Page
RDK-B 4.0 -OEM Porting Guide
RDK-B 4.0 -OEM Porting Guide