Skip to end of metadata
Go to start of metadata

RVI SOTA Client has been replaced in GENIVI Development Platform (GDP) by Aktualizr!

The following tutorial provides the exact steps how to build GENIVI Development Platform (GDP) and RVI (Remote Vehicle Interaction) SOTA (Software, Over the Air) client, written in the Rust programming language, as well as how to run and test it on a development board with the assistance of Docker containers for RVI nodes. The build procedure has been tested on Ubuntu 14.04 LTS (Trusty Tahr) and Debian Jessie. RVI SOTA client has been tested on Raspberry Pi 2 and Renesas M2 Porter board. Further information on the RVI SOTA project can be found here.

Building and Testing RVI SOTA Client

Perform the following steps to build GDP image, run Docker images with RVI nodes and test RVI SOTA client which is running on a development board:

  1. Prepare GDP build environment. 

  2. Add meta-rust to BBLAYERS in conf/bblayers.conf, for example:

    BBLAYERS ?= " \
    ${TOPDIR}/../poky/meta \
    ${TOPDIR}/../poky/meta-yocto \
    ${TOPDIR}/../poky/meta-yocto-bsp \
    ${TOPDIR}/../meta-ivi/meta-ivi \
    ${TOPDIR}/../meta-ivi/meta-ivi-bsp \
    ${TOPDIR}/../meta-openembedded/meta-oe \
    ${TOPDIR}/../meta-openembedded/meta-filesystems \
    ${TOPDIR}/../meta-openembedded/meta-ruby \
    ${TOPDIR}/../meta-qt5 \
    ${TOPDIR}/../meta-genivi-dev/meta-genivi-dev \
    ${TOPDIR}/../meta-rust \
  3. Add RVI SOTA client to the image by appending the following line to conf/local.conf

    IMAGE_INSTALL_append = " rvi-sota-client "
  4. Build GDP:

    bitbake genivi-dev-platform
  5. Install Docker.

  6. Pull Docker image: 

    docker pull advancedtelematic/rvi
  7. Open a terminal and run a Docker container with RVI client node: 

    sudo docker run -it --name rvi-client --expose 8901 --expose 8905-8908 -p 8901:8901 -p 8905:8905 -p 8906:8906 -p 8907:8907 -p 8908:8908 advancedtelematic/rvi client
  8. Make sure that port 8901 from the Docker container of RVI client node is exposed and the instances of RVI SOTA Client on the development board will be able to connect: 

    (client@434f0e1bb6f0)1> EXPOSE 8901
  9. Open another terminal and run a Docker container with RVI server node: 

    sudo docker run -it --name rvi-server --expose 8801 --expose 8805-8808 -p 8801:8801 -p 8805:8805 -p 8806:8806 -p 8807:8807 -p 8808:8808 advancedtelematic/rvi server
  10. Boot the development board and login as root using password root
  11. Open /etc/hosts and define the IP of the host where the RVI Client node is running as rvi-client, for example after that the /etc/hosts should be similar to: localhost.localdomain localhost rvi-client

  12. Restart systemd service rvi-sota-client

    systemctl restart rvi-sota-client
  13. Execute the following command on the target to check the status of rvi-sota-client systemd service: 

    systemctl status -l rvi-sota-client
  14. Verify that rvi-sota-client systemd is running and sota_client is ready to accept connections, the output should be similar to: 


    root@raspberrypi2:~# systemctl status -l rvi-sota-client
    ● rvi-sota-client.service - RVI SOTA Client
    Loaded: loaded (/lib/systemd/system/rvi-sota-client.service; enabled; vendor preset: enabled)
    Active: active (running) since Tue 2016-03-01 14:26:17 UTC; 2s ago
    Main PID: 6122 (
    CGroup: /system.slice/rvi-sota-client.service
    ├─6122 /bin/bash /usr/bin/
    ├─6127 /usr/bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
    └─6128 /usr/bin/sota_client -c /var/sota/client.toml -r http://rvi-client:8901 -e
    Mar 01 14:26:17 raspberrypi2 systemd[1]: About to execute: /usr/bin/
    Mar 01 14:26:17 raspberrypi2 systemd[1]: Forked /usr/bin/ as 6122
    Mar 01 14:26:17 raspberrypi2 systemd[1]: rvi-sota-client.service changed dead -> running
    Mar 01 14:26:17 raspberrypi2 systemd[1]: Job rvi-sota-client.service/start finished, result=done
    Mar 01 14:26:17 raspberrypi2 systemd[1]: Started RVI SOTA Client.
    Mar 01 14:26:17 raspberrypi2 systemd[6122]: Executing: /usr/bin/
    Mar 01 14:26:17 raspberrypi2 systemd[1]: Starting RVI SOTA Client...
    Mar 01 14:26:17 raspberrypi2[6122]: ERROR:sota_client::configuration::configuration: $XDG_CONFIG_HOME is not set
    Mar 01 14:26:17 raspberrypi2[6122]: WARN:sota_client::configuration::configuration: Falling back to $HOME/.config
    Mar 01 14:26:17 raspberrypi2[6122]: INFO:sota_client::rvi::edge: Ready to accept connections.