RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
This document covers the design approach used for upgrading firmware for RPI RDK Broadband devices using XCONF server & TFTP/HTTP protocol
1. RPI Box needs reboot (automated) after booted for first time which will create two more partition table for upgrade
2. For multi boot, RDKV image can't be flashed in bank 0 if RDKB image is flashed without resizing bank 0 rootfs partition. Since size of RDKB rootfs is lesser than 500 MB which is not suitable only for RDKV which expects more than 1GB. So RDKB rootfs partition needs resize suitable for RDKV multi boot whose procedure is mentioned in user manual RDK-(B/V) Firmware Upgrade in RPI - User Manual - 2019 M7
3. Download protocol used for this design is tftp . No other protocol is supported for download image file
On considering above described requirement,design approach for RDKB firmware upgrade for RPI device as follows
Initially we need to do firmware configuration in XCONF server i.e we need to create firmware config ,firmware rule,download filter info(protocol(TFTP/HTTP),IP address) etc corresponding to RPI MAC address
Next we need to have TFTP server in public network,so that it can be accessed by the device
In RPI we have to create a script which will be called by the systemd service file on boot up,When the device boots the script will read the cloud firmware version using a curl request and it will check with the local FW version,If the device FW version and cloud FW version are different then it will go with further processing as below
RPI will send curl request to XCONF and XCONF will send firmware config info(protocol,firmware location,firmware version,etc..) to RPi & it will process the response and based on the protocol it will download from TFTP/HTTP server and proceeds with partition creation & flashing
By default RPI is having only SD card support for flashing OS and boot,right now we have only two partitions,one for Kernel(FAT32) ~50MB & other for rootfs(ext3) ~ 230 MB(mmcblk0p1,mmcblk0p2)
As part of our approach,during run time we are creating two more partitions using fdisk and mkfs.ext3 (mmcblk0p3,mmcblk0p4) will be doing reboot to take this partitions into effect
After booting we will be upgrading the new image