RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
This page explains how you as AppDeveloper can create/compile your native (c/c++) application using DAC SDK and how to publish it to RDK-M DAC-cloud staging area.
When your application meets the DAC App contract for binary compatibility it will allow you as AppDeveloper
// TO REMOVE This page will guide you through publishing your DAC app to the RDK ASMS cloud as an AppDeveloper, then installing and running it on a Raspberry Pi (RPI). More detailed documentation of all the components used is available on their respective pages.
Table of Contents | ||
---|---|---|
|
Above credentials are one time request per App developer entity. Once you have above credentials, you can reuse them for publishing other apps under your entity. At this moment requesting these credentials is still manual process, a point to improve in future
As an Appdeveloper you want to test and run your DAC Application on a set of real hardware reference devices. RDK-M created the Video Accelerators for that.
If your app code complies with DAC app contract for binary compatibility it should be able to run on the various RDK Video Accelerator Devices provided these run firmware images (=monolitic software image) that also live up to that DAC contract for binary compatibility. The RDK6.1 monolithic software release live up to that contract (as of RDK6.1_RC2 Feb 2024), contains UI to browse and install DAC apps from RDK-M DAC cloud/staging store. The RPI4 is the open source community Video Accelerator that RDK-M supports. RDK-M made available a pre-build of such rdk6.1 lib32-rdk-generic-mediaclient-wpe-image software image for rpi so that you can just load this image on your rpi4 device and can start testing. (without having to spend any time on building such image from scratch) This prebuilt is available in via this link https://wiki.rdkcentral.com/download/attachments/80261869/rdk-generic-mediaclient-wpe-tdk-image-raspberrypi4-64-rdk-android-mc-6.1.0.wic.bz2 See RDK6.1 rpi4 release notes wiki Raspberry Pi 4 RDK6.1 Release Notes#Downloadapre-builtimage In next section we explain how you can flash that image on rpi4.
To get your hands on other Video Accelerator HWs and their RDK6.1 SW images, we refer you to RDK-M
Download and install https://www.balena.io/etcher/ tool
df
View file | ||||
---|---|---|---|---|
|
Is available on Youtube
'https://www.youtube.com/watch?v=Ie7fQy5HTlc
There are two ways to publish a new application in ASMS:
But before publishing the new app into ASMS, you need to publish the oci compliant container image of your DAC application into a container registry that supports the OCI standard format. In next section we explain how to do that.
You can either publish your oci container image to
Depending on the oci registry product, there are various login/access credential procedures.
We provide the instructions for Amazon Elastic Container Registry. The private container registry setup RDK-M DAC team is also such type.
You need to have the following util programs installed: aws cli tools and skopeo.
Assuming your host is linux, configure your aws profile ~/.aws/credentials file as per below
Code Block | ||
---|---|---|
| ||
//Obviously you need to fill in your credentials below iso xxxxx and yyyyy. If you want to use the private OCI container registry from RDK-M, request piotr.serafin@consult.red for credentials [s3dacrdk] aws_access_key_id = xxxxx aws_secret_access_key = yyyyyy |
Login, create new container repository and publish the OCI image in there:
Code Block | ||
---|---|---|
| ||
# login into private RDK-M OCI container registry aws --profile s3dacrdk ecr-public get-login-password --region us-east-1 | skopeo login --username AWS --password-stdin public.ecr.aws/a0v6o9z7 # create repo for your application, in which you can publish different versions, example below creates "cobalt" one for Youtube/cobalt application aws --profile s3dacrdk --region us-east-1 ecr-public create-repository --repository-name cobalt # list repos aws --profile s3dacrdk --region us-east-1 ecr-public describe-repositories # The actual command that uploads/publishes your local version of a oci image associated with your application to the RDK-M oci-registry # within repo named "cobalt" with the version tag "latest" standing for latest version skopeo copy oci-archive:dac-image-cobalt.tar docker://public.ecr.aws/a0v6o9z7/cobalt:latest # with following command you can download your oci image from RDK-M registry to your local host skopeo copy docker://public.ecr.aws/a0v6o9z7/cobalt:latest oci:cobalttest # command to double check if uploaded container is oci image type skopeo inspect --raw docker://public.ecr.aws/a0v6o9z7/cobalt:latest { "schemaVersion": 2, "config": { "mediaType": "application/vnd.oci.image.config.v1+json", "size": 548, "digest": "sha256:0bc2f756fc781b015769230b207c6b227b788023a5c3d599504407cc1619110e" }, [...] } |
Obviously, you have to remember the OCI image URL of your application, which in this example is docker://public.ecr.aws/a0v6o9z7/cobalt:latest. Because you will have to specify it when publishing the DAC app to the ASMS (AppStore Metdata service).
You can access the swagger UI here: http://rdkm-asms-external-1156877020.eu-central-1.elb.amazonaws.com:8080/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config
You can use the POST /maintainers/{maintainerCode/apps RPC call to add an ASMS dac app. dactest.py uses "rdk" as maintainerCode. You will need to provide a POST body with the required contents.
Example POST body. Additionally you can check how dactest.py is doing it.
Code Block | ||
---|---|---|
| ||
{ "header": { "icon": "https://280222515084-default-apps-resources.s3.eu-central-1.amazonaws.com/images/apps/com.rdk.app.chocolate-doom.png", "name": "Chocolate Doom", "description": "Chocolate Doom aims to accurately reproduce the original DOS version of Doom and other games based on the Doom engine in a form that can be run on modern computers.", "type": "application/dac.native", "size": 10000000, "category": "application", "localization": [ { "languageCode": "nld", "name": "Geweldige applicatie", "description": "Dit is een geweldige applicatie" } ], "id": "com.rdk.app.chocolate-doom", "version": "1.0.0", "visible": true, "encryption": false, "preferred": false, "ociImageUrl": "docker://public.ecr.aws/a0v6o9z7/chocolate-doom:latest" }, "requirements": { "dependencies": [ { "id": "com.libertyglobal.service.voice", "version": "1.0.0" } ], "platform": { "architecture": "arm", "variant": "v7", "os": "linux" }, "hardware": { "ram": "512M", "dmips": "2000", "persistent": "60M", "cache": "200M" }, "features": [ { "name": "rdk.api.awc", "version": "2", "required": false } ] }, "maintainer": { "code": "rdk", "name": "RDK", "address": "RDK Management, LLC", "homepage": "https://rdkcentral.com", "email": "support@rdkcentral.com" }, "versions": [ { "version": "1.0.0", "visible": true, "preferred": false, "encryption": false } ] } |
Among other things, dactest.py can be used list ASMS apps, add entries and remove entries.
To add an entry to ASMS, i.e. to publish a DAC app you can follow these steps:
We explain here 2 ways to download your DAC application from Staging RDK-M DAC Appstore and install it on the video Accelerator :
In the resident UI go to the icon with the 9 small squares (left bottom) to navigate to the DAC menu. There you will see three submenu items:
dactest.py can be used list, install, uninstall, start and stop DAC apps. It also connects to RDK ASMS to list available DAC apps in the cloud. The DAC apps downloaded from the cloud are generated to bundles inside that cloud and cached there. Sometimes the download can take a while if the bundle still needs to be generated for a specific platform and/or version.
So how to use dactest.py to install an app from ASMS:
If you're interested to see what HTTP commands are sent to ASMS and what websocket commands are sent to LISA and RDKShell to support this demo then check the contents of dactest.py.