RFC stands for RDK Feature Control.
It provides a mechanism to remotely enable, disable, or configure software features on RDK-based devices (CPEs).
RFC is primarily used by Release Management for controlled, staged rollouts of new features across production devices — ensuring stability and gradual deployment.
The RFC configuration process involves multiple RDK components working together to fetch, process, and apply configuration updates.
The flow is summarized below:
Periodically evaluates when to start the RFC task.
When conditions are met, it launches the RFC Manager to begin the configuration process.
RFC Manager sends an HTTP request to the configured XConf URL, including key device identifiers:
STB MAC Address
Account ID
Partner ID
Firmware Version
XConf uses these identifiers to locate the appropriate configuration and returns it as a JSON payload.
Parses the JSON response to extract all configuration parameters.
tr181 set commands for each relevant RFC value.tr181 set uses RFC API which in turn calls the tr69hotif API to store these environment variables and TR-181 parameters.
The tr181 set commands internally call the RFC API to perform parameter get/set operations.
The RFC API communicates with the local HTTP server running within tr69hostif using HTTP GET or POSTrequests.
tr69hostif uses the below files for storing the configuration:
/opt/secure/RFC/rfcVariable.ini | RFC environment variables | Contains environment-level variables derived from RFC config |
/opt/secure/RFC/tr181store.ini | RFC namespace TR-181 parameters | Contains TR-181 parameters managed within the RFC namespace |
/opt/secure/RFC/bootstrap.ini | Bootstrap TR-181 parameters | Contains TR-181 parameters with the bsUpdate attribute |
| Profile-specific storage | Non-RFC TR-181 parameters | Managed by respective profile handlers with their own storage mechanism |
6. tr69hostif Request Routing
The tr69hostif component routes incoming parameter requests based on their namespace or attributes:
bsUpdate attribute present | Bootstrap handlers | Handles bootstrap get/set requests |
| RFC namespace | RFC handlers | Manages parameters controlled by RFC |
| Other (non-RFC) parameters | Profile handlers | Routed to profile-specific get/set implementations |
LIBRDKCERTSELECTOR is defined.tbd |
tbd |
|
tbd |
|