Overview

The RDK Accelerator Home UI version 3 is the latest version of the RDK reference UI which provides a full featured UI with a modern minimalistic design using a dark theme. 

The UI uses Lightning SDK Plugins such as  Language, Router, Storage and supports Premium apps such as Amazon, YouTube, Xumo along with a selection of Lightning apps from the Metrological App Store.  It also includes a wide section of settings which allow a user to take full advantage of the device features such as Audio, Video, Network, Language and more.

The sequential flow this UI provides to the user is listed in below sections.

In summary, the features includes in version 3 are:

Splash Screen

The app loads a new splash logo when the device boots up which remains for a few seconds and then leads to user on-boarding screens if device is booting up afresh.

User on-boarding

This screens shall appear only once the device is booting up.  Criteria used to detect the fresh boot is by verifying whether any previous Remote Control Unit (hereafter RCU) pairing information is available or not. If yes, device shall skip these on-boarding screens and land at the Home screen.

Same features and functionalities are exposed under Settings menu as well for the user to interact later.

Remote Pairing

UI initiates Bluetooth scan for HID profile to connect and pair with at this point with a configured time-out. How to put the RCU in Bluetooth pairing mode is dependent on the RCU design which is not within UI scope.

Note: this feature of automatic RCU pairing requires RCU model support integrated with BLERCUDaemon at platform firmware build time. If your RCU does not support this feature yet, you can still pair your RCU through the "Settings" menu detailed in later section - "Pair Remote Control".

Language Selection

The UI currently supports two languages,  English and Spanish. New language support can be integrated with proper resource files added along with the defaults as detailed in upcoming sections. UI will reload to refresh the entire settings and during that time user may see display going blank and a spinner appearing for the reload time.

Note: this spinner is being spawned as a separate app instance.

 

Network Selection

Network selection screen allows the user to configure connectivity method for internet access to the device.

Preferred interface shall be ETHERNET and if selected, user shall be taken directly to home screen and set default interface to ETHERNET.

Upon selecting Wi-Fi interface, user shall be presented with a list of available wireless networks or an option to connect to the hidden network. Upon selection of a Wi-Fi network user shall be presented a page where he can enter the network credentials.

Added skip section to test the offline mode where UI shall not initiate any network configuration. If the ethernet cable is connected or WiFi is factory configured while selecting the skip button the device's backend may automatically try to connect to the network via respective interface which is not initiated by UI.

Below snapshots details related screens.

Note: (Limitation) Only DHCP mode is supported at the moment.

Keyboard seen in above snapshot is implemented using Lightning UI Components and has been customized to fit with present Keyboard layout.

Home Screen

This new app has redesigned ‘Home UI’ screen with new background, shadow and animation effects. It contains sections for Featured content, Lightning Apps, Featured Video on Demand, and Voice and Settings icons displayed on top section.

Prime Video, YouTube, Xumo and the metrological apps can be launched from app listings if the device has respective support integrated.

Sample Video contents can be played from the Featured Video section.

User can access the device settings by interacting with the Settings icon which will redirect him on to dedicated settings screen. Time display is also available in the home UI.

Home Screen for Set-Top-Box Profile

Note: Voice Search Functionality implementation for the mic is not yet available, up-coming feature with BLERCUDaemon integration.


The UI can display popular movies in Home screen with the help of Gracenote metadata if platform support is enabled. UI upon detecting required runtime configuration shall display "Popular Movies" row at the top as detailed below.

On selecting an asset; its details screen shall be presented and User shall be able to launch the selected content on platform supported Apps (Note: Currently YouTube only is added with deeplink feature).

Precondition: Platform shall have support for PersistentStore plugin and Gracenote API key should be added to Persistent Store of the DUT prior to UI startup. Use below commands to save and confirm the same.

curl -X POST http://127.0.0.1:9998/jsonrpc -d '{"jsonrpc":"2.0","id":"3","method":"org.rdk.PersistentStore.1.setValue","params":{"namespace":"gracenote","key":"apiKey","value":"SecretAPIKey"}}'
curl -X POST http://127.0.0.1:9998/jsonrpc -d '{"jsonrpc":"2.0","id":"3","method":"org.rdk.PersistentStore.1.getValue","params":{"namespace":"gracenote","key":"apiKey"}}'

Home Screen for TV Profile

TBD: Need images

Guide Screen

note - this file should be placed inside a folder named "moreChannels" and must be a valid json format.

Absolute path of file should be ~/lxresui/static/moreChannels/channelData.json.

sample Content for the file - 

{
    "data": [{
        "channelName": "Sample custom Channel",
        "channelUrl": "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6ef", 
        "shows": [{
            "showName": "24Hr long Sample Show",
            "description": "Shows worth of 24 hours is expected. The duration of this show is 24 hours",
            "duration": 172800000,
            "startTime": "0:0",
            "endTime": "0:0"
        }]
    }]
}

Apps Screen

A new page under 4th Icon in the left banner !!!

On selecting the Apps Icon from left banner; User shall be presented a new page with 3 tabs highlighted with "MyApps" which shall list the list of all available Apps on that particular platform. User shall be able to launch selected App from this page as well.

Featured Video Player

The redesigned video player utilizes UVE implementation and has kept the minimal controls such as a progress bar with pause, play, next and previous buttons. Various player controls are detailed below.

Settings Screen

Settings screen has several new options which allows user to interact with device capabilities.

Network Configuration

This page contains three subsections detailed below:

   

Pair Remote Control

Allows user to connect to Human Interface devices like Remote, Bluetooth keyboard etc.

  1. To add a device navigate to add a device option and press enter.
  2. User will be directed to pairing screen where you will list of devices scanned by the UI. Press enter to setup connection.
  3. Notification message will be shown to confirm the connection.

Below Images shows the flow.

     

Video Settings

Video settings provide users to change resolution of the screen. HDR and HDCP options are read only fields which confirms certain requirements for premium apps.

Note: Transparent(advanced settings) contents are currently work in progress

This screen presents the common resolutions supported by both source(device) and sink(display).

Audio

Provides option to change Output mode of the device.

Note: Transparent contents are currently work in progress

Other Settings

Sleep Timer turns off the screen upon selecting a particular time frame from the options provided. Device will be in Light Sleep mode by default. User can change the default sleep(standby) mode from Energy Saver section.

Energy Saver page allows user to configure the default sleep mode from the supported standby modes.

  1. Deep Sleep - Which releases the resources in the device and suspend the UI. Lowest power consumption mode except power off.
  2. Light Sleep - Turns off the display but the background processes remain active.

Allows user to change the menu language of the UI. If changed, the UI will reload to refresh the entire settings and in that process user may see display going blank and a spinner appearing for the reload time.

Note: this spinner is being spawned as a separate app instance.

  1. Local Device Discovery - This feature allows user to control (enables/disable) the DIAL casting support of the device - YouTube app. If enabled; user shall be able to see the device in his mobile App(under casting option in YouTube mobile app) which is in the same local network. Upon selecting it will directly link your mobile to device and open the YouTube app in the UI.
  2. USB Media Device - User shall be able to enable or disable USB external media support. If enabled and media device is connected with the device then the USB icon will appear in Featured Content section as detailed in "USB Feature" section.
  3. Audio Input/Clear Cookies and App Data - under development
  4. Privacy Policy and License - This provides a template for future integration. Gives Information about Privacy and License policy which user shall be abiding to.

  1. CEC Control - This plugin allows user to configure HDMI Consumer Electronic Control on a device. This will enable user to control TV and set-top box using one remote provided same is enabled and supported by the display device also.
  2. Device Details - The basic device specific details page which presents details of the platform, manages firmware details and helps user to trigger a system reboot.

TBD: Need updated image

TBD: Need image


USB Media Support Feature

In this version you will get full access to USB Media device related features if the device has required support integrated. To name a few - viewing images, playing audio and video file, accessing internal folders of the USB Media device.

When the USB is plugged in UI will show USB icon on Featured Content row as shown in below content. New design allows the user to disable and enable USB Media support feature from Privacy Setting.

User can view the contents by pressing enter and he will see contents sorted based on Video, Audio, Photo, Folder.

You can traverse using Left/Right/Up/Down and to access the content - press Enter. File format supported is limited only by UVE support and USBAccess plugin filter.

Overlay Screen

Overlay Screen for Set Top Box Profile

New widget for overlay - to display notifications such as volume change etc.

Note: Current release only has support for Volume change notification. User shall be able to see the volume change notifications in this overlay screen.

TBD: Need image [Volume change, Mute]

Overlay Screen for TV Profile

This feature adds additional overlay screens for changing TV related settings as detail;ed below.

TBD: Need images [Input Selection, Picture settings]

PartnerApp Support

This feature allows the app developers to quickly test any app without modifying the Accelerator UI source code by adding details of the custom app in app manager registry file present in device. After updating this restart the device or residentapp service to reload the Home page which shall display a new row at home page with the Icon image. A sample app manager registry configuration and resulting UI screen will be as given below.

root@HP44HRDK:~# cat /opt/appmanagerregistry.conf
{
  "applications":[
    {
      "displayName":"SampleApp",
      "uri":"https://apps.rdkcentral.com/rdk-apps/device-ui/index.html",
      "applicationType":"Lightning",
      "url":"http://127.0.0.1:50050/lxresui/static/images/info.png"
    }
  ]
}

List of supported launch type for apps(applicationType)

Application TypeSample appmanagerregistry.conf
For HTMLApps (online)
{ "applications":[ { "displayName":"HTML App", "uri":"https://keycode.info/", "applicationType":"WebApp", "url":"http://127.0.0.1:50050/lxresui/test-tube.png" } ] }
For Native/ResidentApps (offline)
{ "applications":[ { "displayName":"Native App", "uri":"http://localhost:50050/lxresui/static/loaderApp/index.html", "applicationType":"Native", "url":"http://127.0.0.1:50050/lxresui/test-tube.png" } ] }
For LightningApps (online)
{ "applications":[ { "displayName":"Lightning App", "uri":"https://apps.rdkcentral.com/rdk-apps/device-ui/index.html", "applicationType":"Lightning", "url":"http://127.0.0.1:50050/lxresui/test-tube.png" } ] }


Key Mapping

The version 3 UI supports a configurable keymap. Below lists the general functionality and keycode of keys. Detailed information of the default keycode mappings can found here.

KeyFunctionality
Keycode - 37,39,38,40 (Left/Right/Up/Down Key)To Move between the Contents Tiles
To Navigate between settings screen
Keycode - 13 (Enter Key)To launch app from App list
To launch Video Player
To Enable/Disable Features
To Play/Pause Video
Keycode - 36,77,27 Home/m/EscapeTo Navigate to home screen
To return back to home screen when YouTube app is running
Keycode - 116 (Power Key)To Power off the device
Keycode - 174 (AudioVolumeDown Key)To decrease the volume of the STB
Keycode - 175 (AudioVolumeUp Key)To increase the volume of the STB
Keycode - 173 (AudioVolumeMute Key)To mute the STB

Customization (Theme and Logo)

One among the new feature in this version of UI is it allows to change the focus color, background color and logo if an operator wishes to by making necessary changes in config.js. Default config.js for reference is as below.

const themeOptions = {
    partnerOne: {
      hex: 0xfff58233,
      logo: 'RDKLogo.png',
      background: '0xff000000'
    },
    partnerTwo: {
      hex: 0xff91c848,
      logo: 'RDKLogo.png',
      background: '0xff000000'
    },
}

User can define an object inside theme options which need three parameters:

hex - Color accents on the UI. Default one is shade of orange.
logo - Logo at the splash and top left side on the home screen.
background - background color of the components.

User has to export a specific theme for it to apply through the UI.

export var CONFIG = {
    theme: themeOptions['partnerOne'],
    language: localStorage.getItem('Language')!=null ? language[localStorage.getItem('Language')] : language['english']
}



Clone and Build Instructions

This section details about how to customize the current UI source code and develop further.

Follow the commands to run the application on you laptop.


Reference

The UI uses localstorage feature of WebkitBrowser's ResidentApp configuration for storing the user preferences. PLUGIN_RESIDENT_APP_LOCALSTORAGE and PLUGIN_RESIDENT_APP_PERSISTENTPATHPOSTFIX variables need to be configured build-time itself.

Note: the localstorage directory shall be pointed to a persistent ReadWrite section on device.

Steps to make Accelerator Home UI v3 as Device UI

Packages that are needed for Accelerator UI v3 are from meta-rdk-video layer. They will get installed into the final rootfs with necessary startup and configuration scripts if the machine configuration is enabled with below mentioned DISTRO_FEATURES.

$ DISTRO_FEATURES_append = " offline_apps build_rne "

Performance Matrix

This section details the average loading time, CPU and memory utilization for this version of the UI alone. It has been measured by loading the offline version of the UI on a pre-activated webkitbrowser instance.

TBD

PlatformCPU (%‾)Memory (MB‾)Home page loading time [#menu] (in ms‾)
Raspberry Pi


Reference VA(IP) - HX44X


Reference VA(IP) - AH212

8000
Reference VA(Hyb) - EKT


Web Version

To experience UIv3.X on a firebolt compliant RDK stack, below url can be used.

Current Stable Version(3.6): https://apps.rdkcentral.com/rdk-apps/accelerator-home-ui/index.html#splash

Previous Stable Version(3.5): https://apps.rdkcentral.com/rdk-apps/device-ui/index.html#splash 

API Documentation

This section details the necessary platform integration support required to ensure the smooth functionality of UI version 3. Below are the details of RDKServices provided methods and notifications used in each UI feature or page implementation which shall aid debugging any functionality and integration or modification of the same. The Featured Video Player - UVE is used for Video-On-Demand sample streams.

TBD: Need updation

FunctionalityPluginMethodEvents
Launching Premium appsorg.rdk.RDKShelllaunch
Hide Resident Apporg.rdk.RDKShellsetVisibility
Hot Plug and Unplug of USBorg.rdk.UsbAccess

OnUSBMountChanged

FunctionalityPluginMethodEvents
Get Default Network Interfaceorg.rdk.NetworkgetDefaultInterface
Test Internet Connectionorg.rdk.NetworkisConnectedToInternet
Current IP settingsorg.rdk.NetworkgetIpSettings
Get Interfacesorg.rdk.NetworkgetInterfaces
Get Connected SSIDsorg.rdk.WifigetConnectedSSID
Set Default Interfaceorg.rdk.NetworksetDefaultInterface
Discover SSIDorg.rdk.WifistartScan
Stop Scanorg.rdk.WifistopScan
Connect to SSIDorg.rdk.Wificonnect
Disconnect SSIDorg.rdk.Wifidisconnect
Wifi Stateorg.rdk.WifigetCurrentState
Enable/Disable Wifiorg.rdk.WifisetEnabled
Paired SSIDsorg.rdk.WifigetPairedSSID
Activate Wifi PluginControlleractivate
Wifi state changeorg.rdk.Wifi
onWifiStateChanged
Errororg.rdk.Wifi
onError
Available SSIDorg.rdk.Wifi
onAvailableSSIDs
Wifi state changeorg.rdk.Wifi
onWifiStateChanged
FunctionalityPluginMethodEvents
Activate BluetoothControlleractivate
Disable Bluetoothorg.rdk.Bluetoothdisable
Enable Bluetoothorg.rdk.Bluetoothenable
Start Scanorg.rdk.BluetoothstartScan
Stop Scanorg.rdk.BluetoothstopScan
Discovered Devicesorg.rdk.BluetoothgetDiscoveredDevices
Paired Deviceorg.rdk.BluetoothgetPairedDevice
Connected Deviceorg.rdk.BluetoothgetConnectedDevices
Connect to Bluetooth deviceorg.rdk.Bluetoothconnect
Disconnected to Bluetooth deviceorg.rdk.Bluetoothdisconnect
Unpair a deviceorg.rdk.Bluetoothunpair
Pair a deviceorg.rdk.Bluetoothpair
Discovered Deviceorg.rdk.Bluetooth
onDiscoveredDevice
Pairing Requestorg.rdk.Bluetooth
onPairingRequest
Connection Changeorg.rdk.Bluetooth
onConnectionChange
Discovery Completeorg.rdk.Bluetooth
onDiscoveryCompleted
Discovery Startedorg.rdk.Bluetooth
onDiscoveryStarted
Request Failedorg.rdk.Bluetooth
onRequestFailed
FunctionalityPluginMethodEvents
Enable Display Setting pluginControllerorg.rdk.DisplaySettings
Get Resolutionorg.rdk.DisplaySettingsgetCurrentResolution
Get HDCP Statusorg.rdk.HdcpProfilegetHDCPStatus
Get HRD SettingsDisplayInfohdrsetting
Supported Resolutionsorg.rdk.DisplaySettingsgetSupportedResolutions
Set Resolutionsorg.rdk.DisplaySettingssetCurrentResolution
FunctionalityPluginMethodEvents
Sound modeorg.rdk.DisplaySettingsgetSoundMode
Supported Sound Modesorg.rdk.DisplaySettingsgetSupportedAudioModes
Set Sound Modeorg.rdk.DisplaySettingssetSoundMode
FunctionalityPluginMethodEvents
Set Power Stateorg.rdk.SystemsetPowerState
Inactivityorg.rdk.RDKShell
onUserInactivity
Inactivity Intervalorg.rdk.RDKShellsetInactivityInterval
Enable/Disable Inactivity Reportingorg.rdk.RDKShellenableInactivityReporting
FunctionalityPluginMethodEvents
Get preferred Standby Modeorg.rdk.SystemgetPreferredStandbyMode
Set preferred Standby Modeorg.rdk.SystemsetPreferredStandbyMode
FunctionalityPluginMethodEvents
Activate USB PluginController (org.rdk.UsbAccess)activate
Deactivate USB PluginController (org.rdk.UsbAccess)deactivate
FunctionalityPluginMethodEvents
Activate Xcast PluginController (org.rdk.Xcast)activate
Deactivate Xcast Pluginorg.rdk.XcastsetEnabled
FunctionalityPluginMethodEvents
Activate CEC PluginController (org.rdk.HdmiCec_2)activate
Deactivate CEC PluginController (org.rdk.HdmiCec_2)deactivate
Check Enabled/Disabledorg.rdk.HdmiCec_2getEnabled
Set Enabled/Disabledorg.rdk.HdmiCec_2setEnabled
PerformOtpActionorg.rdk.HdmiCec_2performOTPAction
FunctionalityPluginMethodEvents
Serial Numberorg.rdk.SystemgetSerialNumber
System Versionorg.rdk.SystemgetSystemVersions
Activate OCDM PluginController (OCDM)activate
DRMs infoOCDMdrms
Location infoLocationSynclocation
Device InfoDeviceIdentificationdeviceidentification
Location changeLocationSync
locationchange
Firmware Stateorg.rdk.SystemgetFirmwareUpdateState
Downloaded Firmware Infoorg.rdk.SystemgetDownloadedFirmwareInfo
Get Firmware Download Percentageorg.rdk.SystemgetFirmwareDownloadPercent
Update Firmwareorg.rdk.SystemupdateFirmware
Reboot deviceorg.rdk.Systemreboot
FunctionalityPluginMethodEvents
Deactivate apporg.rdk.RDKShelldestroy
Suspend apporg.rdk.RDKShellsuspend
Focus Apporg.rdk.RDKShellsetFocus
Move app to top of zorderorg.rdk.RDKShellmoveToFront
State change of application eventController
statechange
Add key interceptsorg.rdk.RDKShelladdKeyIntercept
FunctionalityPluginMethodEvents
Activate Xcast PluginController (org.rdk.Xcast)activate
Deactivate Xcast PluginController (org.rdk.Xcast)deactivate
Enable/Disable Xcast Statusorg.rdk.XcastgetEnabled
Set Enable/Disable Xcast Statusorg.rdk.XcastsetEnabled
Notify Application Stateorg.rdk.XcastonApplicationStateChanged
Launch Request eventorg.rdk.Xcast
onApplicationLaunchRequest
Hide Request eventorg.rdk.Xcast
onApplicationHideRequest
Resume Request eventorg.rdk.Xcast
onApplicationResumeRequest
Stop Request eventorg.rdk.Xcast
onApplicationStopRequest
State Request eventorg.rdk.Xcast
onApplicationStateRequest
FunctionalityPluginMethodEvents
Creates a symbolic linkorg.rdk.UsbAccesscreateLink
Clears or removes the symbolic linkorg.rdk.UsbAccessclearLink
Gets a list of files and foldersorg.rdk.UsbAccessgetFileList
Gets a list of files and foldersorg.rdk.UsbAccessgetFileList
Triggered when a USB drive is mounted or unmountedorg.rdk.UsbAccess
onUSBMountChanged