Versions Compared

Key

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

The aim of this document is to explain the procedure for OEM porting of RDK.


draw.io Diagram
bordertrue
diagramNameprocedure for OEM porting of RDK
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth803
revision7

Step 1 : Selection of SoC board with RDK ported on it

Refer this page SoC Platform Firmware to know the details about Yocto manifests, SoC meta-layer creation includes adding the Machine Configuration File for the new SoC .

Step 2 : Add OEM components

OEM needs to add OEM specific components like Firmware Upgrade, Secure Boot Loader, MFR libraries, Vendor Specific Information, NVRAM files and partition, Provisioning, OEM Specific drivers, STB Utilities, RDK Device-Specific Patches, Image Generation Utiities etc. as well as interfacing layers to the generic RDK for relevant OEM code modules ( see below )

Step 3 : Upgrade RDK/SoC components for OEM changes

Any Revision change in SoC layer is usually done by SoC’s build environment and the new SDK or revision is updated in recipe. If a new recipe is added for any update in SoC software, then can be handled using PREFERRED_VERSION Yocto flag in meta layer

Background Color
color#F5F5F5

Components of OEM Interface


Bluetooth

Bluetooth Manager implements the Bluetooth HAL i.e. Bluetooth Core (BTRCore) API. Bluetooth HAL interface provides a software abstraction layer that interfaces with the actual Bluetooth implementation and/or drivers. RDK Bluetooth HAL layer enables projects to pick any Bluetooth profiles as per their requirements. Bluetooth HAL uses BlueZ5.42 stack which is a quite popular Linux Bluetooth library.

  • Bluetooth HAL - Provides APIs to perform Bluetooth operations by abstracting and simplifying the complexities of Bt-Ifce (& BLuez)
  • Bt-Ifce - Abstracts Bluez versions and serves as a HAL for other Bluetooth stacks - Interacts with Bluez over DBus
  • Bluez - Interacts with kernel layer bluetooth modules

Modules

Crash Upload

  • Uploads core dumps to a FTP server if there are any

  • This interface is optional, OEM may implement a customized script for uploading the crash dump files to a server using specific certificate files

Device Settings

  • OEM implementation includes device specific configuration parameters & customizing data structures for front panel setting and so on

DTCP

  • Integrates the SoC provided DTCP library with DTCP/IP manager Interface implementation which Manages source/sink DTCP/IP sessions and performs the encryption/decryption
  • Provides setup scripts to initialize the default DTCP data to device specific persistent partition

hwselftest

Provides platform specific configuration options for Hardware test. Which will run periodically in background to check attached hardware health.

  • OEM dependency is limited to providing a configuration file hwselftest.conf which defines the hardware interfaces that should be tested e.g. partition name, HDMI, IR, MOCA and so on

LED Manager

LED Manager is used to control the LED patterns during different system events.

  • OEM should implement the template code to ensure that it matches with their LED coloring scheme and other configuration parameters such as brightness level and number of LED types, multi-color or single color LEDs

tenableHDCP

This handles the HDCP service operations such as enable or disable the HDCP.

  • OEM interface includes implementing manufacturer specific calls to read the keys and so on

Wi-Fi

  • OEM specific Wi-Fi driver configuration files and utility library can be added optionally


Info

For details on the Wi-Fi HAL Public APIs and Data Types, please refer: https://wiki.rdkcentral.com/doxygen/rdkv-opensourced/df/dce/group___w_i_f_i___h_a_l.html

Show If
groupconfluence_rdk_user, rdk_license_onlywiki

Manufacturer Library

The Manufacturer Library implements a set of interfaces that enable configuration and usage of vendor specific components in the STB.

Interfaces

MFR API:

The APIs comprise of functions that allow to -

  • Perform vendor-specific initialization
  • Read/Write serialized data
  • Validate and write the image into flash
  • Prepare for reboot STB (legacy)
  • Set cable card type
  • Get filesystem path configuration (legacy)
  • Generate DES session key using DFAST2 algorithm


Info

For more details, please refer: Maufacturer (MFR) Library API description

eCM API

The eCM API is intended to be used by DSGCC. It allows to -

  • Trigger the eCM initialization after the eCM booting is completed
  • Check if the image should be downloaded in case of CDL
FPD API:

The API controls front panel’s indicators and allows to register key stroke callbacks -

  • Set LED color
  • Get/Set LED brightness
  • Set LED blink
  • Get/Set text
  • Register/Unregister key callback

Storage Manager

Provides following functionalities in handling of storage devices such as SD card and so on.

  • Scans and mounts MMC devices
  • Manages SD card file properties
  • reads TSB health
  • OEM has to provide the following device specific configuration

[SDCARD_CONFIG]
MMC_DEV_NODE=/device/node/name/of/mmcblock
MMC_SRC_DEV_NODE=/dev/mmcblk<NodeName>
MOUNT_PATH=/tmp/data
FRAME_RATE_MBPS=<Max-FrameRate-Numeric>
IsTSBEnableOverride=<true/false>
filesystemtype=<vfat/ext3 ...>
DEFAULT_TSB_MAX_MINUTE=<TIME-DURATION-IN-MINUTE>
DISK_CHECK_SCR_PATH=/lib/rdk/disk_check
TSB_VALIDATION_FLAG=<true/false>

SYSINT

A collection of system integration shell scripts and configuration files that handles many of the initialization and routine job such as bringing up applications or rotating log etc. OEM can define following parts of sysint code. 

  • Customize "/etc/common.properties" and "/etc/device.properties" files which defines environment variables for the following:
    • Model name of the STB

    • Build type ( dev or prod)

    • Type of the device i.e. mediaclient or hybrid etc.

    • Default interface

    • OEM Manufacturer name e.g. Pace, Cisco, Arris etc.

    • SoC provider name. e.g. BRCM

  • Customize the utility scripts in lib/rdk which provides Shell functions for the following features and to the application layers.
    • To Access device specific information
    • Factory reset operation
    • Monitoring peripherals & hardware specific to the OEM device