RDK-B Emulator Users Guide


Copyright 2015 RDK Management, LLC. All rights reserved.

The contents of this document are RDK Management, LLC Proprietary and Confidential and may not be distributed or otherwise disclosed without prior written permission of RDK Management, LLC.

Document Status 



Document Title

RDK Emulator Users Guide

Version


Date

18/11/2021

Table of Contents


Introduction


RDK (Reference Design Kit) is an integrated set of software components, tools and documentation that help in the development of the software stack for set-top box based on the standard Linux operating system which is designed to meet the requirements of the latest generation media servers and clients.

The RDK emulator is an x86 based implementation of the RDK software stack. It is primarily targeted towards the RDK development community (integrators, component developers and application developers) that attempts to simplify the process of working with the RDK software stack without the need for a reference hardware platform.

Purpose of this Document


The purpose of this document is to enable RDK users and developers to be able to bring up the RDK stack and emulator on the PC platform. The document also includes step-by-step procedures to setup & build RDK Emulator

Known Issues


  • eth0/erouter0  interface <ip address> is failing to connect ssh . But, able to connect  ssh with  host using port forwarding in Network settings of Virtual Box.
  • Client is getting the <ip address> from Emulator . But, not in 10.x.x.x 
  • Failed to open webUI configuration .

Abbreviations and Acronyms


The following table describes the acronyms and abbreviations used in this document

Abbreviation/Acronym

Description

RDK

Reference Development Kit

VM

Virtual Machine

VBox

Virtual Box

Overview of RDK Emulator


  • Executes on x86-based platforms including virtualization environments such as Virtual Box and QEMU.
  • Built using Yocto and RDK build frameworks
  • RDK-B Emulator runs RDK-B stack on PC platform, validated through the virtual box based virtualization platform  .

  • Hardware Abstraction Layer supporting Ethernet and Wi-Fi functionalities are introduced to adopt the PC platform.

  • Wi-Fi Hotspot support through external wireless adapter.USB to Ethernet Adapter is used for Ethernet LAN connections.

  • Support of advance configurations like firewall, parental control, WAN Manager and remote management etc ...

Supported Build Types



Build Types

RDK Components Involved

Features/Applications Supported

Final Image Name

Startup Application

rdk-generic-broadband-image
  1. rdklogger
  2. utopia
  3. ccsp components
  1. Wan Manager 
  2. parental control
  3. firewall
  4. Remote Managment
  5. yocto 3.1, dunfell

rdk-generic-broadband-image-qemux86broadband.wic.vmdk 

WebUI configuration

Build Setup Instructions


Setting up the Host Environment


How to Build#SettinguptheHostEnvironment

Downloading Source Code & Building


RDK-B Emulator Dunfell Build Instructions

Bringing up the Emulator on Virtual Box


Host Requirements

RequirementRemarks
Linux                           32/64 bit Ubuntu 16.04 operating system
Free HDD SpaceMinimum 100GB Free Memory
Oracle Virtual Box4.3.18 or higher

Install Virtual Box and follow the following steps to bring up RDK Emulator on Virtual Box:

In the following steps, it is recommended to review the description and screenshot completely before proceeding with steps.

STEP 1: Create your new VM Instance:

  • Open Virtualbox

  • Select New [A popup will come up]

  • Select Type as ‘Linux’

  • Select Version as ‘Other Linux (32 Bit)’

  • Click on “Next”

         


  • Choose a Memory Size of 512 MB

           

  • Use an existing virtual hard drive file which would be your newly built image in *.vmdk format and create your VM:

           

STEP 2: Configure your new VM Instance:

  • Click on “Settings” tab to configure your new VM instance

         

  • Configure your VMs network settings
  • Choose “Bridged Adapter” mode as shown in the screenshot below

       

STEP 3: Run Emulator in Vbox :

  • Boot up your VM by clicking on start
  • Click “start” to launch the Emulator vmdk image
  •  Provide “root” to login Emulator as shown in the screen shot
  •  Emulator usually fetches IP address by default,i.e "ifconfig erouter0"
  •  If not then assign statically using the commands.
  •  For ex: ifconfig eth0/erouter0 192.168.1.49
  •  route add default gw 192.168.1.1 eth0/erouter0
  •  Once IP address for Emulator is up, Emulator shall be accessed in the Host PC using the below command

Once you have the IP address you may SSH into your VM from your linux shell console. Use root as the ssh user.

$ ssh root@<erouter0 ip>
root@qemux86broadband:/# ifconfig
br106     Link encap:Ethernet  HWaddr E6:B3:27:79:E4:79  
          inet addr:192.168.106.1  Bcast:192.168.106.255  Mask:255.255.255.0
          inet6 addr: fe80::e4b3:27ff:fe79:e479/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:1124 (1.0 KiB)

br403     Link encap:Ethernet  HWaddr 3E:7D:94:CE:18:42  
          inet addr:192.168.245.1  Bcast:192.168.245.255  Mask:255.255.255.0
          inet6 addr: fe80::3c7d:94ff:fece:1842/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:1124 (1.0 KiB)

brebhaul  Link encap:Ethernet  HWaddr DA:B4:09:16:BD:69  
          inet addr:169.254.85.1  Bcast:169.254.85.255  Mask:255.255.255.0
          inet6 addr: fe80::d8b4:9ff:fe16:bd69/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:1124 (1.0 KiB)

brlan0    Link encap:Ethernet  HWaddr 42:39:B8:18:9B:F3  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::4039:b8ff:fe18:9bf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:1320 (1.2 KiB)

erouter0  Link encap:Ethernet  HWaddr 08:00:27:B4:EB:E3  
          inet addr:192.168.1.49  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:feb4:ebe3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:223 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:17548 (17.1 KiB)  TX bytes:9684 (9.4 KiB)

gre0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP RUNNING NOARP  MTU:1476  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:14866 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14866 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:763416 (745.5 KiB)  TX bytes:763416 (745.5 KiB)

sit0      Link encap:IPv6-in-IPv4  
          inet6 addr: ::127.0.0.1/96 Scope:Unknown
          UP RUNNING NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

STEP 4: Lanching Emulator in WebUI :

  • In the Host-PC Browser, Enter the eth0/erouter0 IP:8080 to get WebUI
    Ex:http://192.168.1.49:8080
  • WebUI Login Credential's
    Username: admin
    Password: password

Launching WebUI App



  • In the Host-PC Browser, Enter the eth0 /erouter0 IP:8080 to get WebUI
    Ex: http://192.168.1.49:808
  • WebUI Login Credential's
    Username: admin
    Password: password

RDK-B Environment Setup








  • No labels

16 Comments

  1. Unknown User (15815519009)

    Could you share the RDK-B Emulator flash image, I want to study and test it, thanks

    1. Unknown User (priyankaa.kvb)

      Hi Unknown User (15815519009) ,

      Link for Emulator build : RDK-B Emulator Dunfell Build Instructions

      We recommend to create a build rather than sharing the image . The ready to use image is available only for Rpi at https://rdkcentral.com/download-instructions/?caller=broadband

      Emulator releases are now not actively made, so dunfell build for emulator should work.

      Please try and let us know if you are facing any issues.

      Regards,
      Priyankaa KVB 

  2. Unknown User (matrixchou)

    Why i always get login error "Incorrect password for admin!"     

    I used admin/password 


    (sad) 

  3. Unknown User (sipra.s)

    Hi Unknown User (matrixchou) ,


    Could you Reset the admin password first then try again with admin/password ( dmcli eRT setv Device.UserInterface.PasswordReset bool true ).

    1. Unknown User (matrixchou)

      Thank you, now it's working 

  4. Unknown User (arthur.cc.huang)

    I follow instructions to build the image and set up VM, but I always get login error "Incorrect password for admin!" even if reset the admin password  

    1. Unknown User (deepika.b)

      Hi Unknown User (arthur.cc.huang)

      Once you launch the VM using  Emulator vmdk image, provide “root” to login.
      For WebUi login, "password" is the default password , it should work after Reset also.( dmcli eRT setv Device.UserInterface.PasswordReset bool true)
      if still the issue present , please reset to default factory settings or reboot the vm once and try.

      1. Unknown User (arthur.cc.huang)

        Hi Unknown User (deepika.b) 


        It still show "Incorrect password for admin!" for web login after reset( dmcli eRT setv Device.UserInterface.PasswordReset bool true) and reboot.

        1. Unknown User (deepika.b)

          Hi Unknown User (arthur.cc.huang) 

          the login issue seen in dunfell build and the issue still needs to be fixed. At present ,the stable release for emulator is available in release branch . Could you please try with  with release branch, Morty version for emulator.

          1. Unknown User (arthur.cc.huang)

            Hi Unknown User (deepika.b) 

            I try to build morty branch, but get some errors after "repo sync -j4 --no-clone-bundle"

            fatal: Couldn't find remote ref refs/heads/master

            rdkb/components/opensource/ccsp/webui-bwg:
            fatal: Couldn't find remote ref refs/heads/master
            rdkb/components/opensource/ccsp/webui-bwg: sleeping 4.0 seconds before retrying
            fatal: Couldn't find remote ref refs/heads/master

            rdkb/components/opensource/ccsp/webui-bwg:
            fatal: Couldn't find remote ref refs/heads/master
            error: Cannot fetch rdkb/components/opensource/ccsp/webui-bwg from https://code.rdkcentral.com/r/a/rdkb/components/opensource/ccsp/webui-bwg

            fatal: Couldn't find remote ref refs/heads/master

            rdkb/devices/emulator/hal:
            fatal: Couldn't find remote ref refs/heads/master
            rdkb/devices/emulator/hal: sleeping 4.0 seconds before retrying
            fatal: Couldn't find remote ref refs/heads/master

            rdkb/devices/emulator/hal:
            fatal: Couldn't find remote ref refs/heads/master
            error: Cannot fetch rdkb/devices/emulator/hal from https://code.rdkcentral.com/r/a/rdkb/devices/emulator/hal

            fatal: Couldn't find remote ref refs/heads/master

            rdkb/tools/tdkb:
            fatal: Couldn't find remote ref refs/heads/master
            rdkb/tools/tdkb: sleeping 4.0 seconds before retrying
            fatal: Couldn't find remote ref refs/heads/master

            rdkb/tools/tdkb:
            fatal: Couldn't find remote ref refs/heads/master
            error: Cannot fetch rdkb/tools/tdkb from https://code.rdkcentral.com/r/a/rdkb/tools/tdkb

            fatal: Couldn't find remote ref refs/heads/master

            rdkb/devices/raspberrypi/tdkb:
            fatal: Couldn't find remote ref refs/heads/master
            rdkb/devices/raspberrypi/tdkb: sleeping 4.0 seconds before retrying
            fatal: Couldn't find remote ref refs/heads/master

            rdkb/devices/raspberrypi/tdkb:
            fatal: Couldn't find remote ref refs/heads/master
            error: Cannot fetch rdkb/devices/raspberrypi/tdkb from https://code.rdkcentral.com/r/a/rdkb/devices/raspberrypi/tdkb
            Fetching: 100% (4/4), done in 28.579s
            Garbage collecting: 100% (4/4), done in 0.007s
            error: Cannot checkout rdkb/components/opensource/ccsp/webui-bwg: ManifestInvalidRevisionError: revision master in rdkb/components/opensource/ccsp/webui-bwg not found
            error: in `sync -j4 --no-clone-bundle`: revision master in rdkb/components/opensource/ccsp/webui-bwg not found

            -------------------------------------------------------------------------------------------------------------------------------------
            Here is my environment

            OS: Ubuntu 18.04

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

            1. Unknown User (deepika.b)

              1. Unknown User (arthur.cc.huang)

                Hi Unknown User (deepika.b) 

                I am getting fetch error, "code.rdkcentral.com/r/rdk/devices/intel-x86-pc/emulator/iarmmgrs" seems to be not found.


                ERROR: ExpansionError during parsing /home/arthur/test/meta-rdk-bsp-emulator/recipes-extended/iarmmgrs/iarmmgrs-hal-emulator_git.bb                                | ETA:  --:--:--
                Traceback (most recent call last):
                  File "/home/arthur/test/openembedded-core/bitbake/lib/bb/data_smart.py", line 386, in DataSmart.expandWithRefs(s='${RDK_RELEASE}+git${SRCPV}', varname='PV'):
                                 try:
                    >                s = __expand_var_regexp__.sub(varparse.var_sub, s)
                                     try:
                  File "/home/arthur/test/openembedded-core/bitbake/lib/bb/data_smart.py", line 111, in VariableParse.var_sub(match=<_sre.SRE_Match object; span=(18, 26), match='${SRCPV}'>):
                                 else:
                    >                var = self.d.getVarFlag(key, "_content", True)
                                 self.references.add(key)
                  File "/home/arthur/test/openembedded-core/bitbake/lib/bb/data_smart.py", line 737, in DataSmart.getVarFlag(var='SRCPV', flag='_content', expand=True, noweakdefault=False, parsing=False):
                                     cachename = var + "[" + flag + "]"
                    >            value = self.expand(value, cachename)

                  File "/home/arthur/test/openembedded-core/bitbake/lib/bb/data_smart.py", line 410, in DataSmart.expand(s='${@bb.fetch2.get_srcrev(d)}', varname='SRCPV'):
                         def expand(self, s, varname = None):
                    >        return self.expandWithRefs(s, varname).value

                  File "/home/arthur/test/openembedded-core/bitbake/lib/bb/data_smart.py", line 400, in DataSmart.expandWithRefs(s='${@bb.fetch2.get_srcrev(d)}', varname='SRCPV'):
                                 except Exception as exc:
                    >                raise ExpansionError(varname, s, exc) from exc

                bb.data_smart.ExpansionError: Failure expanding variable SRCPV, expression was ${@bb.fetch2.get_srcrev(d)} which triggered exception FetchError: Fetcher failure: Unable to resolve 'rdkb-2021q1' in upstream git repository in git ls-remote output for code.rdkcentral.com/r/rdk/devices/intel-x86-pc/emulator/iarmmgrs

                1. Unknown User (deepika.b)

                  Hi Unknown User (arthur.cc.huang) 

                  We verified with platform team .

                  At present ,The Emulator Build is successful only for dunfel release, the webui login and some known issues are present and  still need to be fixed . 

      2. Unknown User (rdkzhang)

        Hi Unknown User (deepika.b) 

        I always get login error "Incorrect password for admin!".  Where the password exists?

        Reset displays the following error. What should I do?  

        root@qemux86broadband:/# dmcli eRT setv Device.UserInterface.PasswordReset bool true
        CR component name is: eRT.com.cisco.spvtg.ccsp.CR
        subsystem_prefix eRT.
        Can't find destination component.
        root@qemux86broadband:/# 

  5. Unknown User (jianchun.zhu)

    It seems the login issue seen in dunfell build still exists. 

    I still got the incorrect password after reset.

    Would you please share the method to solve it? 

    When this problem can be solved?

    1. Unknown User (deepika.b)

      Hi Unknown User (jianchun.zhu) 

      It is a known issue which is being fixed .quick fix for this issue is not available at this time.
      however for dunfell release, command line interface we can proceed.
      For webUI,
      The last stable release for emulator is https://wiki.rdkcentral.com/display/CMF/RDK-B_2021q1
      NOTE: With 2021q1 , if you are facing below error , please port https://code.rdkcentral.com/r/c/components/asp/rdk-oe/meta-rdk-bsp-emulator/+/55550/1/recipes-connectivity/obexpushd/obexpushd_0.11.3.bb and check the build
      ERROR: obexpushd-0.11.3-r0 do_fetch: Fetcher failure for URL: 'https://gitlab.com/obexpushd/mainline/repository/0.11.3/archive.tar.gz'. Unable to fetch URL from any source.ERROR: obexpushd-0.11.3-r0 do_fetch: Function failed: base_do_fetch