...
Function Name | Parameter | Description |
|---|
MakeXconfComms | pResponse
server_type http_code | Pointer to structure to receive output data Xconf Http status |
createJsonString | Char * pPostFieldOut, Size_t szPostFieldOut | The json string is looks like
| upgradeRequest | int upgrade_type,int server_type,constchar* artifactLocationUrl,constvoid* dwlloc,char*pPostFields,int*pHttp_codeUse For requesting upgrade pci, pdri and xconf. Param-1: Upgrade type pci, pdri, xconf Param-2: Type of server. HTTP_XCONF_DIRECT, HTTP_XCONF_CODEBIG, HTTP_SSR_DIRECT, HTTP_SSR_CODEBIG Param-3: Download server url Param-4: To store download data Param-5: http code | getXconfRespData | XCONFRES *pResponse,char*pJsonStrThe response looks like below
{"firmwareDownloadProtocol":"http","firmwareFilename":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz","firmwareLocation":"https://tools.rdkcentral.com:8443/images/","firmwareVersion":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz","mandatoryUpdate":false,"rebootImmediately":false}
The response from Xconf is processed as part of the jsonparser Component. This is a typical response from the Xconf.
...
eStbMac=D8:3A:DD:0A:43:71&firmwareVersion=lib32-middleware-test-image-RPI4-20251118074027&env=dev&model=RPI4&manufacturer=RaspberryPi&partnerId=community&activationInProgress=false&osClass=Not Available&accountId=1234&serial=10000000e33bf0d4&localtime=Wed Nov 26 13:44:09 UTC 2025&dlCertBundle=&rdmCatalogueVersion=&timezone=Asia/Calcutta&capabilities=rebootDecoupled&capabilities=RCDL&capabilities=supportsFullHttpUrl
|
upgradeRequest | int upgrade_type,int server_type,constchar* artifactLocationUrl,constvoid* dwlloc,char*pPostFields,int*pHttp_code | Use For requesting upgrade pci, pdri and xconf. Param-1: Upgrade type pci, pdri, xconf Param-2: Type of server. HTTP_XCONF_DIRECT, HTTP_XCONF_CODEBIG, HTTP_SSR_DIRECT, HTTP_SSR_CODEBIG Param-3: Download server url Param-4: To store download data Param-5: http code |
getXconfRespData | XCONFRES *pResponse,char*pJsonStr | The response looks like below {"firmwareDownloadProtocol":"http", |
...
"firmwareFilename":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz", |
...
...
"firmwareVersion":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz", |
...
...
"rebootImmediately":false |
...
The response from Xconf is processed as part of the jsonparser Component. This is a typical response from the Xconf.
| Code Block |
|---|
{
"firmwareDownloadProtocol":"http",
"firmwareFilename":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz",
"firmwareLocation":"https://tools.rdkcentral.com:8443/images/",
"firmwareVersion":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz",
"mandatoryUpdate":false,
"rebootImmediately":false
} |
- firmwareDownloadProtocol : This field represents the protocol. Rdkvfwupgrader support only http protocol.
- firmwareFilename: This filed use for PCI image details.
- firmwareLocation: This field provides URL endpoint to download image.
- firmwareVersion: This field provides the firmware version with out adding signed or unsigned details.
- rebootImmediatly: This field is used for critical updates. If this is
: This field represents the protocol. Rdkvfwupgrader support only http protocol.- firmwareFilename: This filed use for PCI image details.
- firmwareLocation: This field provides URL endpoint to download image.
- firmwareVersion: This field provides the firmware version with out adding signed or unsigned details.
- rebootImmediatly: This field is used for critical updates. If this is true then the device will reboot immediately after PCI flash happens to flash memory. If this is false then reboot will happen during reboot window time.
- additionalFwVerInfoadditionalFwVerInfo: This field is used for PDRI image details.
- remCtrlremCtrl: This field is used for peripheral firmware details.
- cloudDelayDownload: This field is use for make the download start with some delay.
- dlCertBundle: This filed is used for to get certificate bundle details.
...
- Communicate with XCONF server and get the response.
- Processing of XCONF response and extract the firmware image details.
- Download and flash PCI image from the SSR server to device flash memory.
- Download and flash PDRI image from the SSR server to device flash memory.
- Download and flash peripheral image from the SSR server to device flash memory.
- retry download if download fail other than image not found on server error.
- Trigger RDM Application.
- Download cert bundle.
- Support state red recovery download if the download is fail due to invalid certificate.
- Support incremental download. This feature needs to be enable using "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.IncrementalCDL.Enable" RFC
- Support Throttle download based on download speed mentioned. This feature needs to be enable using "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.SWDLSpLimit.Enable" RFC
Support codebig download. This is use if the device is not in comcast network.
Low Level Design Flow From Start To End
- In case of X1 device this This module is trigger by system service called swupdate.service and in case of TV this module is trigger by Maintenance Manager. And the trigger time is during boot up and maintenance window time and App trigger.
- In case of non-RDKE swupdate.service or maintenance manager is calling "swupdate_utils.sh". Then swupdate_utils.sh will call "rdkvfwupgrader" if the RDK Firmware RFC is true else script based download will start.
- In case of RDK-E maintenance manager is calling rdkvfwupdater using system call.
Once the rdkvfwupgradr start it gets all device info like MAC, partner id, current running image, pdri image, peripheral image etc and create XCONF query request. Below is the sample XCONF query request.- Maintenance Manager. And the trigger time is during boot up and maintenance window time and App trigger.
- In case of non-RDKE swupdate.service or maintenance manager is calling "swupdate_utils.sh". Then swupdate_utils.sh will call "rdkvfwupgrader" if the RDK Firmware RFC is true else script based download will start.
- In case of RDK-E maintenance manager is calling rdkvfwupdater using system call.
- Once the rdkvfwupgrader start it gets all device info like MAC, partner id, current running image, pdri image, peripheral image etc and create XCONF query request. Below is the sample XCONF query request.
eStbMac=D8:3A:DD:0A:43:71&firmwareVersion=lib32-middleware-test-image-RPI4-20251118074027&env=dev&model=RPI4&manufacturer=RaspberryPi&partnerId=community&activationInProgress=false&osClass=Not Available&accountId=1234&serial=10000000e33bf0d4&localtime=Wed Nov 26 13:44:09 UTC 2025&dlCertBundle=&rdmCatalogueVersion=&timezone=Asia/Calcutta&capabilities=rebootDecoupled&capabilities=RCDL&capabilities=supportsFullHttpUrl |
|---|
- Once the query request is formed then this module send the request to XCONF server and get the response. This response is in json format.
{
"firmwareDownloadProtocol":"http",
"firmwareFilename":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz",
"firmwareLocation":"https://tools.rdkcentral.com:8443/images/",
"firmwareVersion":"lib32-application-test-image-RPI4-raspberrypi4-64-rdke-feature-RDKECOREMW-863-OTA.wic.tar.gz",
"mandatoryUpdate":false,
"rebootImmediately":false
} |
|---|
| tbd |
|---|
- Once the query request is formed then this module send the request to XCONF server and get the response. This response is in json format.
- Once the XCONF response received then it processes the response and add to the data structure for future use.
- Then this module does the image validation if image is invalid then this module is exit with error message.
- Once the image validation pass then it goes for PCI download. If the download fail then it has 3 times retry before make download status fail. If the download completed successfully then this image is flashed to the flash memory. Before image download start this module will check if any chunk of the image already present if it present then download start from where it left last time.
After 3 retry happen because of http error code 0 then download switch to codebig server download. This kind of proxy server. If this download pass, then status is successfully else download is failed- .
- If the download is failed due to certificate validation error, then state red recovery download will trigger. This is a kind of recovery server which is use static certificate to download image.
- If no failure during download and download completed successfully then this image is flashed to flash memory. Before flashing the image sign verification happen.
- Same above step 7 to 10 repeat for PDRI image and peripheral image.
- Once the download completed the status of the download is send to maintenance manager and some other service using IARM event.
...