
{"id":11168,"date":"2023-02-09T07:41:20","date_gmt":"2023-02-09T07:41:20","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/vendor_porting_guide\/"},"modified":"2025-10-22T09:55:54","modified_gmt":"2025-10-22T09:55:54","slug":"vendor_porting_guide","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/","title":{"rendered":"RDK6 Vendor Porting Guide"},"content":{"rendered":"<div class=\"contentLayout2\">\n<div class=\"columnLayout two-right-sidebar\" data-layout=\"two-right-sidebar\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<div class=\"ui-card confluence-information-macro has-no-icon confluence-information-macro-information conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"info\">\n<div class=\"confluence-information-macro-body\">\n<p><strong><span>Before You Begin<\/span><\/strong><\/p>\n<p><strong><u><span>RDK License<\/span><\/u><\/strong><\/p>\n<p>Vendors are advised to get into an agreement with RDK Management LLC to obtain the free license to use the complete RDK Code base in their platform. More details about license are available at<span>&nbsp;<\/span><a class=\"external-link\" href=\"https:\/\/rdkcentral.com\/licenses\/\" rel=\"nofollow\">https:\/\/rdkcentral.com\/licenses\/<\/a><span>&nbsp;<\/span>. Please email<span>&nbsp;<\/span><a class=\"external-link\" href=\"mailto:info@rdkcentral.com\" rel=\"nofollow\">info@rdkcentral.com<\/a><span>&nbsp;<\/span>if you have additional questions about licenses or membership.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell aside\" data-type=\"aside\">\n<div class=\"innerCell\">\n<div class=\"confluence-information-macro has-no-icon confluence-information-macro-information conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"info\">\n<div class=\"confluence-information-macro-body\">\n<div class=\"toc-macro client-side-toc-macro conf-macro output-block\" data-headerelements=\"H1\" data-hasbody=\"false\" data-macro-name=\"toc\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<p><span>This document helps vendors understand how to create a&nbsp;<\/span><span>successful<\/span><span> port of RDK on their platform with the help of the HAL API Specification for different RDK Components, as well as how the port can be successfully certified. Depending on the device profile (&nbsp;<\/span><a class=\"editor-rtfLink\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/profiles\/ip\/\" rel=\"nofollow\"><span>IP STB<\/span><\/a><span>, <a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/profiles\/rdk-tv\/\" rel=\"nofollow\">RDK TV<\/a><\/span><span>, <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/profiles\/hybrid\/\" rel=\"nofollow\"><span>Hybrid STB<\/span><\/a><span>, etc. ), vendors may choose the relevant components and perform the port by implementing the HAL layer.<\/span><\/p>\n<p><span> Details of how to port third-party software stacks or applications to a SoC platform are out of the scope of this porting guide.<\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>Version details<\/span><\/h2>\n\n\n\n<figure class=\"wp-block-table\">\n  <table class=\"has-fixed-layout\">\n    <thead>\n      <tr>\n        <th>RDK Version<\/th>\n        <th>Applicability<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr>\n        <td>6.1<\/td>\n        <td>All RDK-V device profiles<\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n<\/figure>\n\n\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Prerequisites<\/h2>\n\n\n<p>The vendor is expected to have certain prerequisites before proceeding to the porting process, which include:<\/p>\n<ul>\n<li>\n<p><strong>RDK device profile:<\/strong><\/p>\n<ul>\n<li><span>Decide on the profile by referring to the available <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/wiki.rdkcentral.com\/display\/RDK\/Profiles\" rel=\"nofollow\"><span>RDK profiles<\/span><\/a><span> and <\/span><span>have<\/span><span> a platform with the expected capabilities for the chosen profile. Depending on the device profile selected, the components that are required to be ported are available in the HAL table below.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li><strong style=\"letter-spacing: 0.0px\">RDK HAL API Source code access<\/strong><span>:<\/span>\n<ul>\n<li><span><span>The RDK source code is distributed across multiple source code repositories which are available in <\/span><a class=\"external-link\" href=\"https:\/\/github.com\/rdkcentral\" rel=\"nofollow\"><span>RDK Central GitHub<\/span><\/a><span>.<\/span><\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><span><strong>Platform-specific Android Kernel:<\/strong><\/span><\/p>\n<ul>\n<li><span>It <\/span><span>is highly recommended<\/span><span> to use an Android kernel for the target platform as RDK is moving towards an Android kernel. However, it is the discretion of SOC to use their <\/span><span>own<\/span><span> version of kernel be it Android or non Android.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><span><strong>Platform SDK with proper build system:<\/strong><\/span><\/p>\n<ul>\n<li><span><span>While there is no dependency on a particular build framework for the vendor to implement the HAL layer and get it certified, it <\/span><span>is recommended<\/span><span> to use the Yocto ( Dunfell ) build framework for the following reasons.<\/span><\/span>\n<ul>\n<li>RDK uses Yocto&nbsp;<span>build<\/span><span> <\/span><span>framework<\/span><\/li>\n<li>Once the HAL layer is implemented and certified, an existing build framework based on Yocto will make it very easy to integrate the HAL layer into the RDK stack<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>Porting<\/span><\/h2>\n\n\n<h3 class=\"wp-sub-header\">Environment:<\/h3>\n<h3 id=\"VendorPortingGuide-Yoctobasedbuildenvironment(recommended):\"><span>Yocto based build environment( recommended ) :<\/span><\/h3>\n<p><span>RDK uses the Yocto Bitbake build system to generate RDK builds. The flexibility of Yocto to add\/ remove components or layers with much ease helps to keep RDK working fine with multiple sets of SoC\/ OEM\/ Operator \/ Third-party software combinations. Using Yocto as the build environment will help the vendors to easily plug RDK on top of their HAL implementation thereby reducing integration time at a later point once the HAL is certified. There would be a basic RDK build system on which SoC could add their Soc layer, OEM could add their OEM layer, and finally, Operator could add their Operator layer. The starting point for the Yocto build is a manifest file. For more details, please refer to the <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/\" rel=\"nofollow\"><span>manifest file<\/span><\/a><span>.<\/span><\/p>\n<p><span>Steps to setup a Yocto-based build environment is detailed below:<\/span><\/p>\n\n<h3 id=\"VendorPortingGuide-HostSetupDetails\">\n  <span>Host Setup Details<\/span><\/h3>\n\n<p><span><span>For host setup details, refer to this link: <a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/try_out_rdk\/\">Try Out RDK-Video#BuildSetupInstructions<\/a><\/span><\/span><\/p>\n<h3 id=\"VendorPortingGuide-Initializingthebuildenvironment\">\n  <span>Initializing the build environment<\/span><\/h3>\n<p><span>While the actual build setup depends on how the vendor wants to set it up, a sample Yocto build system for the RDK generic reference platforms is given below as a reference<\/span><\/p>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeHeader panelHeader pdl\"><b>build setup<\/b><\/div>\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ mkdir &lt;workspace directory&gt;\n$ cd &lt;workspace directory&gt;\n#Following commands fetch the source code using repo tool\n#repo init -u https:\/\/code.rdkcentral.com\/r\/manifests -b &lt;branch_name&gt; -m &lt;manifest.xml&gt;\n#Example:\n$ repo init -u https:\/\/code.rdkcentral.com\/r\/manifests -b 6.1.0 -m rdkv.xml\n$ repo sync --no-clone-bundle --no-tags<\/pre>\n<\/div>\n<\/div>\n<h3 id=\"VendorPortingGuide-AddthevendorlayerinYocto\">\n  <span>Add the vendor layer in Yocto<\/span><\/h3>\n<ul>\n<li><span><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\"><a class=\"external-link\" href=\"https:\/\/docs.yoctoproject.org\/dev-manual\/layers.html#understanding-and-creating-layers\" rel=\"nofollow\">Click here<\/a> to understand and create layers.<\/span><\/span><\/li>\n<li><span><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\">Refer to <a href=\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk_yocto_build_system_overview\/\" rel=\"nofollow\">this link<\/a> to know about the RDK Yocto Layer Structure.<\/span><\/span><\/li>\n<\/ul>\n<h3 id=\"VendorPortingGuide-Vendor-specificbuildenvironment:\">\n  <span>Vendor-specific build environment:<\/span>\n<\/h3>\n<p><span>Vendor can use the build framework of their choice to create the software for their platform. This will help the vendor to use their existing build framework and develop the RDK HAL layer on top of their platform\/SDK using it. As this framework varies from vendor to vendor ( for eg: Yocto BitBake, Buildroot, etc. to name a few ) there are no generic steps that can be shared towards this, and depends on the vendors build setup.<\/span><\/p>\n<p><span>For FAQs on Yocto Build, please refer to the&nbsp;<\/span><a class=\"editor-rtfLink\" href=\"https:\/\/developer.rdkcentral.com\/support\/support\/rdk_faq\/\" rel=\"nofollow\"><span>Build FAQ<\/span><\/a><span>.<\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\"><span>Kernel<\/span><\/h3>\n<p><span>In the RDK-V ecosystem, the SOC team provides the kernel and associated drivers required for respective devices. As of RDK-6, there was no requirement for a specific Android kernel version. Different SOC platforms use different versions.<\/span><\/p>\n<p>The responsibilities can be divided between the SOC vendor, RDK system integrator, and OEM vendor.<\/p>\n<h3 id=\"VendorPortingGuide-Prerequisites.1\"><span>Prerequisites<\/span><\/h3>\n<ul>\n<li><span>Required Kernel configurations to be enabled for RDK6.x have to be shared with SOC.<\/span>\n<ul>\n<li>For other kernel configuration-dependent RDK features (container, AppArmor)<\/li>\n<li>Identify any other kernel configurations needed for RDK functionality<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"VendorPortingGuide-Assumptions\">Assumptions<\/h3>\n<ul>\n<li><span>For SOC reference devices, providing updated kernel release along with dependent package (SDK) is the responsibility of SOC partners.<\/span><\/li>\n<li><span>For OEM VA devices, ideally, it is the OEM&#8217;s responsibility to get an updated kernel from SOC and then integrate OEM-dependent components\/drivers on top of it. But in most cases, the<\/span><span> <\/span><span>RDK system integrator (RDKM platform team in this case) does this job of getting kernel release from SOC and coordinating with OEM and other 3rd party vendors to integrate their respective modules with the updated kernel.<\/span><\/li>\n<li><span>For open platforms (RPI), it is the responsibility of the RPI RDK platform development team to download the Android RPI kernel, update relevant configurations and drivers and supporting packages, and upgrade the kernel.<\/span><\/li>\n<\/ul>\n<p><span>For high-level design\/architecture of the Android kernel, please refer&nbsp;<\/span><a class=\"external-link\" href=\"https:\/\/source.android.com\/docs\/core\/architecture\/kernel\" rel=\"nofollow\">android kernel architecture page<\/a> .<\/p>\n<p><u><span>NOTE<\/span><\/u><span>: In the future, all RDK devices will be upgraded to the 64-bit Android Common Kernel 5.15 for the RDK7 release.<\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\"><span>HAL<\/span><\/h3>\n<p><span>RDK provides a set of HAL APIs that will abstract the platform from RDK. Vendors need to implement the HAL APIs to meet the HAL Specifications as described in the HAL Documentation for each component in the below table. Details of which HAL components need to be implemented for each device profile and their documentation are specified in the HAL table below.&nbsp;<br \/><\/span><\/p>\n<p><span><span class=\"confluence-anchor-link conf-macro output-inline\" id=\"VendorPortingGuide-GenericHAL\" data-hasbody=\"false\" data-macro-name=\"anchor\"><\/span><\/span><\/p>\n\n\n<figure class=\"wp-block-table\">\n  <table class=\"has-fixed-layout\">\n    <thead>\n      <tr>\n        <th>HAL Documentation<\/th>\n        <th>Source Code<\/th>\n        <th>License Type<\/th>\n        <th>HAL Implementation Owner<\/th>\n        <th>Device Profile Applicability<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/de\/db1\/group___b_l_u_e_t_o_o_t_h___c_o_r_e.html\" rel=\"nofollow\">Bluetooth<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/bluetooth\/+\/refs\/heads\/6.0.0\/include\/\" rel=\"nofollow\">Legacy version<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>OEM &amp; SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-licensed\/group___c_l_o_s_e_d___c_a_p_t_i_o_n.html\" rel=\"nofollow\">Closed Caption<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/components\/generic\/closedcaption\/+\/refs\/heads\/6.0.0\/include\/\" rel=\"nofollow\">Legacy version<\/a><\/td>\n        <td>Licensed<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/deepsleep_manager\/\" rel=\"nofollow\">Deepsleep Manager<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-deepsleep_manager\/tree\/0.2.0\" rel=\"nofollow\">0.2.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/device_settings\/\" rel=\"nofollow\">Device Settings<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-device_settings\/tree\/0.2.0\" rel=\"nofollow\">0.2.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>OEM &amp; SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-licensed\/group__dvrmgr.html\" rel=\"nofollow\">DVR Manager<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/components\/generic\/dvr\/+\/refs\/heads\/6.0.0\" rel=\"nofollow\">Legacy version<\/a><\/td>\n        <td>Licensed<\/td>\n        <td>SOC<\/td>\n        <td>Hybrid STB<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/hdmi_cec\/\" rel=\"nofollow\">HDMI CEC<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-hdmi_cec\/tree\/0.2.0\" rel=\"nofollow\">0.2.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/dc\/d54\/group___i_a_r_m___p_l_a_t___i_r___a_p_i.html\" rel=\"nofollow\">IR Manager<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/iarmmgrs\/+\/refs\/heads\/6.0.0\/hal\/include\/plat_ir.h\" rel=\"nofollow\">Legacy version<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-licensed\/group___m_f_r_l_i_b_s.html\" rel=\"nofollow\">MFRLibs<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/mfrlibs\/+\/refs\/heads\/6.0.0\/include\/\" rel=\"nofollow\">Legacy version<\/a><\/td>\n        <td>Licensed<\/td>\n        <td>OEM<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/dd\/d8b\/group___m_o_c_a_h_a_l.html\" rel=\"nofollow\">MoCA<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/mocahal\/+\/refs\/heads\/6.0.0\" rel=\"nofollow\">Legacy version<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>Hybrid STB<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/power_manager\/\" rel=\"nofollow\">Power Manager<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-power_manager\/tree\/0.2.0\" rel=\"nofollow\">0.2.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/rmf_audio_capture\/\" rel=\"nofollow\">RDK-V RMF AudioCapture<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-rmf_audio_capture\/tree\/0.2.0\" rel=\"nofollow\">0.2.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-licensed\/group__sectionfilter.html\" rel=\"nofollow\">Section Filter<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/mediaframework\/+\/refs\/heads\/6.0.0\/soc_qamsource_stub\/sectionfilter\/include\/\" rel=\"nofollow\">Legacy version<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/tvsettings\/\" rel=\"nofollow\">TV Settings<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdkv-halif-tvsettings\/tree\/0.2.0\" rel=\"nofollow\">0.2.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/wifi\/\" rel=\"nofollow\">Wi-Fi<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdkv-halif-wifi\/tree\/0.2.0\" rel=\"nofollow\">0.2.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>OEM &amp; SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/avsync\/\" rel=\"nofollow\">AVSync<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-avsync\/tree\/1.0.0\" rel=\"nofollow\">1.0.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/libdrm\/md_pages_2libdrm__hal_spec.html\" rel=\"nofollow\">libDRM<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-libdrm\/tree\/1.0.0\" rel=\"nofollow\">1.0.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-licensed\/v4L2\/md_pages_2v4l2__hal_spec.html\" rel=\"nofollow\">V4L2<\/a><\/td>\n        <td><a href=\"https:\/\/github.com\/rdkcentral\/rdk-halif-v4l2\/tree\/1.0.0\" rel=\"nofollow\">1.0.0<\/a><\/td>\n        <td>Licensed<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"\/documentation\/documentation\/rdk_video_documentation\/vendor_porting_guide\/rdk_svp_designspecification\" rel=\"nofollow\">SVP (Specification Document)<\/a><\/td>\n        <td>beta<\/td>\n        <td>Open Source<\/td>\n        <td>NA<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n      <tr>\n        <td><a href=\"\/documentation\/documentation\/rdk_video_documentation\/vendor_porting_guide\/westeros-sink-soc_module\" rel=\"nofollow\">Westeros-sink-soc<\/a><\/td>\n        <td><a href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/components\/opensource\/westeros\/+\/refs\/heads\/6.0.0\/westeros-sink\/v4l2\/westeros-sink-soc.c\" rel=\"nofollow\">6.0.0<\/a><\/td>\n        <td>Open Source<\/td>\n        <td>SOC<\/td>\n        <td>IP STB, Hybrid STB, TV<\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n<\/figure>\n\n\n<p><span class=\"status-macro aui-lozenge aui-lozenge-subtle conf-macro output-inline\" data-hasbody=\"false\" data-macro-name=\"status\">OEM&amp;SOC<\/span><span> : This indicates corresponding HAL needs to be implemented by both OEM and SOC<\/span><\/p>\n<p><span class=\"status-macro aui-lozenge aui-lozenge-current aui-lozenge-subtle conf-macro output-inline\" data-hasbody=\"false\" data-macro-name=\"status\">SOC<\/span> : This indicates corresponding HAL needs to be implemented by SOC<\/p>\n<p><span class=\"status-macro aui-lozenge aui-lozenge-moved aui-lozenge-subtle conf-macro output-inline\" data-hasbody=\"false\" data-macro-name=\"status\">OEM<\/span> : This indicates corresponding HAL needs to be implemented by OEM<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>Certification<\/span><\/h2>\n\n\n<p><span>RDK certification program facilitates users to get their Video Accelerator product certified as RDK compliance device.<\/span><\/p>\n<p><span>RDKM provides the&nbsp;<\/span><a class=\"editor-rtfLink\" href=\"https:\/\/wiki.rdkcentral.com\/display\/TDK\/RDK+Certification+Suites\" rel=\"nofollow\"><span>RDK Certification suite<\/span><\/a><span>&nbsp;to verify the compliance of the RDK Video Accelerator device. The certification program includes testing that validates the RDK&nbsp; stack on the user platform with a defined test suite called as RDK Certification Test Suite.&nbsp; It is mandatory to go through this program <\/span><span>in order to<\/span><span> brand the user&#8217;s platform as an RDK-compliant product.<\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Before You Begin RDK License Vendors are advised to get into an agreement with RDK [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":12434,"menu_order":9,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-11168","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>RDK6 Vendor Porting Guide - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RDK6 Vendor Porting Guide - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Before You Begin RDK License Vendors are advised to get into an agreement with RDK [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-22T09:55:54+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/\",\"name\":\"RDK6 Vendor Porting Guide - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2023-02-09T07:41:20+00:00\",\"dateModified\":\"2025-10-22T09:55:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Video\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"RDK6\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"RDK6 Vendor Porting Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RDK6 Vendor Porting Guide - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/","og_locale":"en_US","og_type":"article","og_title":"RDK6 Vendor Porting Guide - RDK Documentation Portal | Documentation","og_description":"Before You Begin RDK License Vendors are advised to get into an agreement with RDK [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-10-22T09:55:54+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/","name":"RDK6 Vendor Porting Guide - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2023-02-09T07:41:20+00:00","dateModified":"2025-10-22T09:55:54+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/vendor_porting_guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Video","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/"},{"@type":"ListItem","position":4,"name":"RDK6","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk6\/"},{"@type":"ListItem","position":5,"name":"RDK6 Vendor Porting Guide"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=11168"}],"version-history":[{"count":53,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11168\/revisions"}],"predecessor-version":[{"id":12575,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11168\/revisions\/12575"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12434"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=11168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}