RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
This page will guide you through publishing your DAC app to the RDK ASMS cloud, then installing and running it on a Raspberry Pi (RPI). More detailed documentation of all the components used is available on their respective pages.
We will be installing and running DAC apps on the RPI so we need a good host image. The most recent RDK6 mediaclient image is ideal for this.
The below commands must be run in an Ubuntu 18.04 environment with the necessary pre-requisites installed to run Bitbake. See here for the exact dependencies needed:
https://docs.yoctoproject.org/ref-manual/system-requirements.html#ubuntu-and-debian
For RPI3:
mkdir rpi3_mediaclient_nosrc_rdk6 cd rpi3_mediaclient_nosrc_rdk6 # Install 'repo' tool from: https://android.googlesource.com/tools/repo repo init --no-clone-bundle -u https://code.rdkcentral.com/r/manifests -b 6.0.0-rc3 -m rdkv-nosrc.xml repo sync --no-clone-bundle -j$(getconf _NPROCESSORS_ONLN) MACHINE=raspberrypi-rdk-mc source meta-cmf-raspberrypi/setup-environment bitbake rdk-generic-mediaclient-image
For RPI4:
mkdir rpi4_mediaclient_nosrc_rdk6 cd rpi4_mediaclient_nosrc_rdk6 # Install 'repo' tool from: https://android.googlesource.com/tools/repo repo init --no-clone-bundle -u https://code.rdkcentral.com/r/manifests -b 6.0.0-rc3 -m rdkv-nosrc.xml repo sync --no-clone-bundle -j$(getconf _NPROCESSORS_ONLN) MACHINE=raspberrypi4-64-rdk-android-mc source meta-cmf-raspberrypi/setup-environment bitbake lib32-rdk-generic-mediaclient-image
After boot-up you need to manually configure ASMS and the version+platform of your host:
{ "app-catalog-cloud": { "url": "http://asms-api-1852129899.eu-central-1.elb.amazonaws.com:8080/apps", "firmwareVersions": [ { "platform": "rpi4", "ver": "1.0.0-e71889dc02521bfdc2f9f38f750b34224184c375-dbg" } ] } }
For RPI3 you need a different platform and ver:
{ "app-catalog-cloud": { "url": "http://asms-api-1852129899.eu-central-1.elb.amazonaws.com:8080/apps", "firmwareVersions": [ { "platform": "rpi3", "ver": "1.0.0-f4b0603d7d93dfa10ed932ddb0f324d334bc40f9-dbg" } ] } }
The "ver" value can change sometimes when new features are added to DAC or when big platform changes happen. You can find the latest values in the dactest.py tool, also for other platforms.
If you don't want to test or publish your own DAC app then you can skip this step and tries the already published demo apps in the next section. There are two ways to publish an app in ASMS:
But before publishing the app into ASMS you first need to publish your DAC app's OCI image into a registry that the RDK ASMS can reach. After all, it needs to be able to generate a bundle and thus needs access to this OCI image.
You need a read/write account to some OCI registry which is readable by RDK ASMS cloud service. Once you have that you can upload your OCI image as documented below. Remark: these instructions are specific to an amazon s3 OCI registry. You will need the aws cli tools and skopeo.
Configure your profile, add to ~/.aws/credentials. Obviously you have to provide your own correct credentials:
[s3dacrdk] aws_access_key_id = xxxxx aws_secret_access_key = yyyyyy
Login, create repository and upload the OCI image:
# login aws --profile s3dacrdk ecr-public get-login-password --region us-east-1 | skopeo login --username AWS --password-stdin public.ecr.aws/a0v6o9z7 # create repo 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 # upload image skopeo copy oci-archive:dac-image-cobalt.tar docker://public.ecr.aws/a0v6o9z7/cobalt:latest # download image (test) skopeo copy docker://public.ecr.aws/a0v6o9z7/cobalt:latest oci:cobalttest
You have to remember the OCI image URL, which in this example is docker://public.ecr.aws/a0v6o9z7/cobalt:latest. You will need it when publishing the DAC app to ASMS.
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:
This is the more difficult and manual way to add DAC apps. You can access the swagger UI here: http://asms-api-1852129899.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.
{ "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 } ] }
There are two ways to install and run a DAC app from ASMS:
TBD...
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.