Versions Compared

Key

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

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.

Table of Contents
maxLevel2

You will need

  • Raspberry Pi (RPI) 3B/3B+ or RPI 4
  • Balena Etcher to write the Raspberry Pi SD card: https://www.balena.io/etcher/
  • (lib32-)rdk-generic-mediaclient-image built for you RPI
  • Your own built DAC app: you only need the OCI image (.tar) and not a generated bundle (.tar.gz). See this wiki page. Not needed if you only want to install and run other people's published DAC apps.

Prepare your RPI

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.

Build the mediaclient image for your RPI

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:

Code Block
languagebash
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:

Code Block
languagebash
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

Flash it

  • Find and download the .wic.bz2 file from your build: find tmp/deploy/ -name *.wic.bz2
  • Flash it to the Raspberry Pi's SD card using Etcher. In principle it can handle a wic.bz2 directly but sometimes this doesn't work great. Unzipping it first can help: bzip2 -df xxx.wic.bz2
  • Resize the SD card using gParted so that the main ext3 partition is at least 2GB in size so that is has enough room to download and install all the apps you need
  • Insert the SD card back in the RaspberryPi and power up the Pi. Connect the Raspberry Pi to your network with an ethernet cable, and to your TV with a HDMI cable.
  • Make sure you can SSH into the Pi as this is important for later. The default user is root with no password
  • You should see the RDK Resident GUI application on your TV at bootup (after following some initial setup questions)

Configure ASMS

After boot-up you need to manually configure ASMS and the version+platform of your host:

  1. on your RPI, create the file /opt/appmanagerregistry.conf
  2. add the contents below to it in case you are using an RPI4.


Code Block
languagejs
{
  "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:

Code Block
languagejs
{
  "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.

Publish your DAC app

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:

  1. using the dactest.py test tool
  2. using the Swagger interface to manually publish the app

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.

Publish the OCI image

TBD...

Publish the DAC app using dactest.py tool

TBD...

Publish the DAC app using Swagger interface

TBD...

Install and run your DAC app from ASMS

There are two ways to install and run a DAC app from ASMS:

  1. using the RDK Resident UI
  2. using the dactest.py test tool

Using Resident UI

TBD...

Using dactest.py tool

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:

  1. on your development PC/laptop: install dactest.py dependencies. You need python3 and then pip3 install requests colorama websocket-client
  2. by default the script is configured properly for RPI3. But for RPI4 you have to edit the script and set DEFAULT_ASMS_PLATFORM_RDK="rpi4" and DEFAULT_ASMS_FIRMWARE_RDK="1.0.0-e71889dc02521bfdc2f9f38f750b34224184c375-dbg"
  3. use ./dactest.py 192.168.0.117 (replace with your RPI IP)
  4. it will use the RDK ASMS to list apps available from the cloud. Use "Ix" where x is the number/index of the app you want to install. Later you can use "Ux" to remove it again.
  5. after successful installation you can start the app using "Sx" and stop it using "Tx". 

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.