RDK FAQ
How are RDK-V and RDK-E connected?
RDK-V ( RDK for Video devices ) is the legacy name. From RDK7 release( 2025 ), the RDK for Video devices are called RDK-E ( RDK for Entertainment ) to emphasise their role in Entertainment domain
How widely adopted is RDK?
The community includes 600+ companies and 100M+ devices globally
What business value does RDK deliver?
- Speed to market: Frequent releases and community contributions reduce development cycles.
- Control: Own your UX, apps, telemetry, data, and deployment cadence.
- Choice of vendors: Standard interfaces across SoCs and OEMs reduce lock‑in.
How do I download old versions of RDK?
Older versions of RDK can be downloaded by following the instructions in respective release’s release notes. The details are available in our Releases page
I am not an RDK licensee. Can I still try out RDK?
While it is highly recommended to sign up and get the free RDK License, you can still try out RDK without requiring to be a member.
- The open source code repositories are openly available at our GitHub and our Gerrit
- The documentation is openly available at developer portal
Are there any publicly available boards/devices/platforms to try out RDK?
For video, a port of RDK is available for the popular hobby platform Raspberry Pi 4. For broadband, a port of RDK is available in Banana Pi R4
How can I add our custom component to the RDK-Connectivity stack?
Details of how to add a custom component, as well as how to interact with it using TR-181 data models are detailed in our Integration guide
What is the process for adding data models to an existing RDK-Connectivity component to support a feature?
Details of how to add data models to a component is available in our Integration guide
Is there a timeline available for the upcoming RDK releases?
The upcoming RDK release schedule is available at here
I see RDK release is pre-certified for YouTube & Amazon. What does this mean?
YouTube and Amazon SDKs are integrated to the reference platform devices and are certified for the applicable features ( pre-certification ). However, there are still a set of features that need to be certified by the operator( after their integrations in the device going to field ) to claim fully certified by YouTube/ Amazon. The pre-certification in RDK reference platforms make sure that most of the heavy lifting for the App certification is already done as part of the integration and operators are left with only a part of the engineering requirements to achieve full certifications
Is there a spec defined for platforms by RDK ?
Yes, a spec published for platform vendors is available as part of the Vendor Porting Guide . SOC vendors can implement their platform HAL based on this specification.
What are the different WAN types supported by RDK-Connectivity?
RDK, in general, is agnostic to WAN hardware. RDK has different WAN managers for each type of WAN ( DOCSIS, GPON, Cellular, EthWAN etc. ), so depending on your target platform capabilities, you can create an RDK-Connectivity image with the relevant WAN Manager included in the build
Where can I find training materials?
RDK documentation is openly available at developer portal. For preferred members, additional contents ( webinars, videos from summits and tech sessions ) are also available
How to request for a new feature in RDK?
RDK – just like any other popular open source communities – always weigh the feature requests before deciding on the next steps. If you are a premium member ( refer our membership details here ) , you can raise a feature request in RDK JIRA – which will be evaluated by the RDK Technical Advisory Board(RTAB) for relevance , and based on the decision of RTAB, next steps will be taken. As a community, we highly encourage you to develop the feature and contribute back to community
How does RDK handle OTA (Over-The-Air) updates, and what are the rollback mechanisms?
RDK do offer XConf based device upgrade mechanisms. However, please note that the actual logic to do the device upgrade is implemented by the OEM / Operator and the role of RDK is restricted in invoking those mechanisms in device properly
What is RDK Certification? What do I need to do to get my device RDK Certified?
RDK Certification is offered by RDKM to ensure that the RDK port in a specific platform meets the RDK porting requirements. You can run the RDK Certification suite in your target platform, and once the results are satisfactory, send the results and devices across to RDKM – who will then repeat the exercise. Once the certification tests are done from RDKM side successfully, the device will be declared by RDKM as “RDK Certified”. For more details please refer this link
What are the remote device management facilities supported by RDK?
RDK supports the popular older protocols like SNMP, TR69, as well as the modern TR369 (USP ). The RDK in-house webPA protocol is also a popular optimal remote device management method within RDK deployments. On the server side, RDK has the XConf device management framework that is capable of performing device configurations, firmware upgrades etc.
Can I integrate a GPLv3 open source softawre to RDK and use in deployments?
Users are free to integrate any component to the existing RDK releases, for their platforms. It is up to the user to check the legal implications of these integrations
How to get compatible remote control devices for RDK based video devices?
RDKM publishes the compatible key code details here – which can be adopted for devices. Moreover, there are a few remote control devices that are out of the box compatible with RDK devices. The details of those RCU is available at here
Does RDK support DVB standard?
RDK as such doesnt restrict support for any broadcasting standard. However, a DVB stack is not part of the standard RDK release. Community members can integrate third party DVB stacks ( like DTVKit ) to RDK and use for their purposes
Is there a migration framework available to migrate a non RDK device to RDK?
Migrating a non RDK device to RDK requires support from SOC vendor ( with SOC SDK ), OEM & Operator ( for bootloader, provisioning and OTA ). Currently a publicly available framework for the migration is not available. However, there are known migration efforts in RDK Community in this regard
Access and Authentication
Build
How to view the dependencies of packages?
There are tools within bitbake that enable this level of detail.
“bitbake -g targetname”
Creates depends.dot and task-depends.dot files in the current directory. These files show
which
packages and tasks depend on which other packages and tasks and are useful for
debugging
purposes.
"bitbake -g -u depexp targetname"
It shows results in a more human-readable GUI style. A simple mount of the resulting root image
will
show how much storage space is being used.
In addition, the toaster is a new
graphical user
interface for bitbake that makes these tools much easier to use.
How to overcome github access related error?
To overcome GitHub access-related errors, follow the steps mentioned in the official
documentation
for adding an SSH key to your GitHub account. Adding a New SSH Key to Your GitHub Account, once you’ve successfully
added
the SSH key, you should no longer encounter GitHub access errors.
How to add a package to my project?
As with any complex system, the real answer is that it depends, but of course that is
not
very helpful. The simplest method for adding a single package to your build is to add
the
below line to conf/local.conf:
- IMAGE_INSTALL_append = ” package”
Use your own package name in place of package. Note the leading space before the package name.
If
you want to add multiple packages, you can use multiple lines like the above, or list all
packages
on a single line with:
- IMAGE_INSTALL_append = ” package1 package2 package3″
Although if you add in local.conf, that is not permanent change. For permanent addition of
that
package in final rootfs, you need to be added in image recipe or any package group which is
included
in the image recipe.
How to handle prebuilt?
Pre-built images are managed internally by Yocto using the sstate-cache. To utilize a pre-built
from
a known good build, you can configure your build environment to point to the corresponding
cache
folder.
- Navigate to the configuration file located in the ./build<buildtype>/conf/
directory. - Open the relevant configuration file (e.g., local.conf) and specify the path to
the
sstate-cache where the pre-built images are stored. - Add or modify the following line to point to your pre-built cache location. SSTATE_DIR
=
“/path/to/your/sstate-cache”
By setting this cache path, the build system will automatically pick up the pre-built images
from
the specified location, streamlining the build process.
We can also pull
prebuilt
from Artifactory and directly install them in rootfs.
Example:
SRC_URI += "https://<artifactoryname>/prebuilts.tar.gz
# Install the necessary files
do_install() {
install -d ${D}/usr/bin
install -m ${WORKDIR}/your-file ${D}/usr/bin
}
What are the commands to build a specific sub-component (WPE, Utopia, etc.)?
In the RDK environment, each sub-component can be built independently using the bitbake
command.
- Build a Specific Component: Use the following command,
replacing
<component> with the name of the desired component:
bitbake
<component>.
For example, to build the RDK Services, you would
run:
bitbake rdkservices
- Build the Final Image: After building the specific component, you
typically
need to build the overall image that includes the component. For example, to package
the RDK
browser into the final image, you would
run:
bitbake
rdk-generic-<hybrid/mediaclient>-wpe-image
This command generates the final image for hybrid devices, ensuring that only the
affected
components are rebuilt if nothing has changed.
Where does ${D}, ${WORKDIR} resolve to?
These are OE metadata variables. Bitbake has preprocessing options where it expands all the
local
bitbake variables, so you could take advantage of that option to figure it out.
bitbake -e wpewebkit | grep "^S =" bitbake -e wpewebkit | grep "^WORKDIR ="
It can be used to check for any bitbake variable, alternatively, you can pipe the whole bitbake
-e
output to a file and inspect the file in your favorite editor.
Why are many components built from external sources in yocto??
Many components are built from external sources to simplify development and enable quick testing
of
changes. However, this approach is
managed
by meta-cmf/conf/distro/include/rdk-external-src.inc, which prevents these components
from
being saved in the sstate cache. As a result, builds can take longer because components
are
recompiled every time, even if there are no changes.
If you prefer a different approach to save time, you can use the XXX-nosrc.xml manifest file,
which
is retained after the first build and helps prevent unnecessary recompilation of
unchanged
components.
How do I locate logs for a particular component in the Yocto/OE folder structure?
You can find log files for each task associated with a recipe in
the temp directory of
that recipe. Each log file is named according to the
task it corresponds to, such
as log.do_compile for the compile task. Bitbake
maintains separate logs for various
tasks like fetch, compile, and install.
For
example, if you are looking for logs related to
the “rdkservices” component
on
a Raspberry Pi device, you can locate the logs as follows:
-
The logs for the “rdkservices” recipe
would
typically be found
at:
<build>/tmp/work/<machine>-rdk-linux/rdkservices/1.99+gitAUTOINC+<commit_hash>/temp/
Replace<machine>and<commit_hash>with the appropriate
values
for your build. -
Inside the
tempdirectory,
you can find logs for
specific tasks. For example: Compile
Logs: log.do_compile Fetch Logs:
log.do_fetch
Install Logs: log.do_install etc.
How to enable/disable kernel/busybox features in Yocto?
To enable or disable kernel or BusyBox features in Yocto, you can modify the recipe metadata
by
creating a .bbappend file.
- To create a .bbappend file you need to create a file that appends to the existing recipe.
The
name of the .bbappend file should match the recipe it targets. For example, if you are
modifying
stblinux.bb, create a file named stblinux_%.bbappend. - Within the .bbappend file, you can specify the features you want to enable or disable.
For
example, to enable IPSec, you might create a configuration file named enable_netkey.cfg
with the
following content: CONFIG_NET_KEY=y - In your .bbappend file, append the SRC_URI variable to include your
configuration
file: SRC_URI_append = “file://enable_netkey.cfg“ - If the feature needs to be enabled across all platforms, you can add the .bbappend file to
the
meta-rdk layer. If it’s specific to a particular platform, place the .bbappend file in
the
OEM layer corresponding to that platform.
By following these steps, you can effectively manage kernel and BusyBox features in your
Yocto
builds.
How to enable GDB in build?
The signal core dump that are generated under /tmp can be decoded using
gdb.
Procedure:
- In <image>.bbappend file
IMAGE_INSTALL_append = ” gdb” - In local.conf
INCOMPATIBLE_LICENSE = “GPL-3.0
LGPL-3.0
AGPL-3.0″
INCOMPATIBLE_LICENSE_pn-gdb =
“”
EXTRA_IMAGE_FEATURES
+=
“tools-debug”
EXTRA_IMAGE_FEATURES += “dbg-pkgs” - In <component>.bbappend
CFLAGS += ” -D_DEBUG -g “ - Compile and flash the binary to device
- Run gdb -c <path to signal dump> <binary>
Bitbake complains about a non-existent path, could not inherit files, invalid environment variable, etc. with “ERROR: Function failed”,”ERROR: ParseError”? How to resolve this?
The bitbake process terminates after complaining about a non-existent path, could not inherit
files
or environment variables.
Example:
ERROR: ParseError at /home/<NTID>/kirkstone-nightly20230925-dunfell/meta-cmf-broadband/recipes-ccsp/ccsp/rdk-cellularmanager-mm.bb:26: Could not inherit file classes/pythonnative.bbclass ERROR: Parsing halted due to errors, see error messages above
To resolve the rdk-cellularmanager-mm Pythonnative error in kirkstone, note that
kirkstone uses
python3native, while dunfell requires pythonnative. Therefore, you should inherit
python3native in
your recipe for Kirkstone.
Bitbake fails with “fatal: Not a git repository” after selection of option in meta-cmf/setup-environment, and why?
The issue is observed during the setup and machine selection stage, setup-environment script
will
throw an unexpected error about non-existing layer paths.
Example:
gpsahu01@dvm-wcdcc-tata-001:~/cmf$ source meta-cmf/setup-environment 1) meta-raspberrypi/conf/machine/raspberrypi0.conf 7) meta-rdk-bsp/conf/machine/qemux86hyb.conf 2) meta-raspberrypi/conf/machine/raspberrypi2.conf 8) meta-rdk-bsp/conf/machine/qemux86mc.conf […] Please enter your choice of machine [1..11]: 7 ### Shell environment set up for builds. ### Writing auto.conf ... Writing versions.txt ... -bash: cd: ../meta-browser//: No such file or directory fatal: Not a git repository (or any parent up to mount point /mnt) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). -bash: ../patches/rdk-oe/meta-linaro//*.patch: No such file or directory -bash: cd: ../meta-openembedded//: No such file or directory fatal: Not a git repository (or any parent up to mount point /mnt) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Here, if the host PC has set colored terminal output for commands, then it may cause
unexpected
errors being shown during execution of meta-cmf/setup-environment script. To fix the
problem, we can
run the following command:
gpsahu01@dvm-wcdcc-tata-001:~/cmf$ alias
ls=’ls
–color=no’
Open-source software related
issue:
a) Unable to find revision or branch from upstream: “ERROR: Fetcher failure: Unable to find revision, ERROR: Function failed: Fetcher failure for URL”, How to solve this?
When we try to build a very old branch of the code, the manifest file will not be up-to-date, as
few
of the open-source URLs might not be continuing support of older branches or versions of
software.
Example:
WARNING: Failed to fetch URL git://code.qt.io/qt/qtlocation.git;branch=stable, attempting MIRRORS if available ERROR: Fetcher failure: Unable to find revision f28408346243cf090326f4738fd838219c21e00f in branch stable even from upstream ERROR: Function failed: Fetcher failure for URL: 'git://code.qt.io/qt/qtlocation.git;branch=stable'. Unable to fetch URL from any source
It is recommended to build with more recent branches, as the code will be well maintained and
will
have updated features.
b) How to resolve problems caused due to the source URL is no longer available/ site is down with the error “ERROR: Function failed: Fetcher failure for URL?”
An open-source URL is broken either because the website is down temporarily, or it is
permanently
removed.
Example:
WARNING: Failed to fetch URL http://directfb.org/downloads/Core/linux-fusion/linux-fusion-9.0.3.tar.gz, attempting MIRRORS if available ERROR: Fetcher failure: Fetch command failed with exit code 4, no output ERROR: Function failed: Fetcher failure for URL: 'http://directfb.org/downloads/Core/linux-fusion/linux-fusion-9.0.3.tar.gz'. Unable to fetch URL from any source
Temporary workaround: In case of archives (.tar or .zip, etc.), if the file is available from
a
previously built stack, then it can be copied and an empty file with the name
<archive-name>.
done has to be created to bypass looking for downloading the
file.
Fixing the
recipe: If the problematic recipe is available from any other alternative
mirror, update the same in
SRC_URI part of the recipe. Few components may be available in common
mirrors such as github,
web.archive.org, oipf.tv etc.
How to enable/disable a FEATURE in build?
To include a specific feature that is not available in base build, enable the feature
specific
DISTRO flag in platform specific config file. For example, to include WiFi feature in
RPi
build,
Add the DISTRO specific flag in RPi platform specific conf file.
In File meta-cmf-raspberrypi/conf/distro/include/rdk-rpi.inc
Add DISTRO_FEATURES_append = ” wifi” (to include the feature if not there)
DISTRO_FEATURES_remove = ” wifi” (to remove the feature)
Make sure the recipe is part of the package build.
Example:
PACKAGECONFIG_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'wifi','wifi', '',d)}"
How to solve error due to RDK_FLAVOR not defined?
ERROR: ParseError at /home/a1602446/build-raspberrypi-rdk-broadband/conf/local.conf:247: Could not include required file conf/distro/include/##RDK_FLAVOR##.inc
The above error occurs intermittently, which can be fixed by retrying the source command
for
setup_environment file.
In case of RPi, it is
- source meta-cmf-raspberrypi/setup-environment
How to enable or disable any feature using macros?
Please refer Compile-time Build Variants Flags.
How to solve “Invalid md5sum error” (md5sum mismatch in recipe,ERROR: gst-plugins-playersinkbin noop: md5 data is not matching)?
Bitbake complains about md5sum mismatch when a recipe has retained old md5sum value while the
source
file is updated.
Example:
ERROR: gst-plugins-playersinkbin-noop: md5 data is not matching for file://gstplayersinkbin.c;md5=0f518921aef846c156f91ce4dd6b7c76 ERROR: gst-plugins-playersinkbin-noop: The new md5 checksum is 958142c8f2783c6c4f357f561585b4da
Update the new md5sum value of the file in recipe. This can be done using the following
steps:
:…/meta-rdk/recipes-extended/gst-plugins-playersinkbin/files$ md5sum -t gstplayersinkbin.c 958142c8f2783c6c4f357f561585b4da gstplayersinkbin.c Now change the above value in recipe accordingly: LIC_FILES_CHKSUM = "file://gstplayersinkbin.c;md5=958142c8f2783c6c4f357f561585b4da ”
How to solve ”Invalid syntax” error due to python version mismatch during repo commands?
Example:
repo: warning: Python 2 is no longer supported; Please upgrade to Python 3.6+. Downloading Repo source from https://gerrit.googlesource.com/git-repo remote: Finding sources: 100% (32/32) remote: Total 32 (delta 14), reused 32 (delta 14) Unpacking objects: 100% (32/32), done. File "/mnt/home /cmf/.repo/repo/main.py", line 79 file=sys.stderr) ^ SyntaxError: invalid syntax
If you’re on an older system that doesn’t support Python 3.6 or later, you have two options:
- Download an older version of the Repo Launcher that is compatible with Python 2.7.
- Upgrade your Python version to 3.6 or newer.
# create a bin directory mkdir ~/bin export PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo-1 > ~/bin/repo chmod a+x ~/bin/repo
RDK-Connectivity
What are the steps to run valgrind for ccsp components?
The steps are:
- Port valgrind to the platform (if not already available).
- Compile the component with debug symbols enabled (i.e. avoid stripping the
component
executable/library. alternatively, you may replace the stripped binary with
unstripped binary if
it is not a read-only image). - Stop the service and start the binary as part of valgrind (just like we load any normal
binary
using valgrind). - Once you have enough data collected (or observed the issue you were trying to debug), you
may
stop it and examine the xml file for details.
For more details refer- Enabling valgrind tool for memory leak.
Is there igmp_snooper program in RDK-Connectivity?
Yes, igmp_snooper program is present in RDK-Connectivity. There is a shell script named “service_mcastsnooper.sh” under /etc/utopia/service.d directory, and in
the script, it will
execute “igmp_snooper $sw_opt $if_opt $querier_opt .
What are the possible solutions available to manage RDK-Connectivity Data Model?
The RDK-Connectivity Data Model can be managed through several protocols and interfaces, including:
- TR-181: An extension of TR-069 that provides additional data
modeling
capabilities, particularly for managing broadband devices. - SNMP: A network management protocol used to monitor and control
network
devices. - WebUI: A graphical web interface that allows users to manage the data
model
through a user-friendly dashboard. - WebPA: A web-based API that enables programmatic access to the data
model,
allowing for operations like fetching and setting parameters. - TR-369/USP: A protocol that provides a unified data model and enhances
device
management capabilities, allowing for more efficient communication and control.
What is the Minimum RDK-Connectivity Hardware Requirement and Supported Functionalities?
A Raspberry Pi 4 with the below configuration can be an ideal minimum requirement to support most
of
the functionalities for RDK-Connectivity.
- CPU:
Quad-core
Arm Cortex-A72 CPU, up to 1.5 GHz - RAM: Minimum 2 GB
- Flash Memory: Minimum size of 285 MB
This configuration will enable you to run the essential functionalities of
RDK-Connectivity
effectively.
Can we modify wifi configuration of router through command line such as modifying ssid name, ssid password, wifi security protocol etc in RDK?
Yes, you can modify the Wi-Fi configuration of
a
router in RDK, including changing the SSID name, password, and security protocol. There
are
two main methods to achieve this:
- The dcmcli command-line utility allows you to directly change these settings, enabling
you to
manage your Wi-Fi configuration efficiently. - A WebUI, where you can modify these items just like the UI for most normal routers.
How to create a temporary guest wifi remotely (via WebPA, TR-069) on a RDK-Connectivtiy?
There are already reserved SSID for Guest WiFi network. Just enable the SSID using the respective
DM
to get the features in place.
What is the procedure to add new parameter to the existing object?
Please refer: Integration Guide for third-party applications into RDK-Connectivity
stack.
How to handle parameter value change in CcspTr069Pa?
- The code entrance to handle parameter value change in CcspTr069Pa
is
CcspCwmppoProcessPvcSignal() in ccsp_cwmp_proco_event.c. - Not all parameters changed would notify CcspTr069Pa. Only the parameters registered for a
value
change callback will be notified, such as ManagementServerURL. - If you add new parameters in the data model and want CcspTr069Pa to receive
value-change
notifications, you need to set the TR-181 parameter notification using
SetParamAttribute. - If you add a new application that wants to receive notifications for some specific
parameters,
it needs to register for the “parameterValueChangeSignal” D-Bus callback, similar
to how
ccspWifiAgent is implemented in cosa_wifi_apis.c.
RDK-V
Does RDK have support for Fast Channel Change?
Yes, please refer this link: Session
Manager.
Is there any example for gstreamer to enc/dec media file?
This is a sample pipeline to play dtcp encrypted content using gst-launch.
gst-launch-1.0 httpsrc location=”http://127.0.0.1:8080/hnStreamStart?live=ocap://0x2c23&continueTSB=true”
blocksize=131072 ! dtcpdec dtcp-src-ip=”127.0.0.1″ dtcp-port=5000 buffersize=131072
!
playersinkbin is-live=true.
How can we manage and configure video output settings on an RDK device?
RDK Device Settings is the component which handles the following configurations:
- Audio Output Ports (Volume, Mute, etc.)
- Video Ouptut Ports (Resolutions, Aspect Ratio, etc.)
- Front Panel Indicators
- Zoom Settings
- Display (Aspect Ratio, EDID data, etc.)
- General Host Configuration (power management, event management etc.)
These properties persisted in the STB and are read/applied on each boot-up.
For example: The device setting properties persisted in
‘/opt/persistent/ds/hostData’.
There are few sample applications available to test/force the settings e.g. setResolution can
be
used to force the resolution settings.
RDK-Cloud
How to Use WebPA for Interacting with the RDK-Connectivity Data Model?
WebPA is a web service running on RDK-Connectivity devices that allows you to manage and
interact with the
RDK-Connectivity data model. Parodus is the client-end service
running on the RDK-Connectivity CPE devices that connects
to the webPA service during
device boot-up and facilitates request-response interactions between the
webPA server
& CPE device services. Parodus functionalities-
Websocket client: Nopoll library used as Websocket Client. It allows building
pure
WebSocket solutions or to provide WebSocket support to existing TCP
oriented
applications. Nopoll handles all the messages coming from or to the
server
asynchronously.
Nanomsg Server: Parodus acts as Nanomsg server
to
distribute messages upstream and downstream.
Steps to use WebPA:
Edit parodus startup script for enabling the CPE device to use local webPA server.
ServerURL: Set to IP Address and Port of talaria service.
–force-ipv4: Force use of IPv4 for communication.
vi /lib/rdk/parodus_start.sh ServerURL=http://<webpa-ip>:8080 command="/usr/bin/parodus --hw-model=$ModelName --hw-serial-number=$SerialNumber --hw-manufacturer=$Manufacturer --hw-last-reboot-reason=$LastRebootReason --fw-name=$FirmwareName --boot-time=$BootTime --hw-mac=$HW_MAC --webpa-ping-time=180 --webpa-interface-used=erouter0 --webpa-url=$ServerURL --webpa-backoff-max=$BackOffMax --parodus-local-url=$PARODUS_URL --partner-id= --ssl-cert-path=$SSL_CERT_PATH --force-ipv4 "
Start the service after changes are done:
# rm –rf /tmp/parodusCmd.cmd # systemctl restart parodus
How to Set a Parameter on an RDK Device Using WebPA? For Example, Changing the SSID?
To change a parameter, such as the SSID, on an RDK device using WebPA, follow these steps:
- Setting the SSID password:
curl -X PATCH http://<IP>:9003/api/v2/device/mac:<MAC>/config -d '{"parameters": [ {"dataType": 0, "name": "<TR181_PARAM>", "value": "<Value-to-Set>"}]}' -H 'Authorization:Basic <TOKEN>'
- Getting the SSID for the board.
curl -H ''Authorization:Basic <TOKEN>' -i http://<WEBPA-URL>/api/v2/device/mac:<DEVICE_MAC>/config?names=<PARAMETER>
Example:
Set:
curl -X PATCH http://webpa.rdkcentral.com/api/v2/device/mac:<MAC>/config -d '{"parameters": [ {"dataType": 3, "name": "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.XDial.Enable", "value": "0"}]}' -H 'Authorization:Basic d3B1c2VyOndlYnBhQDEyMzQ1Njc4OTAK'{"parameters":[{"name":"Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.XDial.Enable","message":"Success"}],"statusCode":200}
Get:
curl -H 'Authorization:Basic d3B1c2VyOndlYnBhQDEyMzQ1Njc4OTAK' -i 'http://webpa.rdkcentral.com/api/v2/device/mac:<MAC>/config?names=Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.XDial.Enable'
Is it possible to override the firmware download location set from the ‘Download location filter’ page?
RDK-Generic
How do I download old versions of rdkv-xxxxqx?
Use below command format:
repo init -u https://code.rdkcentral.com/r/manifest -m <manifest.xml>
-b
<platform>-<release tag>
Example:
RDK-Connectivity: repo init -u https://code.rdkcentral.com/r/manifest -m
rdkb.xml -b
rdkb-2024q3-kirkstone
RDK-V: repo init -u https://code.rdkcentral.com/r/manifest -m rdkv.xml
-b
rdkv-2023q4-dunfell
If you want to download image follow Build Guide.
You can find more information about available releases on the RDK
Releases.
Note:
We
only support the current release and the two previous
releases.
For
RDK-Connectivity, the release cycle is quarterly, while for RDKV, it
is annual. (The quarterly release
name can be given with -b option).
Is it possible to just download the pre-built images that can be loaded onto an SD card without having to build it?
Yes, it is possible to download pre-built images that can be directly loaded onto an SD
card
without the need for building it from source. You can find these pre-built images
from the
following link:
RDK-B Pre-Built Images, RDK-V Pre-Built Images.
How to enable debug logs for a component?
Below are the two ways to enable debug logs for components.
- adding prints in the respective place of code
- using rdkb logger (LogAgent).
LoggerEnable: to enable/disable logs for
particular
component. If it is TRUE logs are enabled otherwise, logs are
disabled.
LogLevels:
To set different log levels for each component. By
default, all modules log level is 4
(RDK_LOG_INFO).
At run time use the below command to change log levels.
Example:
rdklogctrl <app_name> <module_name> <loglevel> rdklogctrl CcspWifiSsp LOG.RDK.WIFI FATAL,ERROR,WARN,NOTICE,INFO,DEBUG,TRACE1-TRACE9
With regards to crashupload, is there a feature to prevent the deletion of the corefiles from the box, which is useful during development and integration?
There isn’t a feature or built-in flag in the crashupload script to prevent the deletion
of
core files. However, you can make a local modification to the script to avoid
deleting older
files after the log upload is completed. Specifically, you can comment
out certain lines in
the uploadDumps.sh script, which will prevent the deletion of core
files from the device.
You can modify the script to avoid the deletion of older files:
https://code.rdkcentral.com/r/plugins/gitiles/rdk/components/generic/crashupload/+/refs/heads/rdk-next/uploadDumps.sh#321
What are the steps to analyze a minidump file after a crash?
Please refer Breakpad steps to analyze minidump file generated by Breakpad.
How will backward compatibility be ensured with new releases of the RDK?
Backward compatibility will be maintained with previous RDK versions according to
the
guidelines outlined in the agreement. Additional details can be found in the
release notes
on the RDK Wiki as they become available. Please note that after the
release of a few new
versions, older versions may be deprecated.
How to configure Kernel?
- Create a configuration file (e.g., http_netfilter.cfg) with the desired
kernel
customizations in a directory like meta-rdk-ext/recipes-kernel/linux/files/. - Include this configuration file in the appropriate kernel recipe
(e.g.
meta-rdk-ext/recipes-kernel/linux/stblinux%.bbappend). - Use the menuconfig commands to interactively configure the kernel from a devshell,
which
can be accessed by running bitbake <kernel-recipe> -c devshell. - This is a common way to customize the kernel configuration in a
Yocto/OpenEmbedded-based
build system. By creating a separate configuration file
and including it in the
appropriate recipe, the customizations can be easily
managed and applied during the
kernel build process.
Is there a consolidated logging system like SYSLOG available?
Yes, all logs are maintained in persistent path (opt/logs), though the path may
change
depending on the platform configuration. Log rotation is available if size goes
beyond. Log
servers are in place. More details on how logging is done in RDK can be
found here: Log Upload
How can I obtain the minidump files for a box reboot?
For a systemd-based box, the minidump files will be located in the following
directory:
/opt/minidump/.
Additionally, for system logs, you can browse through
following files
in /opt/logs: core_log.txt, rebootInfo.log etc.
Previous boot logs
can also be found
in: /opt/logs/PreviousLogs/
These locations will help you gather
the necessary minidump
and log information following a reboot.

