IP Client based STB on Raspberrypi 3

Created on April 24, 2021

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.

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 ipstb_bringup branch, follow the below build procedure

    mkdir workspace

    cd workspace

    # initialize the manifest with repo tool

    repo init -u https://code.rdkcentral.com/r/rdkcmf/manifests -b dunfell -m rdkv-extsrc.xml

    repo sync -j `nproc` –no-clone-bundle –no-tags

    mkdir workspace

    cd workspace

    # initialize the manifest with repo tool

    repo init -u https://code.rdkcentral.com/r/rdkcmf/manifests -b rdk-next -m rdkv-extsrc.xml

    repo sync -j `nproc` –no-clone-bundle –no-tags

    generic image
    MACHINE=raspberrypi-rdk-ipmc source meta-cmf-raspberrypi/setup-environment
    
    bitbake rdk-generic-ipclient-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.

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

    System View

    JIRA Tracker

    Key Summary T Created Updated Due Assignee Reporter P Status Resolution
    Loading…
    Refresh

    Compilation Errors(Now all are resolved)

    S.NoComponentRecipeDependent onRemarks
    1sysintNo bb fileIt is not yet opensourcedIf added in meta-rdk it is fixed
    2sysint-confNo bb fileRemoving from package oss fileBuild is proceeding further
    3virtual/mfrlib
    Opensourcing
    4tenablehdcp-devmeta-rdk-video/recipes-extended/tenablehdcp/tenablehdcp_git.bbiarmmgrsvirtual/mfrlib
    5ledmgr-devmeta-rdk-video/recipes-extended/ledmgr/ledmgr_git.bbiarmmgrs
    6iarm-query-powerstate-devmeta-rdk-video/recipes-extended/sys_mon_tools/iarm-query-powerstate_git.bbiarmmgrsvirtual/mfrlib
    7tr69hostif-devmeta-rdk-video/recipes-thirdparty/tr69hostif/tr69hostif_git.bbBluetooth-mgr -> audiocapture -> iarmargs
    8Netsrvmgr-pni-controller, netsrvmgr-pni-settings-loader, netsrvmgr-devmeta-rdk-video/recipes-extended/networkmgr/netsrvmgr_git.bbiarmmgrs
    9iarm-set-powerstate-devmeta-rdk-video/recipes-extended/sys_mon_tools/iarm-set-powerstate_git.bbiarmmgrs
    10rdkservices-devmeta-rdk-video/recipes-extended/rdkservices/rdkservices_git.bbiarmmgrs
    11Key-simulator-devmeta-rdk-video/recipes-extended/sys_mon_tools/key-simulator_git.bbiarmmgrs
    12iarmmgrs-devmeta-rdk-video/recipes-extended/iarmmgrs/iarmmgrs_git.bbvirtual/mfrlib
    13ledmgr-extended-noop-devmeta-rdk-video/recipes-extended/ledmgr/ledmgr-extended-noop_git.bbiarmmgrs
    14bluetooth-mgr-devmeta-rdk/recipes-connectivity/bluetooth/bluetooth-mgr_git.bbAudiocapturemgr -> iarmargs
    15aampmeta-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.bbiarmmgrs
    16mfrlibs-rpi


    17Wpe-webkit-dev, wpe-webkit-web-inspector-plugin, wpe-webkitmeta-rdk-ext/recipes-extended/wpe-webkit/wpe-webkit_2.22.2.bb

    18audiocapturemgr, audiocapturemgr-devvirtual/media-utils iarmbus iarmmgrsiarmmgrsvirtual/mfrlib
    19ttsmeta-cmf-video/recipes-graphics/tts/tts.bbappendwpeframework-clientlibrariessecurity agent library is added to LD flag to fix the issue
    20mediautils

    removed mediautils


    Testing Procedure

    •  Controller UI : For connecting Controller UI, use URL: http://<machineip>:9998
    •      
    • Enabling / Disabling the Plugins from controller UI. 
    •      
    • Wi-Fi Services: Wifi related services can be triggered from Wi-Fi tab in controller UI. We can scan and select from available networks.
    •      
    • 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:~# 

                 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.

        

    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.

    2 responses to “IP Client based STB on Raspberrypi 3”

    1. Z-Ben Zmood says:

      ERROR: ParseError at …./meta-rdk-video/recipes-extended/ctrlm/ctrlm-xraudio-hal.bb:17: Could not inherit file classes/vsdk-utils.bbclass

    Leave a Reply

    Your email address will not be published.

    Go To Top