Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In this page:

Table of Contents
maxLevel2



RDK7 Layer Release Introduction

RDK-7 is based on the new RDK-E layered architecture which can be independently built, tested and delivered. 

The different layers in RDKE are Vendor, Middleware and Application. All opensource packages are built separately as part of OSS layer. Each layer can be built separately to provide versioned binaries. Each of these layers contain components necessary to build that layer. 

Image Assembler serves as the final build which will consume the binary deliverables from other stack layers - vendor, middleware and application.

The following slides show how components, meta layers and layer manifests are managed in a RDK-E Layer Architecture. 

They demonstrate how each of the layers are constructed and how the RDK7 release is TAGGED from the layer manifest repositories.






RDK7 Branch, Tags and Changelog Info

This section provides links to the layer manifests repos and meta layers presented in the previous section.

 It also documents TAG and CHANGELOG info for each of the repositories that make up the layer builds.

Layer Manifest and Meta Layers

Common Meta Layers

The following meta layers are common to all RDKM platforms

OSS Layer

The OSS Layer is common across all RDK-M platforms

Meta Layer

RDK7-1.0.0 TAG

CHANGELOG

rdke-oss-manifest

4.6.2-community

CHANGELOG.md

Middleware Layers

The following are the meta and manifest layers that constitute the RDK-E middleware

Application Layers

The Application Dev Layer is common across all RDK-M platforms

Meta Layer

Branch

RDK7-1.0.0 TAG

CHANGELOG

meta-application-rdke-dev

main

4.1.6

CHANGELOG.md


RPI Manifest Layer Breakdown

The following lists the repositories and their versions that are included in each of the RPI Layer Manifests for the RDK7 Release

RepoVendor Manifest

refs/tags/RDK7-1.0.0

Middleware Manifest


refs/tags/RDK7-1.0.0

Application Manifest


refs/tags/RDK7-1.0.0

Image Assembler Manifest


refs/tags/RDK7-1.0.0

buildscriptsrefs/tags/1.0.1refs/tags/1.0.1refs/tags/1.0.1refs/tags/1.0.1
meta-application-rdke-dev

refs/tags/4.1.6
meta-application-rdke-release


refs/tags/RDK7-1.0.0
meta-image-assembler-rdke


refs/tags/4.1.2
meta-middleware-release-rdke

refs/tags/RDK7-1.0.0refs/tags/RDK7-1.0.0
meta-openembeddedrefs/tags/rdk-4.0.0refs/tags/rdk-4.0.0refs/tags/rdk-4.0.0refs/tags/rdk-4.0.0
meta-oss-common-configrefs/tags/1.1.0refs/tags/1.1.0refs/tags/1.1.0refs/tags/1.1.0
meta-oss-reference-releaserefs/tags/4.6.2-communityrefs/tags/4.6.2-communityrefs/tags/4.6.2-communityrefs/tags/4.6.2-community
meta-oss-vendor-raspberrypirefs/tags/4.0.4


meta-product-raspberrypirefs/tags/4.0.9refs/tags/4.0.9refs/tags/4.0.9refs/tags/4.0.9
meta-python2
refs/tags/rdk-4.0.0

meta-raspberrypiab5815a2ca0a460398878f77a7e39bc1a6dfe0bf" upstream="kirkstone


meta-rdk-auxiliaryrefs/tags/1.2.0refs/tags/1.2.0refs/tags/1.2.0refs/tags/1.2.0
meta-rdk-halif-headersrefs/tags/1.0.3refs/tags/1.0.3

meta-rdk-oss-referencerefs/tags/1.2.0refs/tags/1.2.0refs/tags/1.2.0refs/tags/1.2.0
meta-stack-layering-supportrefs/tags/1.2.1refs/tags/1.2.1refs/tags/1.2.1refs/tags/1.2.1
meta-vendor-raspberrypi-devrefs/tags/4.4.6-RDK7


meta-vendor-raspberrypi-release
refs/tags/RDK7-1.0.0refs/tags/RDK7-1.0.0refs/tags/RDK7-1.0.0
pokyrefs/tags/rdk-4.2.0refs/tags/rdk-4.2.0refs/tags/rdk-4.2.0refs/tags/rdk-4.2.0
rdke-common-configrefs/tags/1.0.4refs/tags/1.0.4refs/tags/1.0.4refs/tags/1.0.4
rdke-middleware-generic-manifest
refs/tags/1.1.3-community

rdke-stb-configrefs/tags/1.0.0refs/tags/1.0.0refs/tags/1.0.0refs/tags/1.0.0


The following tabs demonstrate what is in each of the RPI LAYER manifests:

Tabs Container
directionhorizontal
Tabs Page
titleVendor Manifest

Tabs Page
titleMiddleware Manifest

 

Tabs Page
titleApplication Manifest

Tabs Page
titleImage Assembler Manifest



Host Setup & Build Instructions

This slide provides an example of how your build setup might look, the IPK's generated by the Layer Builds need to be stored somewhere where the other layer builds can access them, this may be a local file system, remote mounted filesystem or an artifactory instance. The build instructions explain how to set the IPK paths required for the build.



The following tabs document how to setup your host and then build each of the required layers and finally generate a full stack image by building the image assembler layer. 

Note each layer depends on the IPK's generated by the previous layer. 

Tabs Container
directionhorizontal
Tabs Page
titleHost Setup

For host setup please refer to the following page:

RDK-E Build Environment Host Setup

Note as the RPI is an opensource platform you do not need to create Personal Access Tokens (PAT) or configure your .netrc 

Tabs Page
titleOSS Layer

Step 1. Building the OSS (open-source) Layer 

Code Block
themeDJango
$ repo init -u https://github.com/rdkcentral/rdke-oss-manifest/ -b refs/tags/4.6.2-community -m rdk-arm.xml
$ repo sync

$ MACHINE=rdk-arm64 source ./scripts/setup-environment

$ bitbake lib32-packagegroup-oss-layer

This produces IPK objects that can be packaged into the OSS IPK feed:

The OSS IPK feed is located in `build-rdk-arm64/tmp/deploy/ipk/rdk-arm64-oss/`
1, Locate the `opkg-make-index` utility that is part of the native built components.

   For OSS layer, this should be located in `build-rdk-arm64/tmp/work/x86_64-linux/opkg-utils-native/0.5.0-r0/git/opkg-make-index`

2, Run the opkg-make-index utility to create the IPK Package index
   ->
   $ ./build-rdk-arm64/tmp/work/x86_64-linux/opkg-utils-native/0.5.0-r0/git/opkg-make-index ./build-rdk-arm64/tmp/deploy/ipk/rdk-arm64-oss/ > ./build-rdk-arm64/tmp/deploy/ipk/rdk-arm64-oss/Packages

3, Compress the package index
   ->
   $ cd build-rdk-arm64/tmp/deploy/ipk/rdk-arm64-oss/
   $ gzip -c9 Packages > Packages.gz
   
4, Copy or rsync the IPK feed into a location in the local file system, e.g.
   ->
   Rsyncing from ./build-rdk-arm64/tmp/deploy/ipk/rdk-arm64-oss/* to ${HOME}/community_shared/rdk-arm64-oss/4.6.2-community/ipk/

OSS layer is a common layer and not platform specific. The above-mentioned configuration is building OSS for arm64 machine and can be reused for any platforms with the same configuration. 

Tabs Page
titleVendor Layer

Step 2. Building the Vendor Layer

Code Block
themeDJango
$ repo init -u https://github.com/rdkcentral/vendor-manifest-raspberrypi/ -b refs/tags/RDK7-1.0.0 -m rdke-raspberrypi.xml
$ repo sync

Setup the IPK feed(s)
Please note for local IPK feed in local file system, the "file:/" prefix and the "/" suffix are important.

1, OSS IPK feed

   Modify this file:
   rdke/common/meta-oss-reference-release/conf/machine/include/oss.inc

   and set `OSS_IPK_SERVER_PATH` to the IPK feed location in the local file system, 
   e.g:
   OSS_IPK_SERVER_PATH = "file:/${HOME}/community_shared/rdk-arm64-oss/4.6.2-community/ipk/"

$ MACHINE=raspberrypi4-64-rdke source ./scripts/setup-environment

$ echo 'DEPLOY_IPK_FEED = "1"' >> conf/local.conf

$ bitbake lib32-packagegroup-vendor-layer (to build vendor layer IPK feed for other layers to consume)
OR
$ bitbake lib32-vendor-test-image (wrapper over packagegroup-vendor-layer to compile a bootable vendor layer test image)

At least either one of packagegroup or test-image is required to be successful to produce the IPK feed for the next layer. Ideally both should succeed.

The produced IPK objects that can be found here: ./build-raspberrypi4-64-rdke/tmp/deploy/ipk/raspberrypi4-64-rdke-vendor/

1, Copy or rsync the IPK feed into a location in the local file system, e.g.
   ->
   Rsyncing from ./build-raspberrypi4-64-rdke/tmp/deploy/ipk/raspberrypi4-64-rdke-vendor/* to ${HOME}/community_shared/raspberrypi4-64-rdke-vendor/RDK7-1.0.0/ipk/
Tabs Page
titleMiddleware Layer

Step 3. Building the Middleware Layer

Code Block
themeDJango
$ repo init -u https://github.com/rdkcentral/middleware-manifest-rdke/ -b refs/tags/RDK7-1.0.0 -m raspberrypi4-64.xml
$ repo sync

Setup the IPK feed(s)
Please note for local IPK feed in local file system, the "file:/" prefix and the "/" suffix are important.

1, OSS IPK feed

   Modify this file:
   rdke/common/meta-oss-reference-release/conf/machine/include/oss.inc

   and set `OSS_IPK_SERVER_PATH` to the IPK feed location in the local file system, 
   e.g. 
   OSS_IPK_SERVER_PATH = "file:/${HOME}/community_shared/rdk-arm64-oss/4.6.2-community/ipk/"

2, Vendor IPK feed

   Modify this file:
   rdke/vendor/meta-vendor-release/conf/machine/include/vendor.inc

   and set `VENDOR_IPK_SERVER_PATH` to the IPK feed location in the local file system, 
   e.g.
   VENDOR_IPK_SERVER_PATH = "file:/${HOME}/community_shared/raspberrypi4-64-rdke-vendor/RDK7-1.0.0/ipk/"

$ MACHINE=raspberrypi4-64-rdke source ./scripts/setup-environment

$ echo 'DEPLOY_IPK_FEED = "1"' >> conf/local.conf

$ bitbake lib32-packagegroup-middleware-layer (to build middleware layer IPK feed for other layers to consume)
OR
$ bitbake lib32-middleware-test-image (wrapper over packagegroup-middleware-layer to compile a bootable middleware layer test image)

At least either one of packagegroup or test-image is required to be successful to produce the IPK feed for the next layer. Ideally both should succeed.

The produced IPK objects that can be packaged into the Middleware IPK feed can be found here: ./build-raspberrypi4-64-rdke/tmp/deploy/ipk/raspberrypi4-64-rdke-middleware/

1, Copy or rsync the IPK feed into a location in the local file system, e.g.
   ->
   Rsyncing from ./build-raspberrypi4-64-rdke/tmp/deploy/ipk/raspberrypi4-64-rdke-middleware/* to ${HOME}/community_shared/raspberrypi4-64-rdke-middleware/RDK7-1.0.0/ipk/
  
Tabs Page
titleApplication Layer

Step 4. Building the Application Layer

Code Block
themeDJango
$ repo init -u https://github.com/rdkcentral/application-manifest-rdke/ -b refs/tags/RDK7-1.0.0 -m raspberrypi4-64.xml
$ repo sync

Setup the IPK feed(s)
Please note for local IPK feed in local file system, the "file:/" prefix and the "/" suffix are important.

 1, OSS IPK feed

   Modify this file:
   rdke/common/meta-oss-reference-release/conf/machine/include/oss.inc

   and set `OSS_IPK_SERVER_PATH` to the IPK feed location in the local file system, 
   e.g.
   OSS_IPK_SERVER_PATH = "file:/${HOME}/community_shared/rdk-arm64-oss/4.6.2-community/ipk/" 

2, Vendor IPK feed

   Modify this file:
   rdke/vendor/meta-vendor-release/conf/machine/include/vendor.inc

   and set `VENDOR_IPK_SERVER_PATH` to the IPK feed location in the local file system, 
   e.g. 
   VENDOR_IPK_SERVER_PATH = "file:/${HOME}/community_shared/raspberrypi4-64-rdke-vendor/RDK7-1.0.0/ipk/"

3, Middleware IPK feed

   Modify this file:
   rdke/middleware/meta-middleware-release/conf/machine/include/middleware.inc

   and set `MW_IPK_SERVER_PATH` to the IPK feed location in the local file system, 
   e.g. 
   MW_IPK_SERVER_PATH = "file:/${HOME}/community_shared/raspberrypi4-64-rdke-middleware/RDK7-1.0.0/ipk/"

$ MACHINE=raspberrypi4-64-rdke source ./scripts/setup-environment

$ echo 'DEPLOY_IPK_FEED = "1"' >> conf/local.conf

$ bitbake lib32-packagegroup-application-layer (to build application layer IPK feed for other layers to consume)
OR
$ bitbake lib32-application-test-image (wrapper over packagegroup-application-layer to compile a bootable application layer test image)

At least either one of packagegroup or test-image is required to be successful to produce the IPK feed for the next layer. Ideally both should succeed.

The produced IPK objects that can be packaged into the Application IPK feed can be found here: ./build-raspberrypi4-64-rdke/tmp/deploy/ipk/raspberrypi4-64-rdke-application/ 

1, Copy or rsync the IPK feed into a location in the local file system, e.g.
   ->
   Rsyncing from ./build-raspberrypi4-64-rdke/tmp/deploy/ipk/raspberrypi4-64-rdke-application/* to ${HOME}/community_shared/raspberrypi4-64-rdke-application/RDK7-1.0.0/ipk/
Tabs Page
titleImage Assembler Layer

Step 5. Building the Image Assembler or Full Stack Image Layer

Code Block
themeDJango
$ repo init -u https://github.com/rdkcentral/image-assembler-manifest-rdke/ -b refs/tags/RDK7-1.0.0 -m raspberrypi4-64.xml
$ repo sync

Setup the IPK feed(s)
Please note for local IPK feed in local file system, the "file:/" prefix and the "/" suffix are important.

1, OSS IPK feed

   Modify this file:
   rdke/common/meta-oss-reference-release/conf/machine/include/oss.inc

   and set `OSS_IPK_SERVER_PATH` to the IPK feed location in the local file system,
   e.g.
   OSS_IPK_SERVER_PATH = "file:/${HOME}/community_shared/rdk-arm64-oss/4.6.2-community/ipk/" 

2, Vendor IPK feed

   Modify this file:
   rdke/vendor/meta-vendor-release/conf/machine/include/vendor.inc

   and set `VENDOR_IPK_SERVER_PATH` to the IPK feed location in the local file system,
   e.g. 
   VENDOR_IPK_SERVER_PATH = "file:/${HOME}/community_shared/raspberrypi4-64-rdke-vendor/RDK7-1.0.0/ipk/" 

3, Middleware IPK feed

   Modify this file:
   rdke/middleware/meta-middleware-release/conf/machine/include/middleware.inc

   and set `MW_IPK_SERVER_PATH` to the IPK feed location in the local file system,
   e.g. 
   MW_IPK_SERVER_PATH = "file:/${HOME}/community_shared/raspberrypi4-64-rdke-middleware/RDK7-1.0.0/ipk/" 

4, Application IPK feed

   Modify this file:
   rdke/application/meta-application-release/conf/machine/include/application.inc

   and set `APPLICATION_IPK_SERVER_PATH` to the IPK feed location in the local file system, 
   e.g.
   APPLICATION_IPK_SERVER_PATH = "file:/${HOME}/community_shared/raspberrypi4-64-rdke-application/RDK7-1.0.0/ipk/"

$ MACHINE=raspberrypi4-64-rdke source ./scripts/setup-environment

$ bitbake lib32-rdk-fullstack-image (for full stack image)

(Final flash'able image will be present in ./build-raspberrypi4-64-rdke/tmp/deploy/images/raspberrypi4-64-rdke/<imagename>.wic.bz2





Flashing Instructions


The micro SD card should be formatted before writing the RPI image to it.  

The minimum SD card size recommended is 8GB. It is preferred to use more (16 or 32 GB) considering the downloadable apps support in RDK. After flashing, remove the SD card and insert it to the Raspberry Pi 4 device' SD card slot.

Option1: Using Linux

Using dd on linux/macOS:

bzcat <IMAGE_NAME>.wic.bz2 | sudo dd of=/dev/sdb bs=4M iflag=fullblock oflag=direct conv=fsync

Option 2: Using Windows

Using balenaEtcher:

To flash the image on an SD card, you will need to download the balenaEtcher application - https://www.balena.io/etcher/

Open the application → Select the image from your download folder → Select the drive containing your SD card → Click “Flash” to copy the image onto the SD card.

In some cases, we have seen an error where latest versions of BalenaEtcher gets stuck at 7% flashing:

In this case, try downgrading Balena Ether version to 1.18.11

Power on the Raspberry Pi:

  • TV screen will display the default RDK UI as shown below.


  •  To view the Raspberry Pi's IP address(referred as machineIP from now), Go to 'Settings → Network Configuration → Network Info → check for 'IP Address''.


  • For ssh, we can use ssh root@<ip-address>
  • For verifying the image details, we can use cat /version.txt command.



License Manifest
Status
colourRed
titleTODO

For details of various components and their associated license, please refer to the link below



Test Coverage and Test Reports

RPI RDK7 test results are available at the following location: Raspberry Pi 4 RDK7 Test Reports 

TDK Version used for RDK7 certification is M139 TDK-V Release M139



Known Issues

Note
titleAccess restrictions

Please login with your RDK Wiki credentials to see the JIRA Issues


All the known issues that are part of this release for this platform is available in RDK JIRA

RPI Platform JIRA's:

Jira
serverJIRA
columnIdsissuekey,summary,issuetype,priority,status,resolution
columnskey,summary,type,priority,status,resolution
maximumIssues20
jqlQueryproject in (RDKV_PLATFORM_RPI) AND type = bug AND labels in (RDK7, rdke) AND labels not in (rdk7_beta, deferred) AND status WAS in (NEW, OPEN, REOPENED, "IN PROGRESS", "IN CODE REVIEW", "READY FOR CODE REVIEW", FROZEN, "READY FOR TESTING", "Awaiting 3rd Party", "WAITING CUSTOMER REPLY", "IN TESTING") ON ("2025-07-21") AND created <= "2025-07-21"
serverId11deff04-0380-3a3d-a916-0849d4e573f7


RDK-UI JIRA:

Jira
serverJIRA
columnIdsissuekey,summary,issuetype,priority,status,resolution
columnskey,summary,type,priority,status,resolution
maximumIssues20
jqlQueryproject in (RDK_Video_Accelerator_UI) AND type = bug AND labels in (RDK7, rdke) AND labels not in (rdk7_beta, deferred) AND status WAS in (NEW, OPEN, REOPENED, "IN PROGRESS", "IN CODE REVIEW", "READY FOR CODE REVIEW", FROZEN, "READY FOR TESTING", "Awaiting 3rd Party", "WAITING CUSTOMER REPLY", "IN TESTING") ON ("2025-07-21") AND created <= "2025-07-21"
serverId11deff04-0380-3a3d-a916-0849d4e573f7

RPI Platform JIRA's:

Jira
serverJIRA
columnIdsissuekey,summary,issuetype,priority,status,resolution
columnskey,summary,type,priority,status,resolution
maximumIssues20
jqlQueryproject in (RDKV_PLATFORM_RPI) AND type = bug AND labels in (RDK7, rdke) AND labels not in (rdk7_beta, deferred) AND status WAS in (NEW, OPEN, REOPENED, "IN PROGRESS", "IN CODE REVIEW", "READY FOR CODE REVIEW", FROZEN, "READY FOR TESTING", "Awaiting 3rd Party", "WAITING CUSTOMER REPLY", "IN TESTING") ON ("2025-07-21") AND created <= "2025-07-21"
serverId11deff04-0380-3a3d-a916-0849d4e573f7

RDK-UI JIRA:

Jira
serverJIRA
columnIdsissuekey,summary,issuetype,priority,status,resolution
columnskey,summary,type,priority,status,resolution
maximumIssues20
jqlQueryproject in (RDK_Video_Accelerator_UI) AND type = bug AND labels in (RDK7, rdke) AND labels not in (rdk7_beta, deferred) AND status WAS in (NEW, OPEN, REOPENED, "IN PROGRESS", "IN CODE REVIEW", "READY FOR CODE REVIEW", FROZEN, "READY FOR TESTING", "Awaiting 3rd Party", "WAITING CUSTOMER REPLY", "IN TESTING") ON ("2025-07-21") AND created <= "2025-07-21"
serverId11deff04-0380-3a3d-a916-0849d4e573f7


RDK Premium Apps JIRA:

Jira
serverJIRA
columnIdsissuekey,summary,issuetype,priority,status,resolution
columnskey,summary,type,priority,status,resolution
maximumIssues20
jqlQueryproject in (PREMIUM_APPS) AND type = bug AND labels in (RDK7, rdke) AND labels not in (rdk7_beta, deferred) AND status WAS in (NEW, OPEN, REOPENED, "DRAFT", "IN PROGRESS (DEV)", "IN CODE REVIEW", "READY FOR DEVELOPMENT", FROZEN, "READY FOR QA", "Awaiting 3rd Party", "WAITING CUSTOMER REPLY", "QA IN PROGRESS") ON ("2025-07-21") AND created <= "2025-07-21"
serverId11deff04-0380-3a3d-a916-0849d4e573f7