
{"id":11470,"date":"2024-09-25T09:43:10","date_gmt":"2024-09-25T09:43:10","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/"},"modified":"2025-03-25T05:18:32","modified_gmt":"2025-03-25T05:18:32","slug":"rdk_feature_control_-_rfc","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/","title":{"rendered":"RDK Feature Control &#8211; RFC"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n <html><body><p><br>\n <\/p>\n<div class=\"contentLayout2\">\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\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 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 class=\"inline-comment-marker\" data-ref=\"383302d8-c534-4069-8982-3f093ae51620\">Introduction<\/span><\/h2>\n\n\n<p><span><span class=\"inline-comment-marker\" data-ref=\"383302d8-c534-4069-8982-3f093ae51620\">Remote Feature Control (RFC) refers to a specific framework and mechanism incorporated within RDK middleware to enable the remote management and control of features in RDK-based C<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\">ustomer Premise Equipment (CPE)<\/span><\/span> platforms. <\/span><\/span><span><span class=\"inline-comment-marker\" data-ref=\"383302d8-c534-4069-8982-3f093ae51620\">It allows operators or service providers to remotely enable, disable, configure, or update specific functionalities without physically accessing each device. RFC provides a standardized method for managing features, reducing operational overhead and enabling selective feature deployments<\/span><\/span><span class=\"inline-comment-marker\" data-ref=\"383302d8-c534-4069-8982-3f093ae51620\">.<\/span><\/p>\n<p><span><span class=\"inline-comment-marker\" data-ref=\"383302d8-c534-4069-8982-3f093ae51620\">Before RFC, disabling and enabling a feature in the field required rolling back to older firmware, resulting in operational challenges. There was no option to selectively deploy features to a subset of devices or dynamically configure devices. This lack of flexibility limited the efficiency of feature rollouts and customization in RDK-based CPE platforms.<br><\/span><\/span><\/p>\n<p><span>RFC offers several benefits for managing features in RDK-based CPE platforms:<\/span><\/p>\n<ul>\n<li><span>It provides a solution by enabling quicker feature rollouts.&nbsp;<\/span><\/li>\n<li><span><span class=\"inline-comment-marker\" data-ref=\"337155db-a27c-4f33-9b8f-dfd4d341c54a\">Establishing<\/span> a secure channel for delivering runtime configurations.&nbsp;<\/span><\/li>\n<li><span><span class=\"inline-comment-marker\" data-ref=\"1441afc6-aa4c-41f7-8310-af0ec32051bd\">Allows<\/span>&nbsp;control over feature enablement\/disabling at runtime or during reboot.&nbsp;<\/span><\/li>\n<\/ul>\n<p><span>RFC works in conjunction with XConf, which serves as a central repository for configurations and feature flags. XConf stores the settings and feature data, while RFC facilitates communication and feature control between RDK-based CPE platforms and XConf. This integration ensures a seamless flow of configurations, enabling remote management and control of features.<\/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\">Architecture<\/h2>\n\n\n<h3 class=\"wp-sub-header\">RFC Mechanism<\/h3>\n<div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n<div class=\"drawio-macro\" data-macroid=\"03817c8a-1505-423d-8ab0-d1013d96aecb\" data-buildnum=\"9012\" id=\"drawio-macro-content-03817c8a-1505-423d-8ab0-d1013d96aecb\"><\/div>\n<div id=\"drawio-macro-data-03817c8a-1505-423d-8ab0-d1013d96aecb\"><img decoding=\"async\" src=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png\" alt=\"RFC_drawio\" title=\"RFC_drawio\"><\/div>\n<\/div>\n<p><span>This approach breaks down the RFC control flow into segments that have specific responsibilities, <\/span><span>in accordance with<\/span><span> their component design.<\/span><\/p>\n<ul>\n<li><span>Rules Engine &#8211; a passive platform that responds to a specific request, running a defined set of rules against the incoming set of parameters, and<\/span><span> <\/span><span>providing generic data results based on the application of the rules.<\/span><\/li>\n<li><span>Transport &#8211; provides the conduct of signaling and data parameters from client to cloud and back.<\/span><\/li>\n<li><span>Execution &#8211; application of the RFC parameters on the client.<\/span><\/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<h3 class=\"wp-sub-header\"><span class=\"TextRun SCXW233083459 BCX0\"><span class=\"NormalTextRun SCXW233083459 BCX0\">RFC Control Flow<\/span><\/span><\/h3>\n<p><span>An RFC transaction begins with the initiation event that causes the rules engine to evaluate a given rule set. In conjunction with the existing telemetry initialization, which is an HTTP GET sent directly from the client to <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\">Device Configuration Manager (DCM), the<\/span><\/span>&nbsp;RFC request will be sent at a specific point in the client startup process. The response from XConf\/DCM will include the new JSON data structure that defines the feature control data for that specific client.<\/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<h3 class=\"wp-sub-header\"><span>Key aspects of the client RFC processing<\/span><\/h3>\n<ul>\n<li>\n<p><span>HTTP GET to XConf\/DCM requesting RFC settings<\/span><\/p>\n<\/li>\n<li>\n<p><span>Response from DCM is parsed and the configuration data <\/span><span>extracted<\/span><\/p>\n<ul>\n<li>\n<p><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\">includes &#8220;<\/span><\/span><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\">featureControl<\/span><\/span><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\">&#8221; data block<\/span><\/span><\/p>\n<\/li>\n<li>\n<p><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\">looks for <\/span><\/span><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\">&#8220;<\/span><\/span><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\">effectiveImmediate<\/span><\/span><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\">&#8220;<\/span><\/span><span><span class=\"inline-comment-marker\" data-ref=\"bf7dce53-2aac-4b66-b564-7c1cdf31c573\"> flag, evaluates if a change in the corresponding enable state, triggers reboot<\/span><\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><span>The JSON config data supports 2 modes for the client control: Environment Variable, or TR-181 data parameters<\/span><\/p>\n<\/li>\n<li>\n<p><span>At feature startup, the feature modules will check the Environment Variable or the TR-181 parameter to determine the enable\/disable state.<\/span><\/p>\n<\/li>\n<li>\n<p><span>Example-&#8220;Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.FireboltRefUI.Enable&#8221; to determine the enable\/disable state of the Ripple feature.<\/span><\/p>\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<h3 class=\"wp-sub-header\"><span>Steps of the RFC Process<\/span><\/h3>\n<p><span><\/span><\/p>\n<div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n<div class=\"drawio-macro\" data-macroid=\"7e7858a9-dae5-46aa-a282-3278e92c4ef1\" data-buildnum=\"9012\" id=\"drawio-macro-content-7e7858a9-dae5-46aa-a282-3278e92c4ef1\"><\/div>\n<div id=\"drawio-macro-data-7e7858a9-dae5-46aa-a282-3278e92c4ef1\"><img decoding=\"async\" src=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC-working_drawio.png\" alt=\"RFC-working_drawio\" title=\"RFC-working_drawio\"><\/div>\n<\/div>\n<p>The RFC process is controlled through the rfc-config service. RFCBase.sh communicates with the XConf server to fetch predefined feature data.<br><\/p>\n<p>On the device side, RFCBase.sh parses the feature control JSON messages and creates system-level and individual configuration files with the key and values. RDK modules then pick the environment variables using the RFC API or the script to toggle the relevant feature.<\/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<h3 class=\"wp-sub-header\"><span>Use cases<\/span><\/h3>\n<p>The primary use case for RFC is to enable or disable a specific set-top feature, providing remote control capabilities to support a progressive rollout or rollback of features. In this example, we will focus on the TR-181 parameter &#8220;Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.FireboltRefUI.Enable&#8221; to enable or disable the Ripple feature within the FireboltRefUI. Enabling the Ripple feature enhances the user interface by adding interactive and visually appealing elements. It introduces fluid animations, smooth transitions, and visual effects that respond to user interactions, making the interface more intuitive and engaging.<\/p>\n<p>If the &#8220;Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.FireboltRefUI.Enable&#8221; parameter is set to &#8220;true&#8221;, the system agent can initiate the necessary processes or components to enable the Ripple feature within the FireboltRefUI. On the other hand, if the parameter is set to &#8220;false&#8221;, the system agent can disable the Ripple feature.<\/p>\n\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeHeader panelHeader pdl\"><b>Example<\/b><\/div>\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">To enable the Ripple feature, you can use the following command: \ntr181 -s -t boolean -v true Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.FireboltRefUI.Enable \n\nTo disable the Ripple feature, you can use the following command: \n tr181 -s -t boolean -v false Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.FireboltRefUI.Enable <\/pre>\n<\/div>\n<\/div>\n<p>By utilizing these tr181 commands, you can easily control the enablement or disablement of the Ripple feature within the FireboltRefUI, allowing for flexible and dynamic management of set-top features.<br>Note: To enable this change on the fly, the &#8220;effectiveImmediate&#8221; flag should be set to true; by default, this flag is set to false.<\/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>Configuration Details<\/span><\/h2>\n\n\n<h3 class=\"wp-sub-header\"><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\"><span class=\"inline-comment-marker\" data-ref=\"00c71a90-0b42-4dad-9558-a30a85490732\">RFC-Related Files and their Descriptions<\/span><\/span><\/span><\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup class=\"\"><col class=\"\"><col class=\"\"><\/colgroup><tbody class=\"\"><tr class=\"\"><th class=\"confluenceTh\"><span>Output file<\/span><\/th><th class=\"confluenceTh\"><span>Description<\/span><\/th><\/tr><tr class=\"\"><td class=\"confluenceTd\"><span>\/tmp\/rfc-parsed.txt<\/span><\/td><td class=\"confluenceTd\"><span>If validation is success, contains parsed feature control data<\/span><\/td><\/tr><tr class=\"\"><td class=\"confluenceTd\"><span>$PERSISTENT_PATH\/rfcVariable.ini<\/span><\/td><td class=\"confluenceTd\"><span>Aggregated configuration variables of al features<\/span><\/td><\/tr><tr class=\"\"><td class=\"confluenceTd\"><span>$PERSISTENT_PATH\/.RFC_&lt;FEATURENAME&gt;.ini<\/span><\/td><td class=\"confluenceTd\"><span>If validation is success, contains feature specific configured parameters<\/span><\/td><\/tr><tr class=\"\"><td class=\"confluenceTd\"><span>\/opt\/logs\/rfcscript.log<\/span><\/td><td class=\"confluenceTd\"><span>Contains feature control logs<\/span><\/td><\/tr><tr class=\"\"><td class=\"confluenceTd\"><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\">\/etc\/rfcdefaults\/rfcdefaults.ini<\/span><\/span><\/td><td class=\"confluenceTd\"><span>It mentions <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\">default rfc values<\/span><\/span><\/td><\/tr><\/tbody><\/table>\n\n\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<h3 class=\"wp-sub-header\">Supported&nbsp;<span>RFC Features<br><\/span><\/h3>\n<p><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&nbsp;<a class=\"external-link\" href=\"https:\/\/github.com\/rdkcentral\/tr69-datamodel\/\" rel=\"nofollow\" title=\"https:\/\/github.com\/rdkcentral\/tr69-datamodel\/\">https:\/\/github.com\/rdkcentral\/tr69-datamodel\/<\/a>&nbsp;data model xml data for supported RFC Features. This repository holds the generic data model defined by CPE WAN Management Protocol (CWMP).<\/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\n\n<h2 class=\"wp-block-heading wp-main-header\"><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\">RFC using Community XConf server<\/span><\/span><\/h2>\n\n\n<p><span>&#8288;To know how XConf configuration and feature validation are done <span class=\"inline-comment-marker\" data-ref=\"3f210b66-90bc-46ea-9f12-579909baa17c\">please click <\/span><a href=\"\/documentation\/documentation\/device_management\/xconf\/xconf_server_-_user_guide_for_configuration_and_feature_validation\" rel=\"nofollow\"><span class=\"inline-comment-marker\" data-ref=\"3f210b66-90bc-46ea-9f12-579909baa17c\">here<\/span><\/a><span class=\"inline-comment-marker\" data-ref=\"3f210b66-90bc-46ea-9f12-579909baa17c\">.<\/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<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><\/p><\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Remote Feature Control (RFC) refers to a specific framework and mechanism incorporated within RDK [&hellip;]<\/p>\n","protected":false},"author":1026,"featured_media":0,"parent":11460,"menu_order":3,"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-11470","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>RDK Feature Control - RFC - 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\/device_management\/xconf\/rdk_feature_control_-_rfc\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RDK Feature Control - RFC - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Introduction Remote Feature Control (RFC) refers to a specific framework and mechanism incorporated within RDK [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png\" \/>\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=\"4 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\/device_management\/xconf\/rdk_feature_control_-_rfc\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/\",\"name\":\"RDK Feature Control - RFC - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png\",\"datePublished\":\"2024-09-25T09:43:10+00:00\",\"dateModified\":\"2025-03-25T05:18:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#primaryimage\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png\",\"contentUrl\":\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png\",\"width\":496,\"height\":502},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#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\":\"Device Management\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Xconf\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"RDK Feature Control &#8211; RFC\"}]},{\"@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":"RDK Feature Control - RFC - 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\/device_management\/xconf\/rdk_feature_control_-_rfc\/","og_locale":"en_US","og_type":"article","og_title":"RDK Feature Control - RFC - RDK Documentation Portal | Documentation","og_description":"Introduction Remote Feature Control (RFC) refers to a specific framework and mechanism incorporated within RDK [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-03-25T05:18:32+00:00","og_image":[{"url":"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/","name":"RDK Feature Control - RFC - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"primaryImageOfPage":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#primaryimage"},"image":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#primaryimage"},"thumbnailUrl":"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png","datePublished":"2024-09-25T09:43:10+00:00","dateModified":"2025-03-25T05:18:32+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#primaryimage","url":"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png","contentUrl":"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/10\/RFC_drawio.png","width":496,"height":502},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/rdk_feature_control_-_rfc\/#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":"Device Management","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/"},{"@type":"ListItem","position":4,"name":"Xconf","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/"},{"@type":"ListItem","position":5,"name":"RDK Feature Control &#8211; RFC"}]},{"@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\/11470","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\/1026"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=11470"}],"version-history":[{"count":4,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11470\/revisions"}],"predecessor-version":[{"id":11861,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11470\/revisions\/11861"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11460"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=11470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}