RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
How to solve password prompt errors during repo initiation?
To resolve password prompt errors, follow these steps:
Example:
Password for 'https://code.rdkcentral.com': remote: Unauthorized fatal: Authentication failed for 'https://<username>@code.rdkcentral.com/r/manifests/'
Obtain valid RDK credentials: Make sure you have a valid RDK Central account. If not, register at the RDK Central Registration Link using your company email address.
Activate your account: If your account is inactive or disabled, you can activate it using the self-service option. Log in to wiki.rdkcentral.com and follow the instructions to activate your account. If you still face issues, contact support@rdkcentral.com.
Check your login credentials: Ensure you are using the username and password to log in to code.rdkcentral.com. If you are still facing authentication issues, contact support@rdkcentral.com.
Update the .netrc file: If you can browse the repository at https://code.rdkcentral.com/r/admin/repos/components/generic/mediaframework but cannot clone it, the issue might be with your environment.
Update the $HOME/.netrc
file with your login credentials:
machine code.rdkcentral.com login <user-name> password <Password>
By following these simple steps, you should be able to resolve the password prompt errors during repo initiation.
How to view the dependencies of packages?
There are tools within bitbake that enable this level of detail.
“bitbake -g targetname”
"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
:
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:
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.
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.
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 temp
directory, 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.
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:
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
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:
# 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
What are the steps to run valgrind for ccsp components?
The steps are:
For more details refer- Enabling valgrind tool for memory leak.
Is there igmp_snooper program in RDK-B?
Yes, igmp_snooper program is present in RDK-B. 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-B Data Model?
The RDK-B Data Model can be managed through several protocols and interfaces, including:
What is the Minimum RDK-B 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-B.
This configuration will enable you to run the essential functionalities of RDK-B 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:
How to create a temporary guest wifi remotely (via WebPA, TR-069) on a RDK-B?
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-B stack.
How to handle parameter value change in CcspTr069Pa?
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:
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.
How to Use WebPA for Interacting with the RDK-B Data Model?
WebPA is a web service running on RDK-B devices that allows you to manage and interact with the RDK-B data model. Parodus is the client-end service running on the RDK-B 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:
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>'
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?
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-B: 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-B, 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.
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?
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.