 Hi everyone, greetings. Welcome to my presentation on getting started with RDK. Very, very happy to be part of this open source summit 2021. Thank you Linux Foundations for this great opportunity. I'm Harini from India, currently working as a broadcast engineer in a research and development company called Tata LXI. For the past 1.5 years I've been working with the open source called RDK and I'm very excited to share that with you. So let's get started. Yeah, this is going to be our today's agenda. We'll be looking into what is RDK, why we need RDK, business benefits, co-components and what is RDK based on and we'll look into RDK profiles and RDKB, RDKB architecture, RDKB goals in a very detailed way. And I'll also be sharing you how to clone a RDKB code to get started with RDKB and at the end I'll be sharing some of the useful resources. So what is RDK? Reference design kit is commonly known as RDK is a pre-integrated open source software distribution that accelerates the deployment of next generation video and broadband services. It provides a common framework for powering customer premises, equipment, CPE such as tariff boxes, modern routers and other devices from communication service providers. It helps service providers to standardize certain elements of these devices enabling them to quickly launch their own new services or customized applications and user experiences. The RDK speeds time to market while enabling flexibility and competitive differentiation. The RDK community is comprised of many companies including CE, manufacturers, silicon vendors, OEMs, software developers, system integrators and service providers. Presently millions of devices use the RDK to power the next generation video and broadband services. You guys know something RDK has now passed 80 million device deployments into the market. That's huge right? RDK is everywhere now from seraph boxes to routers. Why we need RDK? When it comes to seraph boxes all we need is high definition picture quality playing the content without buffering, security and etc. And RDK provides all these and that's why this is successfully deployed in 80 million devices. It supports rapid development and development of next generation features. It reduces the dependency on OEM firmware and engineering bandwidth. It reduces need for specific hardware availability, no need for firmware updates on CPE devices. It also provides super fast cloud deployment. It also leverages industry knowledge and improvements in web technologies like larger pool of skill engineers leads to better innovation and high quality products. It also supports the next generation client and server model for cloud based features. It gives the operator control feature like everything can be operated by the operator itself. Just imagine you have a seraph box and a person comes to your house every 14 days saying a patch needs to be updated it's annoying right? So RDK will let everything to be controlled by the operator itself and also it's a no cost agreement with a variety of support and innovation. Okay next is is the business benefits. Now let's think about the business perspective from the business perspective. So the first one is the design ownership. RDK's modular plugin architecture enables providers to develop, innovate and differentiate other application and service layer allowing a consistent customer experience across all RDK devices. Providers benefit from frequent robust releases and continuous improvements that dramatically improve product development velocity. The next one is your controller environment. With RDK it can control your ecosystem. RDK allows you to innovate to meet your product vision, deploy at your own pace and control your customer data, apps and customer experience. Take advantage of the innovative contributions that come from open source and use RDK tools to build, test and deploy on your terms. The next one is your finite possibility and zero cost. RDK is a no cost royalty free open source license providing full transparency into the source code. This allows developers to efficiently collaborate on projects with skilled partners in the RDK community. Add new features and resolve issues at their own pace and also creating contributions that benefit the entire community. RDK co-components. So the RDK stack is organized into four high level components. You can see here like application layer, common RDK, OE framework and SOC RDK. So what is application platform? It allows for operator specific components, services and applications and these components are device and SOC independent. And the next one is common RDK. It contains the source code and links to acquire open source or third party components and instructions for creating SOC specific RDK and basic validation tools. And the third one is OEM framework. It has the optimized components for SOC specific RDK provided by the OEM. Also OEM software for boot up graphical interface and APIs for additional telemetry and divers for additional hardware and services built on the top of the previous layers. The last but not the least is SOC RDK. So it contains software such as the software development kit SDK and SOC level patches and SOC specific changes or optimization and SOC software instructions for OEM integration and tools for basic validation. So what is RDK based on? We have looked into RDK, its benefits and co-components. Now let's see what is RDK is based on. So RDK is based on Yachter project. What is this Yachter project? The Yachter project is an open source collaboration project that helps developers create custom Linux based system for embedded products regardless of the hardware architecture. The project provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations and best practices which can be used to create tailored Linux images for embedded devices. The Yachter project combines, maintains and validates three key development elements. What are those three key development elements? Let's see. Number one is the set of integrated tools to make working with embedded Linux successful, including tools for automated building and testing, process for both support and license compliance and component information for custom Linux based embedded operating system. The second one is a reference embedded distribution called Poki. The third one is the open embedded build system co-maintained with the open embedded project. There are many different open source components and tools within the Yachter project umbrella. What I have used so far is my organization is Yachter Morty and Dumpfell versions. Since RDK is based on Yachter project, it consists of configuration files that is files which hold global definitions of variables, user defined variables and hardware configuration information and recipes the most common form of metadata. A recipe will contain a list of settings and tasks such as instructions for building packages which are then used to build a binary image. Next will be a layer, a collection of related recipes. I love you to consolidate related metadata to customize your build and isolate information for multiple architecture builds and there will be a metadata. A key element of the Yachter project is the metadata which is used to construct the Linux distribution, contained in the files that the build system passes when building an image and also many more. RDK structure will have many more Yachter components. So you need a good understanding of Yachter project before getting started with RDK RDK profiles. So here you can see these are some of the RDK profiles. So RDK we are RDK RDK broadband and RDK we are RDK video. Then we have RDK video hybrid and last we have RDK C or RDK camera. So let's look into RDKB first. What is RDKB? RDKB or RDK broadband provides a common software and data solution across all broadband access technologies including Duxes, G-Porn and DSL. RDKB provides functionalities such as routing, bi-fi, DNS, remote management and others. The smaller RDK image footprint can also help with deployment or legacy device. Some of the features of RDKB are Wi-Fi, routing, hotspot, home security, dynamic DNS and parental control. Next RDKV. RDKV or RDK video provides a common method to provide or to manage or provide video playback functions. The IP client device interface that receives video content from an hidden home media gateway device or an external media server. RDK accelerates the deployment of next generation video products and services and simplifies the customization of application and user interface. Some of the features of RDK we are content delivery, adobe access integration, player ready and wide wide, audio output formats including Dolby MS12 and copy protection. The next one is RDKV hybrid. RDKV hybrid devices provide a common method to manage complex video functions such as tuning, conditional access, DRM and stream management. RDK accelerates the deployment of next generation video products and services and simplifies the customization of application and user experience. Some of the features of RDKV hybrid are home networking, recording, premium apps, diagnostics support, closed captions, support for leading streaming protocols, IPTV and video on demand media streaming to hidden home devices. And last we have RDKC or RDK camera provides a common set of software components to build IP based video camera with standard functions such as live streaming and continuous recording. RDK accelerates the deployment of next generation IP camera products and services while simplifying the customization of application and the user experience. So some of the features of RDKCR configuration management, resolution, bit rate, recording settings, Wi-Fi, live video, 24 into 7 video recording. In the remaining part of this session we'll look into RDKV in a more detailed way. RDKV. So as I already mentioned RDK broadband, our RDKV software is capable of powering the next generation gateways across DOCSIS, PON, DSL, 5G and Ethernet, enabling OEMs to standardize elements of their modems, gateways and converged devices. It allows easy customization of applications and common functionalities such as routing, Wi-Fi, DNS, diagnostics, remote management and IoT devices such as Bluetooth, Thread and ZigBee. Some of the basic features of RDKBR, basic device management, routing and IP support, VAN support, voice support. Some of the operator-specific features are home security and automation, security and intrusion detection, cloud-based features and elementary support and self-heal. And some of the advanced features of RDKBR, advanced device management, advanced routing features, tech yard transport and advanced Wi-Fi and Mesh. Yeah, RDKV architecture. So RDKV is developed as a modular software stack built from a collection of individually reusable software components and it is based on software modularity, abstraction of external management protocols, independence from bi-area network type, silicon independence, Linux kernel independence, software structure that allows multiple organization and teams to work in parallel. The architecture supports pluggable component module which communicates over the CCSP message bus. The RDKV uses a collection of protocol agent, components and supports multiple device management protocols as well. Here you can see TR-69, TR-69 protocol agent, SNMP protocol agent, web UI protocol agent, web protocol agent and very more. So protocol agent process the protocol specific details and provide abstraction to the common internal data model. TR-181 data model is the common internal data model used by all RDKV components to communicate over the message bus. So RDKV also supports multiple SOC vendors through component level hardware abstraction layer. So RDKV is based on Cisco's common component software platform that is CCSP and it is a fully modular, portable and customizable software solution for broadband devices. The Linux DBus in RDKV is a central point where applications can send and listen to signals and conduct method calls while extending a common architecture across CPUs. This is best-in-class Wi-Fi measurement and management API tools. It also supports device fingerprinting. It is best for guest Wi-Fi and it also supports for Wi-STOXs, EPON and Ethernet Rans. CCSP component model like CCSP next will be the CCSP component model before that we can see here CCSP layer is one of the main layers in RDKV like you can see two divisions CCSP layer and gateway apps. In gateway apps you can see IP tables, some of the features like IP tables, VHCP, V4, V6, DNS proxies and all. So these are gateway apps and here you can see the CCSP layer. So the CCSP component is one or more runtime process which consists of reusable set of software to provide a defined set of services. A CCSP component can send and or receive receive and handle request via the CCSP message bus. All CCSP components extend from a base CCSP component that define the core method common to all CCSP components. For performance optimization more than one CCSP components can combine into a single runtime process or decoupled into individual processes without requiring any software change the component. Having this capability allows each component to be instantiated and work in its own process during testing and verification but later combined with other components into a single process in production environments. It also aids in resolving and isolating issues such as crashes, memory clobblers etc. Here you can see the different CCSP components like already mentioned there are some protocol agents there are some also CM agents. CM agent is nothing but cable modem agent here you can see empty agent media terminal adapter agent and there are so many components in the CCSP layer. The protocol agent is nothing but it will interface with the cloud and if there is any query comes comes from the cloud it will pass the information to the other agent in the so ADKB layer. So similarly we have persistent storage here which is nothing but which holds the configuration file of all the other components so whenever any other components needs configuration file to be loaded it will be from the persistent storage storage component one week then we have a component registry which is nothing but the centralized database of the CCSP component centralized database of the ADKB components so all the components will be registered in the CCSP CR nothing but component registry so whenever any two agents needs to be communicated it is via the CR component like for example if CM agent wants to be communicated with MTA agent it will go and ask the CR our component registry the component registry will have a file in that file it will search for the registered components if MTA is registered in CR it will it will search for MTA agent and it will give the D bus path because all the communication here will be will be handled through D bus so the D bus path of MTA agent will be given to the CM agent and with that D bus path the CM agent will communicate to the MTA agent so MTA is nothing but media terminal adapter where you'll have a media terminal sorry you'll have a media terminal adapter in your home if your service provider provides you internet along with telephone calls you'll have this box in your house so to handle that voice stack and those boxes this MTA agent will be very helpful so similarly we have utopia utopia is responsible for the boot up process and all the initialization of the other components so this is rdkb stack and there'll be a one more layer here which is nothing but a hard layer hardware abstraction layer which abstracts the which handles the abstraction of rdkb layer with the SOC layer so this is the rdkb architecture next is a rdkb goals so the first one is high software velocity so the architecture supports plug-in component modules for all using Linux D bus and also it can the we can use like teams can create components in parallel and we can leverage open source within architecture framework and within components also next one is easily create product variants yes we can choose which components are needed for each product and the architecture supports runtime service discovery and component registration the third one is support multiple management protocol and data model so simultaneously supports multiple device management protocols and interfaces through plug-in called protocol agents as we already discussed and adding a new management protocol a data model doesn't change existing component and also tr069 with tr181 and snmp web ui tr069 with tr098 can be easily extensible the next one is support single and multi-core CPU architectures so no component level code change needs to be repartition software and also D bus extends common architecture across CPUs the next is easy portable to support multiple SOC vendors so supported it it's supported through component level abstraction layers and it can be tested on multiple platforms even we can leverage the ability to repartition across single core multi-core and multi-cpu we are now in the most important slide to get started with rdkb we first need to clone the code these are the steps to clone the rdkb code but before doing it there are many dependencies to be installed in open 2 not only that you should have enough space to build the code rdkb needs 100 gb of space for more details i'll provide the link in the resources session here you can see the steps like first you need to create a directory then a rapport should be initialized with a particular branch name there are many different branches but we commonly use rdk next because it is the this branch will be having the most recent updates and the new features of rdk so we'll be using rdk next more frequently and also next we'll sync the repo once the synchronization is completed we'll give this command to select the environment so you'll have a list of options to choose like whether you need to build for rpi or emulator of a different environment choose it correctly and finally give bitbake so all the packages that are mentioned in the recipe files will be fetched instead configured and then compiled so once the build is successful you can find the final image in the build directory and you can flash it and test it depending upon the selected environment great you have the build code now take a look at it completely don't forget to go through the ccsp folder where all the important components will be present let me show you the dependencies for this rdkb code i hope you can see this so if you see here they have given the instructions for setting up the host environment for two versions of yokto one is morty and one is thumpel so based on our ubuntu version we can choose this if you're choosing morty here are some instructions for it here first you need to install these dependencies then you need to configure the bash then you need to configure gith once it is done you need to configure the repo you need a github github account for it then you'll be having a you have to create this dot any trc file with the code that rdkcentral.com credentials so you need a account here in rdkcentral.com so don't forget to create an account so once it is done you can build you can build the emulator of a raspberry with the help of these instructions like i've already mentioned repo initialization synchronization and the environment selection and finally the big big next is the resources here i have compiled some of the useful resources so you can take a look at it and also i've given provided the instruction instructions also so you can take a look at here with that we have come to an end of our presentation if you have any doubts or queries you can you can contact me in linkedin i can you can here i've given given my linkedin profile so you can pick me there i'll be very happy to clear those doubts or queries thank you so much each and everyone for showing your interest in rdkb have a great day thank you bye everyone