The Reference Design Kit (RDK) comprises of set of software components, tools and documentation that help in the development of the software stack for set-top boxes hosting cloud-based or resident guide applications. The RDK-V software stack gives communication providers a common framework for developing STB software. It incorporates functions such as tuning, IP video, and media streaming/DLNA, but still allows for user interface (UI) control and development by the operator. The momentum around RDK-V continues to grow, and support for the stack is currently offered by over 250 companies, including SoC vendors, software developers, system integrators and network operators.
It is important to note that an operator may not simply download the RDK stack and implement it as a turnkey solution. Although implementation for the generic RDK components is included, some of the components within RDK are only frameworks for implementing features, and the actual implementation, which is often customized for an operator, is not included. Every operator needs to integrate not only the Operator Specific components, but also their own security, back office systems, and unique business rules
RDK Software Stack
The three different perspectives or views into the RDK software stack help gain a better understanding and appreciations for the RDK software stack.
- Viewing the stack as increasing levels of abstraction.
- Viewing the stack by the source or component owner.
- Viewing the stack in terms of the deployment configuration – IP, QAM or both.
1. As increasing levels of abstraction
The figure below looks at the stack as increasing levels of abstraction. This is akin to flipping the RDK component diagram on its head. Notice that at the bottom we have generic components (RDK and MSO) that are meant to run across all platforms and all devices. As we move to up to the SoC layer, we obtain all SoC-layer software components such as the SDK and any SoC-level for generic RDK and MSO components. An example, would be the HAL layer implementation for components such as QT and Gstreamer. Further up the stack are device-layer software components. These could be specializations to generic or SoC components at the device layer or complementary software components provided by the OEM to create a fully functional set-top.
Figure: RDK Software Stack as increasing levels of abstraction
2. By the source or component owner
Another way to look at the RDK software stack is through the various sources that provide the components that would make up a fully functional set-top. The main sources of RDK components are
- Opensource Community – the open source community of software developers.
- MSO proprietary
- Components that are developed directly by MSO.
- Components developed by third-party vendors but licensed to MSO for distribution.
- SoC vendor
- Components released by the SoC manufacturer.
- Typically includes the SDK and patches to RDK components.
- Third-Party component owners
- Components not released by RDK-M LLC,
- Need special licensing arrangements with the component owners
- Required to achieve full functionality.
- Components released by the set-top manufacturer.
3. In terms of the deployment configuration
A third way to look at the RDK software stack is based on the device type – IP-only versus a hybrid IP+QAM device. An additional option here is a pure QAM but that is not being discussed since a QAM device would typically be able to support IP-based streaming as well.
- Components to execute the RDK in an IP-only video acquisition.
- No QAM-based tuning.
- Pure IP set-tops interacting with the Hybrid (IP+QAM) devices as home networking clients.
- Support for IP-based video acquisition.
- Support for QAM-based tuning.
- Headed or Headless configuration.
- Home networking servers.
- Windowing Framework - Qt/Webkit
- Graphics Engine - OpenGL/ES
- Support for hardware acceleration.
- Media Framework - GStreamer
- Support for hardware acceleration.
- Application layer interface for media operations.
- Management Subsystem - SNMP and TR-69.
- Security Subsystem – Secure Processor support
- DRM, Firmware Download, TLS and all crypto functions.
- System Integration Scripts for startup and run-time orchestration of resident processes and functionality.
- Channel Map
- Closed Captioning
- Parental Control
- Timeshift Buffer
- Audio Language selection
- Code Download
- DOCSIS code download
- HTTP-based code download
- Copy Protection
- Adobe Flash Access
- Microsoft Playready
- Log/Error Management
- Crash Management
- Event Management Framework
- Storage Management.
- Expansion Disk support.
- Graphics/HTML Rendering
- Device Settings
- Front Panel
- Output Port Settings
- Home Networking
- DLNA with VPOP, CVP-1 and CVP-2 support
- User Input Handling
- RF4CE Remote
- IR Remote
- Robustness and Security features
- Development Support Features
- Simple IP-based code download
- Executing filesystem from external media.
- RDK Porting Guide provides step-by-step instructions on building a fully functional software stack using the RDK.
- The main steps in the development process are as follows
- Setting the host environment where the builds will be performed.
- Obtaining components for the build. Key components are listed below
- RDK package and specified Open Source and Third Party software components.
- MSO package
- SoC SDK, toolchains, rootfs, kernel, docsis images (for a QAM device), SoC vendor libraries and SDK, MSO and RDK patches at the SoC layer.
- OEM software.
- Installing toolchains and any other tools required for cross-compilation.
- Building the SDK. This step usually involves building the kernel, rootf and SDK binaries/libraries.
- Building RDK and MSO components.
- Configuring startup scripts.
- Validating functionality.