Versions Compared


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

Table of Contents

          This page describes  the  bring-up of RdkWanManager on Raspberry-pi platform using  rdk-next branch. Also, we captured  list of the issues that are faced during bring up and resolution for the same. 


The following components are newly introduced for Porting of  RdkWanManager in RPI Target Platform ,

The following  are the dependent components & meta-layers which are modified, 

RPI Build Steps 

Please refer the below link for host environment set-up & flashing procedure for yocto build ,

Dunfell :

RPI 3B/3B+ Model Reference Platform


RDK-B Raspberrypi - Host SetUp and Build Instructions#BRaspberrypi-HostSetUpandBuildInstructions-YoctoBuildSteps

Repo Steps

To  build, follow below instructions

Deck of Cards
idRepo Steps
idRepo Steps
labelDunfell Build
Code Block
titleDunfell Build - Repo Steps
$ mkdir <workspace dir>
$ cd <workspace dir>
$ repo init -u -b dunfell -m rdkb-extsrc.xml 
$ repo sync -j`nproc` --no-clone-bundle
idRepo Steps
labelMorty Build
Code Block
titleMorty Build - Repo Steps
$ mkdir <workspace dir>
$ cd <workspace dir>
$ repo init -u -b rdk-next -m rdkb-extsrc.xml
$ repo sync -j`nproc` --no-clone-bundle

Image Generation Steps

Code Block
titleBuild Steps
$ MACHINE=raspberrypi-rdk-broadband source meta-cmf-raspberrypi/setup-environment
$ bitbake rdk-generic-broadband-image

Control Flow

Following diagram depicts the flow of control among the components,


Gliffy Diagram

  • platform-hal (i.e. hal-ethsw) will send the callbacks(pGWP_act_EthWanLinkUP /pGWP_act_EthWanLinkDOWN) whenever physical link event change to EthAgent.
  • CcspEthAgent will pass the link change event to Wan Manager,
                       It will set the value for Wan Manger DM ‘Device.X_RDK_WanManager.CPEInterface.1.Wan.LinkStatus’  


Integration Approach

Manifest Changes

Code Block
titleManifest File
<project name="rdkb/components/opensource/ccsp/RdkWanManager" revision="rdk-next"/>
<project name="rdkb/components/generic/json-rpc" revision="rdk-next"/>


  • FEATURE_RDKB_WANMANAGER is the global CFLAG used in other components to use with WANMANAGER feature.
  • All the changes are enclosed inside FEATURE_RDKB_WAN_MANAGER compilation flag, this CFLAG can be used to control whether or not to
    compile the WanManager code changes.

We enabled WanManager CFLAGS in below file in rpi(meta-cmf-raspberrypi) layer,

Code Block
CFLAGS_append += "${@bb.utils.contains('DISTRO_FEATURES', 'rdkb_wan_manager', ' -DFEATURE_RDKB_WAN_MANAGER ', '', d)}"

Distro Features

We are using the following distro features to enable rdkb wanmanager in RPI machine configuration file,

  • rdkb_wan_manager : Used to enable RDK WanManager and json hal
Code Block
DISTRO_FEATURES_append = "  rdkb_wan_manager"

Also , we need to disable the GwProvapp-EthWan component in ccsp packagegroup . 

Code Block

Package Group

To enable the RDKB Wanmanager components, added those components into the final build target.  So, We have added those components into the  ccsp packagegroup(58865),

Code Block
RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rdkb_wan_manager', ' rdk-wanmanager json-hal-lib hal-json-ethsw', '', d)} "


  • Developed C HAL API's to support the ETH Agent for WanManager Feature .

Utopia CFLAG

  • To disable the utopia service_wan execution , we need to enable the utopia _WAN_MANAGER_ENABLED_ flag would mean that the RdkWanManager controls the Wan Management.   

    Code Block
    CFLAGS_append += "${@bb.utils.contains('DISTRO_FEATURES', 'rdkb_wan_manager', ' -D_WAN_MANAGER_ENABLED_', '', d)}"


Persistent (PSM) configuration changes

For wanmanager, the default configurations are stored in PSM. As of now, we have 1 interfaces defined for WAN in wanmanager modules (i,e) wanoe.

For WANOE, by default we are using `eth0 `port for WAN connection. 

<Record name=""dmsb.wanmanager.if.2.Name"" type=""astr"">eth0</Record>

Example PSM Configurations

 <!-- rdk-wanmanager records -->

   <Record name="dmsb.wanmanager.wanenable" type="astr">1</Record> 
   <Record name="dmsb.wanmanager.wanifcount" type="astr">1</Record> 
   <Record name="dmsb.wanmanager.wanpolicy" type="astr">2</Record> 
   <Record name="dmsb.wanmanager.wanidletimeout" type="astr">0</Record> 

<!-- X_RDK_WanManager.CPEInterface.1. -wanmanager -->
   <Record name="dmsb.selfheal.rebootstatus"  type="astr">0</Record> 
   <Record name="dmsb.wanmanager.if.1.Name" type="astr">eth0</Record> 
   <Record name="dmsb.wanmanager.if.1.DisplayName" type="astr">WanOE</Record> 
   <Record name="dmsb.wanmanager.if.1.Enable" type="astr">TRUE</Record> 
   <Record name="dmsb.wanmanager.if.1.Type" type="astr">2</Record> 
   <Record name="dmsb.wanmanager.if.1.Priority" type="astr">0</Record> 
   <Record name="dmsb.wanmanager.if.1.SelectionTimeout" type="astr">0</Record> 
   <Record name="dmsb.wanmanager.if.1.DynTriggerEnable" type="astr">FALSE</Record> 
   <Record name="dmsb.wanmanager.if.1.DynTriggerDelay" type="astr">0</Record> 
   <Record name="dmsb.wanmanager.if.1.Marking.List" type="astr">DATA</Record> 
   <Record name="dmsb.wanmanager.if.1.Marking.DATA.Alias" type="astr">DATA</Record> 
   <Record name="dmsb.wanmanager.if.1.Marking.DATA.SKBPort" type="astr">1</Record> 
   <Record name="dmsb.wanmanager.if.1.Marking.DATA.SKBMark" type="astr"> </Record> 
   <Record name="dmsb.wanmanager.if.1.Marking.DATA.EthernetPriorityMark" type="astr"></Record> 
   <Record name="dmsb.wanmanager.if.1.PPPEnable" type="astr">FALSE</Record> 
   <Record name="dmsb.wanmanager.if.1.PPPLinkType" type="astr">PPPoE</Record> 
   <Record name="dmsb.wanmanager.if.1.PPPIPCPEnable" type="astr">TRUE</Record> 
   <Record name="dmsb.wanmanager.if.1.PPPIPV6CPEnable" type="astr">TRUE</Record> 
   <Record name="dmsb.wanmanager.if.1.PPPIPCPEnable" type="astr">TRUE</Record>

Major Errors and Challenges 

S.NoRecipe / Component NamesLayer Error/Warning/challengesRoot CauseAction 



CcspEthAgent will start once it gets the signal status from CR but CR is taking long time to send the Signal status .

CR is waiting to get the MTA System_Ready Signal but MTA is not supported for RPI.


WanManager DM  parameters are not getting the default values from PSM DB

Need to add wanmanager default DM values in PSM database

Below gaps needs to be filled in rpi,

  •   Below initialization activities were done by GWP
    1. /var/run/firewall directory creation.
    2. copying files that are needed by CCSP modules -ccsp_msg.cfg and cp_subsys_ert.
    3. crontab related changes(soft link) 4
    .ipv6/conf/all/forwarding proc entry
  • LAN_start() in ccsp-gwprovapp-ethwan will set
  • sysevents viz. "lan-start", "bridge_mode" and "dhcp_server-resync".
  • Multiple sysevents were set in ccsp-gwprovappethwan: lan-status, wan-status, ethwan-initialized,eth_wan_enabled, wan_service-status, eth_wan_mac,current_ipv4_link_state, current_wan_state,wan_start_time, bridge_mode
  • LAN_start() in ccsp-gwprovapp-ethwan will set
  • sysevents viz. "lan-start", "bridge_mode" and "dhcp_server-resync".
  • Multiple sysevents were set in ccsp-gwprovappethwan: lan-status, wan-status, ethwan-initialized,eth_wan_enabled, wan_service-status, eth_wan_mac,current_ipv4_link_state, current_wan_state,wan_start_time, bridge_mode.
  • In service_wan, execute_dir /etc/utopia/post.d/ restart is being done once the address is set to the WAN interface.
  4system_defaults (utopia recipe)meta-cmf-raspberrypiAdded WanManager default values to syscfg.dbThese default values are used by PAM

210629-12:11:47.500509 [mod=PAM, lvl=WARN] [tid=8164] Found an unresolved api: Client_GetEntryCount
210629-12:11:47.500664 [mod=PAM, lvl=WARN] [tid=8164] Found an unresolved api: SentOption_GetEntryCount
210629-12:11:47.500810 [mod=PAM, lvl=WARN] [tid=8164] Found an unresolved api: Client3_GetEntryCount
210629-12:11:47.500950 [mod=PAM, lvl=WARN] [tid=8164] Found an unresolved api: Server2_GetEntryCount
210629-12:11:47.501602 [mod=PAM, lvl=WARN] [tid=8164] resolving APIs in xml file failed!                             
210629-12:11:47.501708 [mod=PAM, lvl=WARN] [tid=8164] DslhDmagntLoadDataModelXML -- failed, error = -1!

PandM DM was not loading after the WanManager Integration

Device.DHCPv6.Client.{i} and Device.DHCPv4.Client.{i}. was
moved to the WanManager . But the DMs was not removed from PAM XML file.


RdkWanManager fails to build with the folloiwing errors: | ../../../git/source/WanManager/wanmgr_interface_sm.c:720:62: error: macro LOG_CONSOLE passed 3 arguments, but takes just 0 | 720 | LOG_CONSOLE(%s Wan_init_complete:%d\n,buffer,uptime); | | ^ | In file included from ../../../git/source/WanManager/wanmgr_interface_sm.c:31: | ../../../git/source/WanManager/wanmgr_platform_events.h:48: note: macro LOG_CONSOLE defined here | 48 | #define LOG_CONSOLE() | | | ../../../git/source/WanManager/wanmgr_interface_sm.c:720:9: error: LOG_CONSOLE undeclared (first use in this function) | 720 | LOG_CONSOLE(%s Wan_init_complete:%d\n,buffer,uptime); | |LOG_CONSOLE () api is not defined
 7ccsp-common-library.bbappendmeta-cmf-raspberrypiccsp-gwprov-app starts initialization scripts

Added utopia.service to call needs to be started before starting of the RdkWanManager executable


Device.X_RDK_WanManager.CPEInterface.1.Wan.LinkStatus is getting Incorrect value .

  • Need platform-hal api's development (i.e. hal-ethsw)

9halhal../../../../../../../../../../rdkb/components/opensource/ccsp/CcspEthAgent/source/TR-181/board_sbapi/cosa_ethernet_apis.c:651: error: undefined reference to 'GWP_GetEthWanLinkStatus'
collect2: error: ld returned 1 exit status
Makefile:423: recipe for target 'CcspEthAgent' failed
GWP_GetEthWanLinkStatus() is not defined in eth hal. Earlier, it was defined in GWP-EthWan
10rdk-loggerrdk_loggerWANMANAGERLog.txt is not created in /rdklogs/logs folderrdkb_debug.ini and rdkb_log4crc files needs to be updated
11CcspEthAgentCcspEthAgentDevice.X_RDK_WanManager.CPEInterface.1.Wan.LinkStatus  , Device.X_RDK_WanManager.CPEInterface.1.Phy.Path & Device.X_RDK_WanManager.CPEInterface.1.Phy.Status is getting Incorrect values .

1.Fix for erouter0 interface bring up

2.Notifying EthAgent for the link event based on wan_physical_ifname

3.Fix to avoid CR ready check which is causing 1min delay in the ip-assignment flow for ETH.

4.Parameter instance correction for subscribeEvent
12CcspPandMCcspPandM../../../../../../../../../../rdkb/components/opensource/ccsp/CcspPandM/source-arm/TR-181/board_sbapi/cosa_dhcpv6_apis.c:8411:56: error: 'hub4_preferred_lft' undeclared (first use in this function)
8411 dhcpv6_data.prefixPltime = hub4_preferred_lft;
../../../../../../../../../../rdkb/components/opensource/ccsp/CcspPandM/source-arm/TR-181/board_sbapi/cosa_dhcpv6_apis.c:8411:56: note: each undeclared identifier is reported only once for each function it appears in
../../../../../../../../../../rdkb/components/opensource/ccsp/CcspPandM/source-arm/TR-181/board_sbapi/cosa_dhcpv6_apis.c:8412:56: error: 'hub4_valid_lft' undeclared (first use in this function)
8412 dhcpv6_data.prefixVltime = hub4_valid_lft;
hub4_preferred_lft , hub4_valid_lft are not declared properly in pam

Validation Test Results

  • Flash the latest generated build
  • Goto RG console

erouter0 IPv4 address

                    erouter0 should have valid IP based on the wan configuration (Eg

brlan0 IPv4 Address

                         brlan0 IPv4 should be ( i,e Default IP Address )

Able to take SSH from WAN IP

                     ssh from WAN to eRouter IP should be successful

Internet Testing on RPI

  •  erouter0 Interface should have Ipv4 Address
  • verify the ping on RPI
  • RPI shouldn't lose the Internet

LAN client IPv4 and Internet 

                   Lan clients should get IPv4 address in the range of 10 series(i,e default DHCP server pool range) and captive portal page should be loaded.

CCSP Process Status

                All ccsp process should be Up and corresponding DataModel parameters should be loaded properly.

RdkWanManager systemd Status

  •   RdkWanManager process should be up . We can verify the status by using the below screenshot command,

  • RdkWanManager  DataModel Parameters should be loaded properly, we can use the below command to verify the status, 


WanManager Logs

                 WanManager logs will be generated in /rdklogs/logs folder in RPI

Systemd Status

          Following systemd service file's status needs to be verfiy,

  1.  utopia
  2.  CcspEthAgent
  3. CcspPandMSsp

Using dmcli commands to verify the LinkStatus(CcspEthAgent will pass the LinkStatus to WanManager )

WebUI Test on RPI

                 WebUI should be loaded in Webbrowser by using erouter0 IPv4 Address(i,e erouter0ip:8080) and login should be successful

Internet check should be successful,

Known Issues

              Sometimes , erouter0 interface is not getting the WAN IP .