<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>M. Wagner and S. Schildt, “Innovation durch Offenheit: Das Open
Source Connected Vehicle Framework Eclipse Kuksa”, [Innovation
through Openness - The Open Source Connected Vehicle Framework
Eclipse Kuksa], Bordnetz Kongress, Sep.</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>On deployment of Eclipse Kuksa as a framework for an intelligent moving test platform for research of autonomous vehicles</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Harri Hirvonsalo</string-name>
          <email>harri.hirvonsalo@oulu.fi</email>
          <email>harri.hirvonsalo@oulu.fi https://orcid.org/0000-0002-5503-510X</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pertti Seppänen</string-name>
          <email>pertti.seppanen@oulu.fi</email>
          <email>pertti.seppanen@oulu.fi https://orcid.org/0000-0002-4289-2487</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Faculty of Information Technology and Electrical Engineering /, Empirical Software Engineering in Software, Systems and Services, (M3S Group) / University of Oulu</institution>
          ,
          <addr-line>Oulu</addr-line>
          ,
          <country country="FI">Finland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Faculty of Information Technology and Electrical Engineering /, Empirical Software Engineering in Software, Systems and, Services (M3S Group) / University of Oulu</institution>
          ,
          <addr-line>Oulu</addr-line>
          ,
          <country country="FI">Finland</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <volume>29</volume>
      <issue>2018</issue>
      <abstract>
        <p>-After an era of huge propagation within the field of mobile communications, digitalization has been spreading during the latest years at an accelerating speed to automotive technology and business. Following the developments experienced earlier in the mobile communications branch, open solutions and platforms are emerging in the automotive industries, challenging the traditional proprietary systems. Like in mobile communications, open platforms enable development of a wide variety of novel applications and systems that speed up the digitalization of the automotive and traffic ecosystems and offer the developers new attractive business opportunities. One of such open approaches is the Eclipse Kuksa framework developed in a consortium of European research institutions and automotive industries. In this study, we explored how the Kuksa framework could be used as a technology basis for an automotive data system combining in-vehicle functionality to cloud-based services. The study was carried out as a part of the SMAD research project of the University of Oulu aiming at an intelligent moving test platform for research of autonomous vehicles built on top of a Toyota Rav4 hybrid car. Our study covered subsystems of the Kuksa framework, the in-vehicle subsystem, cloud subsystems and the data communications between them. Our results indicate that the Kuksa framework is a feasible basis for the development of open, intelligent automotive data systems, though with a considerable learning needs. The results and experiences of our study provide besides additional knowledge for our continuing research on automotive software, also new, valuable contribution to the Eclipse Kuksa community and the practitioners planning to deploy open approaches in their automotive software development.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Following the developments of smart mobile
device business and technology, open solutions have
gained increased interests in the automotive
industry [
        <xref ref-type="bibr" rid="ref43">43</xref>
        ]. Started in 2016, the University of Oulu
conducted research of the open solutions for automotive
industries in a three-year research project ITEA 3
APPSTACLE (open standard APplication Platform for
carS and TrAnsportation vehiCLEs) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], which further
continued as Eclipse Foundation development project,
Eclipse Kuksa [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. A key contribution of these projects was
an application development and testing framework called
Eclipse Kuksa [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]–[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], according to the traditional
wooden drinking cup of northern Finland’s hunters and
fishermen.
      </p>
      <p>The Kuksa framework introduced an in-vehicle software
platform, an internet-of-things cloud platform, a cloud-based
IDE and an application store that was connected to an
automotive with a specific hardware interface, providing
software developers with an integrated environment for
developing, testing, and offering for use in automotive
applications.</p>
      <p>
        In 2019, University of Oulu started a new research project,
SMAD (Smart and mobile testbed for automated and assisted
driving), funded by the European Regional Development
Fund, aiming at creating an intelligent moving test platform
for automotive research [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. During this two-and-a-half-year
project, eight research units of University of Oulu, built a
broad palette of research and test infrastructures for
supporting autonomous driving research, utilizing two Toyota
Rav4 Hybrid cars as moving carriages of the test platform [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>Open solutions were seen as an important option also in
the research of autonomous driving, and Kuksa was opted as
the framework for software and application development of
the SMAD project. Being outside the scope of the SMAD
project, the application store of Kuksa was left fully out of the
focus of this research. Kuksa IDE was covered only to the
extend necessary to address the targets set in the SMAD
project plan.</p>
      <p>In this paper, we report the work conducted on Kuksa
framework in SMAD project; the results of implementing a
moving test platform utilizing Kuksa, gained experiences
regarding to Kuksa, and contributions to Eclipse Kuksa
community. In this research, we define Kuksa framework as a
combination of a vehicle-level software in connection to
Kuksa development and testing hardware and the data
communications and cloud services software defined and built
in the APPSTACLE and Eclipse Kuksa projects. From the
perspective of Kuksa framework we define the intelligent
moving test platform, the SMAD environment, as a Toyota
Rav4 Hybrid car connected to Kuksa cloud platform utilizing
mechanisms provided by Kuksa framework.</p>
      <p>
        The research was conducted by deploying the methods of
the Design Science Research (DSR) as defined by Hevner et
al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], Hevner [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and Hevner &amp; Chatterjee [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>In Section II, an overview on Kuksa framework is
summarized. In Section III, the research problem is defined.
In Section IV, the research methodology is presented. In
Section V, building of the SMAD-specific Kuksa is presented.
In Section VI, the results and experiences are presented. In
Section VII, the conclusions are drawn.</p>
    </sec>
    <sec id="sec-2">
      <title>II. SUMMARY OF KUKSA FRAMEWORK</title>
      <p>
        In this section a short summary of Eclipse Kuksa
framework subsystems, referenced in Fig. 1 as platforms, the
in-vehicle subsystem [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and cloud subsystem [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], is presented
to the extent that was relevant for the SMAD project targets
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Application store functionality of cloud subsystem [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
and Kuksa integrated development environment subsystem
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] are excluded from this summary. In addition, a short
summary of data communication between in-vehicle
subsystem and cloud subsystem is presented.
      </p>
      <sec id="sec-2-1">
        <title>A. In-vehicle subsystem</title>
        <p>
          Kuksa framework in-vehicle subsystem, a gateway for
connecting to in-vehicle devices and data sources, is
composed of both software and hardware that integrate into a
vehicle. It provides in- and ex-vehicle data access
mechanisms, application platform and secure gateway to the
cloud [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]–[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. As depicted in Fig. 2, Kuksa in-vehicle
subsystem architecture is three-layered, including an OS
layer, a middleware layer, and an application layer.
        </p>
        <p>Application layer provides a sandboxed and secure
runtime environment for
Kuksa in-vehicle specific
applications such as
overthe-air update functionality.</p>
        <p>
          Custom applications
deployed in the in-vehicle
subsystem are run on this
layer. Middleware layer
provides libraries and APIs
to enable interaction and
communication with
invehicle subsystem hardware,
the vehicle itself and cloud
subsystem. OS layer with the
use of Automotive Grade
Linux Unified Code Base
Linux distribution [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] (later
referenced in this study only
as AGL UCB) of
Automotive Grade Linux
project [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] (later referenced
in this study as AGL)
provides typical operating
system services and scheduling, and
for example, device drivers needed to
interact with the hardware in-vehicle
subsystem is deployed to. Kuksa
invehicle specifications recommend that
OS should be booted by hardware
supported secure boot mechanism
[
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Utilizing in-vehicle subsystem</title>
      <p>
        requires use of AGL UCB supported
hardware or that a custom build of
AGL UCB is done in order to make it
compatible with the hardware
invehicle subsystem is being deployed
on; different CPU architectures need
to be taken into account and although
drivers for hardware needed for
exand in-vehicle communication could
be distributed and loaded separately,
our interpretation is that in-vehicle
subsystem documentation suggests that drivers should be
distributed together with AGL UCB in manner of custom
build [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Similarly, in-vehicle subsystem specific software,
software requirements of custom software and applications,
and the applications themselves can be distributed with AGL
UCB, by including them in the target environment specific
custom AGL UCB build. By our interpretation, Kuksa
invehicle subsystem documentation implicitly recommends
packaging all but custom applications into a custom AGL
UCB build [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Packaging the operating system, drivers
for hardware, in-vehicle subsystem software, and software
requirements of applications into a single software image,
enables to update whole software stack of in-vehicle
subsystem over-the-air [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>
        AGL utilizes OpenEmbedded build framework [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] and
Yocto project [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] resources and best-practices to enable
modularity and customizability of AGL UCB builds [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
Kuksa in-vehicle subsystem utilizes the same build tool of
OpenEmbedded, BitBake [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], to include in-vehicle
subsystem specific software in-vehicle specific custom build
of AGL UCB [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>
        Regarding hardware, Kuksa in-vehicle subsystem
specification in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] lists two hardware platforms for
invehicle subsystem, but technically in-vehicle subsystem
software does not require that a specific type of hardware, e.g.
from a specific vendor or with a specific CPU architecture is
used to provide hardware part of in-vehicle subsystem.
However, software specifications of in-vehicle subsystem
implicitly set some requirements to hardware, such as the
capability to run AGL UCB and recommendation for
hardware supported secure boot.
      </p>
      <p>
        Kuksa offers free and open schematics for a development
and testing hardware board build around capabilities offered
by Raspberry Pi Computing Module [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Device includes a
wireless network card interface and SIM card slot for 4G or
5G connectivity and a CAN bus compatible interface chip,
STN2120 [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], to
enable
communications
with control units of
a car through car’s
on-board diagnostics
(OBD) port. Device
can be extended with
peripherals through
USB connectors.
      </p>
      <p>Rendered image of
the device is
presented in Fig. 4.</p>
      <sec id="sec-3-1">
        <title>B. Cloud subsystem</title>
        <p>Kuksa cloud subsystem is comprehensively summarized
by Banijamali et al in following way:</p>
        <p>The Eclipse Kuksa cloud platform (EKCP) sends and
receives different types of messages from and to various sources,
such as vehicles, devices, and third-party services. In general,
messages include “telemetry messages” that depict data
stemming from vehicles, devices, and sensors and “commands
and controls messages” that are dedicated to the vehicles and
device management components [26, p. 460].</p>
        <p>
          Kuksa is not limited to cloud centered communication
model, as its in-vehicle subsystem can be extended to support,
for example vehicle-to-infrastructure (V2I) and
vehicle-tovehicle (V2V) communication [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ]. However, Kuksa
cloud subsystem should be
viewed as cloud centric IoT
architecture [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ] and given its
automotive context it can be seen
as an internet-of-vehicles
architecture (IoV). In general,
IoT architecture such as Kuksa
cloud subsystem consists of the
following building blocks
according to the different
reference architectures studied in
        </p>
        <p>
          APPSTACLE [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ]:





 Message gateway: A
component for sending and
receiving data to and from an
arbitrary amount of (constrained)
devices via different kind of
        </p>
        <p>protocols.</p>
        <p>
          As this component is the central
point of interaction with the cloud backend, the
message gateway transforms data after ingress to
events and act as broker by redirecting the events to
other components for further processing. Eclipse Hono
service [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ] presented in Fig. 3 realizes responsibilities
of this component in Kuksa.
        </p>
        <p>
          Data storage and management: A component for
persisting data within different types of databases. In
Kuksa, InfluxDB [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ] and Mongodb [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ] presented in
Fig. 3 are used to provide functionality of this
component.
        </p>
        <p>
          Data analytic and visualization: Components for
analyzing existing data including big data analyses and
visualizing data in a suitable and valuable way. In
Kuksa, Grafana service [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ] presented in Fig. 3 is used
for visualization. Apache Flink service [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ] is used as
the big data analysis component presented in Fig 3.
Device management: A component for device
management allows to authenticate, configure and
control, monitor, maintain, and update devices. Eclipse
hawkBit service [
          <xref ref-type="bibr" rid="ref35">35</xref>
          ] presented in Fig. 3, together with
Eclipse Hono provide functionality of this component
in Kuksa.
        </p>
        <p>
          Application and service integration: Components that
support the development and provision of applications
and services within the cloud backend. In general, all
components of Kuksa cloud subsystem provide some
functionality that enables Kuksa to provide
responsibilities of this component; for example,
Eclipse Ditto service [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ] presented in Fig. 3 enables
use of digital twins and Eclipse Hono supports wide
variety of communication protocols.
        </p>
        <p>
          Security: Components that realize authentication,
authorization, privacy, and a secured communication.
In Kuksa, Keycloak service [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ] presented in Fig 3 and
Eclipse Hono provide this functionality.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Authentication service of Hono.</title>
      <p>
        Hono’s internal components use
the same Authentication service
to authenticate and authorize
each other. Authentication
mechanisms for authentication
of devices supported by Hono
are hashed passwords,
PreShared Keys (PSK) for
Transport Layer Security (TLS)
connections and X.509
certificates [
        <xref ref-type="bibr" rid="ref47">47</xref>
        ]. Authentication
mechanism depends on the used
communication protocol; not all
protocols support all
authentication mechanisms.
      </p>
      <p>
        Kuksa utilizes Keycloak for user
authentication of App Store
functionality [
        <xref ref-type="bibr" rid="ref48">48</xref>
        ].
      </p>
      <p>
        Although Kuksa cloud subsystem does not strictly require
specific runtime system, available Kuksa cloud subsystem
deployment documentation [
        <xref ref-type="bibr" rid="ref38">38</xref>
        ] and [
        <xref ref-type="bibr" rid="ref39">39</xref>
        ] imply that Kuksa
cloud subsystem is meant to be deployed in a cloud-native
fashion to a Kubernetes [
        <xref ref-type="bibr" rid="ref40">40</xref>
        ] cluster using Helm [
        <xref ref-type="bibr" rid="ref41">41</xref>
        ]
deployment tool or alternatively to OpenShift [
        <xref ref-type="bibr" rid="ref42">42</xref>
        ].
Deployment examples included in Kuksa cloud subsystem in
[
        <xref ref-type="bibr" rid="ref38">38</xref>
        ] instruct how subsystem can be deployed to Azure
Kubernetes Service (AKS) [
        <xref ref-type="bibr" rid="ref44">44</xref>
        ] using various automation
scripts utilizing Azure CLI tool [
        <xref ref-type="bibr" rid="ref45">45</xref>
        ]. Additional Kuksa cloud
subsystem related deployment documentation is available
through documentation of some of its components such as
Eclipse Hono in [
        <xref ref-type="bibr" rid="ref46">46</xref>
        ]. Hono documentation explicitly
mentions that deployment to Kuberenetes runtime is the only
deployment model Hono officially supports. Similarly, as
Kuksa cloud subsystem, Hono deployment examples in [
        <xref ref-type="bibr" rid="ref46">46</xref>
        ]
instruct how Hono can be deployed to AKS, utilizing Azure
CLI and, in addition to Kuksa documentation, Azure Resource
Manager (ARM) templates.
      </p>
      <sec id="sec-4-1">
        <title>C. Data communications between Kuksa in-vehicle and</title>
      </sec>
      <sec id="sec-4-2">
        <title>Kuksa cloud subsystems</title>
        <p>
          Data communication between Kuksa in-vehicle and
Kuksa cloud subsystems happens via gateway components,
which essentially provide remote service interfaces for
connecting vehicles and devices to cloud subsystem (cloud
subsystem gateway) and enable data transfer from vehicles
systems, i.e. CAN bus (in-vehicle subsystem gateway) [
          <xref ref-type="bibr" rid="ref39">39</xref>
          ].
Eclipse Hono, which is the cloud subsystem gateway
component, uses AMQP 1.0 protocol to broker messages
between in-vehicle and other Kuksa cloud subsystem
components and external applications. This communication is
considered to be egress or northbound traffic from
point-ofview of Hono.
        </p>
        <p>For communication between in-vehicle subsystem and
Hono, i.e. ingress or southbound connections, MQTT, HTTP,
CoAP, AMQP 1.0 and LoRa protocols are supported. Hono
provides support for southbound protocols via protocol
adapters and northbound connections via AMQP 1.0 to
Dispatch router component as depicted Fig. 5.</p>
        <p>Southbound connection requests, i.e. devices connecting
to Hono protocol adapters are authenticated by Hono device
registry, or rather its credentials service. Authentication of
northbound communication requests are delegated to</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>III. PROBLEM DEFINITION</title>
      <p>
        While defining the targets of the SMAD project [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], the
M3S, as one of the eight research teams, figured out several
intelligent services utilizing Eclipse Kuksa framework [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]–
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], such as distant monitoring of the vehicle and on-line
functionality and software update to the vehicle.
      </p>
      <p>
        During the project it became evident, that Kuksa
framework, as developed in the APPSTACLE [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and Eclipse
Kuksa [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] projects, was not an off-the-shelf product, but a
research framework developed and integrated by several
project consortium members to address various
memberspecific targets. Wide use of open-source software packages
had enabled the APPSTACLE consortium members to set up
and finetune slightly different combinations of software
components and services and to our best knowledge, none of
them would directly (i.e. without customization of the
framework and its components) fit to the target setting of the
SMAD project, including the test Toyotas and their technical
details, the data communications solutions, and the intelligent
services planned in the SMAD project plan [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>With this reasoning we understood that our research will
focus on both implementation of the test platform and finding
out how one can utilize Kuksa framework; how Kuksa
framework needs to be customized, in order to utilize it in
realizing the intelligent moving test platform of SMAD
project, the SMAD environment. Since main outcome of
SMAD project is the SMAD environment we decided to focus
our research questions to build process of this test platform.</p>
      <p>RQ1: How to build an intelligent moving test platform
utilizing the Kuksa framework?</p>
      <p>RQ2: How to customize the Kuksa framework for a
casespecific, intelligent automotive data system?</p>
      <p>RQ3: What are the obstacles of utilizing the Kuksa
framework for a case-specific, intelligent automotive data
system?</p>
      <p>Description of SMAD project targets and details how
Kuksa framework was customized to implement the SMAD
environment, will be presented in chapter 5.</p>
    </sec>
    <sec id="sec-6">
      <title>IV. RESEARCH METHODS</title>
      <p>
        Because of the target setting of the SMAD project aiming
at building a test platform, we decided to utilize the Design
Science Research (DSR) approach as defined by Hevner et al.
[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], Hevner [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and Hevner &amp; Chatterjee [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        Hevner, [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] defines a three-cycle model of Design
Science model, as presented in Fig. 6.
      </p>
      <p>
        Fig. 6. Hevner’s three-cycle model of Design Science Research [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>In the relevance cycle, the entities of the application
domain, people, organizational systems, technical systems
and, and the related problems and opportunities are utilized as
the basis for the requirement identification and field testing of
the artifacts and processes built and evaluated in the DSR
process.</p>
      <p>In the rigor cycle, foundations of the DSR process,
scientific theories &amp; methods, experiences &amp; expertise, and
meta-artifacts are used for grounding the results of the DSR
process, which, in turn provide the knowledge base with
additional knowledge and experiences.</p>
      <p>
        When mapping Hevner’s three-cycle model of DSR we
were able to identify the following mappings to our problem
domain, validating our research methodology selection:
1) The application domain consisted of the M3S research
team and its researchers, having a task to find solutions to the
problems defined in section 3. The requirements for the
artifacts to be built and the validation criteria were naturally
derived from the problem domains of the SMAD test
platform [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>2) The knowledge base consisted of the Kuksa
framework documentation, of the experiences and expertise
gained in the APPSTACLE project in our university, and of
the documentation and code of the open-source software and
services of the Kuksa framework.</p>
      <p>3) The artifact to be built and evaluated by following the
DSR process was an integrated Kuksa from a Toyota test car
to the cloud services relevant for addressing the target setting
of the SMAD project.</p>
    </sec>
    <sec id="sec-7">
      <title>V. BUILDING SMAD-SPECIFIC KUKSA</title>
      <p>
        To support realization of the intelligent moving test
platform, i.e. the SMAD environment, we built a Kuksa
system addressing the problem domain presented in section 3.
While building such SMAD-specific Kuksa we utilized,
besides the overall idea of Kuksa framework, the sub-systems
and solutions that were designed and built in the
APPSTACLE [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and Eclipse Kuksa [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] projects. In the
following sections, we describe how the work was carried out
deploying Hevner’s three-cycle process model [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <sec id="sec-7-1">
        <title>A. Identifying the requirements, the relevance cycle work</title>
        <p>Focus of SMAD project was on two larger themes;
research of autonomous driving itself and on various aspects
needed to enable and support autonomous driving, and
implementation of a moving development and testing
platform, i.e. the SMAD environment, to support future
research on autonomous vehicles. Research topics range from
connectivity and communication research, such as 5G
network connectivity and vehicle-to-everything (V2X), to
ubiquitous integration of car to smart transportation systems.</p>
        <p>Implementation of the SMAD environment was less
research oriented, but still very much a research task; to our
best knowledge no such system exists, and as such there are
lot of unknows to deal with when implementing such system.</p>
        <p>Implementation of the SMAD environment would happen
simultaneously with the research activities and SMAD
environment would be used to support research when
possible.</p>
        <p>
          Following requirements were extracted by us from SMAD
project description [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]:
 SMAD environment needs to enable future research
and development of use cases such as vehicle as a
sensor, online functionality and software updates of
the vehicle, traffic situation updates and route booking.
 SMAD environment will provide both the hardware
and the software to support automotive research. It will
provide the vehicles to which needed research
instruments will be installed to.

        </p>
        <p>The vehicles themselves are also research instruments
and as such, SMAD environment needs to provide
means to gather data from various sensors and systems
of the vehicles.
 SMAD environment needs to provide means to interact
with the vehicle and support interacting with the
research instruments installed in the vehicle when
applicable.
 SMAD environment needs to be able to integrate to
instruments and systems outside of the vehicle.</p>
        <p>In essence, SMAD environment is complex system where
communication between various elements, both inside and
outside of the system’s core, is the central functionality
provided by the SMAD environment. To enable this, core of
SMAD environment is depicted as a system consisting of
cloud environment and a software environment installed to
vehicles. Research instruments in the vehicle will connect to
the cloud backend via means provided by the in-vehicle
software environment. In-vehicle environment will enable
installation of software research artifacts to the vehicle and
since systems and sensors of the vehicle must also be utilized
by the test platform and research instruments, in-vehicle
environment must provide means to do so. This changes the
nature of in-vehicle environment from software only
environment to system which also provides hardware
capabilities to interact with the vehicle and research
instruments connected to the vehicle. External systems and
services will integrate to SMAD environment through the
cloud environment, apart from V2X communication, where
vehicle and its environment could in some cases interact
directly without connection to cloud environment.</p>
        <p>SMAD environment is a service that will be utilized by
researchers and companies doing automotive related software
research and development. From a service point- of-view
following requirements were deducted for SMAD
environment core based on SMAD project description:
 SMAD environment core and its software and services
must be managed according to best practices suitable
for chosen deployment model.
 SMAD environment core needs to be operated and
maintained, in best case as a production grade service.</p>
        <p>Design of the system must take this into account.
</p>
        <p>Operation metrics of the SMAD environment core
need to be gathered and monitored in order to identify
service level degradation.
 Software development and maintenance of SMAD
environment core components must be trustworthy;
utilized development processes must provide, for
example, traceability of software and its dependencies,
consistent and repeatable compilation results, version
control and other best practices.</p>
      </sec>
      <sec id="sec-7-2">
        <title>B. Utilizing the results of the APPSTACLE and Eclipse</title>
      </sec>
      <sec id="sec-7-3">
        <title>Kuksa projects, the rigor cycle</title>
        <p>Eclipse Kuksa framework was identified as a key enabler
for building SMAD environment core and for research targets
of the SMAD project, but as described in section 3, we
identified that Kuksa framework would have to be customized
in order to utilize it in context of SMAD project. We started
our SMAD work by identifying parts of Kuksa framework
architecture that must be modified or parts that could left out
to build a customized, SMAD-specific Kuksa system to
realize SMAD environment core, better suited to SMAD
project targets. We identified three areas for change along the
system-level architecture of Kuksa framework: the in-vehicle
subsystem, the cloud subsystem, and the data communications
between the subsystems. Each subsection describes how
corresponding subsystem of Kuksa framework was to be
adapted to form a SMAD-specific Kuksa. Table I presents a
summary of design decisions which reflect how
SMADspecific Kuksa will differ from Eclipse Kuksa.</p>
      </sec>
      <sec id="sec-7-4">
        <title>1) In-vehicle subsystem</title>
        <p>
          AGL UCB [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], OS choice of Kuksa in-vehicle
subsystem, includes lot of functionality such as application
framework [
          <xref ref-type="bibr" rid="ref49">49</xref>
          ] and human-machine interface framework
(HMI) [
          <xref ref-type="bibr" rid="ref50">50</xref>
          ] which were not needed in SMAD project; no
SMAD project task required implementation of graphical user
interface in the in-vehicle subsystem and software that will be
run in in-vehicle subsystem would not benefit from the use of
application framework, since security features provided by
application runtime of in-vehicle system can be utilized
without utilizing application framework itself. Apart from
HMI and application framework most of the generic operating
system functionality provided by AGL UCB and its
underlying use of OpenEmbedded [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] resources were seen as
a necessity for SMAD-specific Kuksa. AGL UCB is stable
and maintained operating system, which through use of
BitBake [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] build tool offers flexibility to make use-case
specific changes to the OS. With this reasoning, it was decided
that application framework and HMI framework of AGL UCB
would not be used in SMAD-specific Kuksa. However, it was
also decided that, if time permits, application framework
could be evaluated and used if evaluation revealed that
application framework would benefit SMAD project targets.
Customization of AGL UCB would happen with BitBake tool.
        </p>
        <p>
          Most of the functionality provided by middleware layer of
Kuksa in-vehicle subsystem is not needed in SMAD project.
However, some functionality such as vehicle abstraction layer
(VAL) [
          <xref ref-type="bibr" rid="ref51">51</xref>
          ] were identified to be useful, as it provided an
easy-to-use and ready-made implementation for transforming
vehicle manufacturer specific CAN bus messages to GENIVI
Alliance Vehicle Signal Specification (VSS) [
          <xref ref-type="bibr" rid="ref52">52</xref>
          ] data model.
By this rationale only vehicle abstraction layer of Kuksa
invehicle subsystem was decided to be included in
SMADspecific Kuksa.
        </p>
        <p>
          Kuksa development and testing hardware [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] was selected
as the hardware platform for SMAD-specific in-vehicle
subsystem, since we had one available from APPSTACLE
project. Other hardware platforms could be utilized in the
future. Kuksa development and testing hardware does not
contain necessary hardware for secure boot and as such, using
a secure boot loader as defined by [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] was not a viable option.
To address the need of boot time security, which provides the
base for runtime security, we identified that secure boot like
functionality could be achieved on Kuksa development and
testing hardware via use of special SD memory card such as
Swissbit PS-45, which when used with a custom bootloader,
allows to store secure boot key material protected by
ondemand decryption and write-protection of SD-card partitions
[
          <xref ref-type="bibr" rid="ref53">53</xref>
          ]. Given that SMAD is time constrained project and we did
not have previous experience on utilizing Swissbit PS-45 or
similar products, we decided that we will first implement a
version of SMAD-specific Kuksa without secure boot
capabilities on development and testing hardware of Kuksa
and if project schedule allows, we will either try to implement
a secure boot mechanism based on Swissbit SD-card or test
SMAD-specific Kuksa in-vehicle subsystem on another
hardware platform which supports secure boot out-of-the-box.
        </p>
      </sec>
      <sec id="sec-7-5">
        <title>2) Cloud subsystem</title>
        <p>
          SMAD project tasks did not involve any digital twin
related activities, so Eclipse Ditto [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ] service was decided to
be removed from SMAD-specific Kuksa. If future use-cases
of SMAD environment involve digital twin activities, support
for Eclipse Ditto service could implemented into
SMADspecific Kuksa.
        </p>
        <p>
          Similarly, Kuksa Appstore service [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] was also outside
of context of SMAD project and it was decided to be left out
from SMAD-specific Kuksa. Application management
practices for in-vehicle subsystem, similar to those of Kuksa
Appstore could be implemented to SMAD-specific Kuksa in
the future.
        </p>
        <p>
          Since development SMAD-specific Kuksa will continue
after SMAD project, we had the opportunity to narrow down
the expected use of Eclipse hawkBit [
          <xref ref-type="bibr" rid="ref35">35</xref>
          ] compared to Kuksa.
It’s importance and usefulness in over-the-air (OTA) updates
of in-vehicle system is without question, but in first version of
SMAD-specific Kuksa, it will only be used to perform OTA
updates of whole software image of in-vehicle subsystem, i.e.
update the AGL UCB distribution combined with all
necessary software of the SMAD-specific in-vehicle
subsystem. As with Kuksa, hawkBit service would be used to
update and install new, user specific software on in-vehicle
subsystem, but this feature would be developed in the future,
after SMAD project.
        </p>
        <p>With similar justification of future development activities,
we decided that during SMAD project, SMAD-specific Kuksa
won’t provide data gathering or data visualization features.
Instead, an example integration to external data gathering
system using northbound AMQP connection of cloud
subsystem would be done. During SMAD project an external
integration is better option, as we do not know if SMAD
environment should even offer data gathering as an integrated
service. We would find this out during SMAD project.
Development of data gathering and visualization features
integrated services might happen in the future, outside of
SMAD project. For now, data gathering would only involve
gathering of operational data of cloud subsystem components.
Grafana service would be used for visualization of this data.</p>
        <p>
          At start of SMAD project, we did initial investigation on
deployment of Kuksa cloud subsystem. It seemed that
deployment of various Kuksa cloud subsystem services was
not uniform; deployment instructions, examples, and models
of cloud subsystem services differed from each other and
automated set up of infrastructure seemed lacking [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ]. We
decided to implement our own, more uniform infrastructure
deployment automation. All infrastructure-as-a-service (IaaS)
related automation would utilize Terraform tool [
          <xref ref-type="bibr" rid="ref54">54</xref>
          ] and
Helm tool [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ] deploying to Kubernetes cluster [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ] set up at
the selected IaaS cloud service. Necessary secrets, storage and
authentication and authorization management would be
implemented using Terraform and Helm, using other tools
only when strictly necessary. Some automation scripts
utilizing Helm and Terraform had already been done in
context of Kuksa cloud services deployment [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ].
Infrastructure set up part of these scripts was not adequate, but
service deployment part of the scripts could have been used in
SMAD. However, scripts deployed unnecessary components
for SMAD-specific Kuksa in interlinked way, which might
have required lot of changes to the deployment scripts, to
deploy a SMAD-specific Kuksa with them. We decided to use
these scripts for reference when needed.
        </p>
        <p>
          Since Eclipse Hono [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ] was identified to be key enabler
for SMAD related work, we decided to focus our initial effort
on deployment of Hono. Deployment of other services of
SMAD-specific Kuksa, would be adopted based on our
experienced gained with Hono deployment. From
investigation of Hono deployment scripts and documentation
[
          <xref ref-type="bibr" rid="ref47">47</xref>
          ] we learned that there is quite good monitoring and tracing
support available in Hono, but this was not mentioned in
Kuksa documentation.
        </p>
      </sec>
      <sec id="sec-7-6">
        <title>3) Data communication</title>
        <p>
          Data communication options for devices connecting to
cloud subsystem provided by Kuksa were more than adequate
for SMAD. In SMAD-specific Kuksa we would only utilize
mutual transport layer security [
          <xref ref-type="bibr" rid="ref55">55</xref>
          ], i.e. mTLS, protected
MQTT protocol for communications between vehicle and
Kuksa cloud subsystem. From security point-of-view, this
meant that support for unnecessary protocols would need to
be disabled in Hono. In case we would see a need to expand
selection of supported protocols this could be done by
enabling disabled protocol adapters or if needed, implement
new ones.
        </p>
        <p>Regarding to communication between Kuksa cloud
subsystem and external applications, Kuksa supports only
AMQP 1.0 protocol. We identified that this limitation might
affect usefulness of Kuksa for potential users of SMAD
environment. After further investigation of Eclipse Hono
architecture it was decided that we won’t add support for other
protocols for northbound connections during SMAD project.
This would be too big task and since Hono is under active
development we wanted to see if new development would
bring support for new protocols.</p>
        <p>V2X research activities were included in SMAD project
targets, but it was not clear if this V2X research would benefit
from use Kuksa in-vehicle subsystem and to what extent we
could even add support for direct vehicle-to-vehicle (V2V)
and vehicle-to-infrastructure (V2I) into in-vehicle subsystem.
To address this, we decided that V2V or V2I would not be
included in SMAD-specific Kuksa at all.</p>
        <sec id="sec-7-6-1">
          <title>Rationale Remarks</title>
          <p>3
4
9
10
11
12
# Decision
In-vehicle subsystem
1 rAeGmLovHedM. I and application framework will be
2 SBMitBAaDke-stpoeocli.fic AGL UCB customized with
Only Kuksa.val be included from Kuksa</p>
          <p>No secure boot in 1st version</p>
        </sec>
        <sec id="sec-7-6-2">
          <title>Cloud subsystem</title>
          <p>5 rEecmliopvseedD.itto and Kuksa Appstore will be
6 OVinsluyaloispaetrioatnioonfamlemtreictrsicussiwngillGrbaefagnaathered.
7 s1csrtipvtesrfsoiornHofoncouisnessteoand Kcuusktsoam deployment
8 hSaMwAkBDi-tspweicllifbice AusGedLtUo CinBstiamllaognelsy. complete
Data communication</p>
          <p>Only mTLS MQTT support in 1st version
Mutual TLS increases security.</p>
          <p>Devices authenticate with X.509 certificates
Identity management integrated into AGL
UCB build process
No additional northbound protocols will be
implemented.</p>
          <p>Keycloak will be removed
Improves security, enables identity management of
devices
Improves security and traceability when compared
to manual identity management activities
Hono is actively developed. More northbound
protocols might come with new Hono versions.</p>
          <p>Only Kuksa Appstore utilized Keycloak
No use for HMI since no GUI in SMAD. No added
security value from application framework.</p>
          <p>BitBake build process provides software
traceability
No added value gained from other Kuksa
middleware.</p>
          <p>Kuksa hardware doesn’t support secure boot
No use in SMAD project context.</p>
          <p>SMAD Kuksa integrates into external data analysis
services. Hono monitoring supports Grafana.</p>
          <p>Hono identified to be most important component.</p>
          <p>Custom deployment needed
Schedule restrictions prevent implementing OTA
support for individual applications.
Evaluate other benefits of application
framework if time permits.</p>
          <p>If time permits evaluate Swissbit PS-45
secure boot like solution
If digital twin use cases arise in the future,
Ditto support will be implemented.</p>
          <p>Terraform and Helm will be used to
implement deployment automation.</p>
          <p>OTA install of individual application will
be implemented in future.</p>
          <p>Other protocols will be supported in
future.</p>
          <p>Smallstep CA and tooling will be used.</p>
          <p>Keycloak support could be implemented in
future, for non-Appstore purposes.</p>
          <p>
            Authorization and authentication in Kuksa are handled by
Keycloak [
            <xref ref-type="bibr" rid="ref37">37</xref>
            ] and Hono services. Eclipse Kuksa reference
implementation implies that Appstore is the only service
utilizing Keycloak and Appstore service is not going to be
included in SMAD-specific Kuksa, we decided that Keycloak
will removed. We did identify need for authentication service
such as Keycloak might arise in the future, especially on
authentication of northbound AMQP connections. Apache
Qpid, the AMQP message broker used in Kuksa has good
support for multiple types of authentication mechanisms as
documented by [
            <xref ref-type="bibr" rid="ref56">56</xref>
            ]. As with the decision to remove data
gathering support from cloud subsystem, we would gain more
information about requirements for northbound connection
authorization during SMAD project. This also supported the
decision to remove Keycloak from SMAD-specific Kuksa at
least for now.
          </p>
          <p>
            We decided that device authentication of SMAD-specific
Kuksa happens via X.509 certificates, as we could do identify
management and access control of devices with certificate
management practices. Neither Kuksa or Eclipse Hono define
or recommend any practices or tooling for X.509 certificate
management, so we considered that Smallstep CA software
[
            <xref ref-type="bibr" rid="ref57">57</xref>
            ] was a good candidate for certificate management in
SMAD-specific Kuksa. Smallstep CA provides tooling [
            <xref ref-type="bibr" rid="ref58">58</xref>
            ] to
issue client certificates for devices and utilize Smallstep CA
certificate authority and possible intermediate certificates in
Hono to manage authorization of devices. We envisioned that
we will integrate identity management of devices into
SMADspecific in-vehicle subsystem build process; we would
generate a unique certificate signing requests (CSR) during
the build, include the CSR in the built image and once the
device flashed with the resulting is powered on it would
exchange the CSR to a proper X.509 client certificate issued
for this specific device.
          </p>
        </sec>
      </sec>
      <sec id="sec-7-7">
        <title>C. Building and evaluating SMAD-specific Kuksa, the design cycle</title>
        <p>
          We started development of SMAD-specific Kuksa by
defining an implementation plan based on requirements
deducted from SMAD project proposal, description of Kuksa
framework based on APPSTACLE project deliverables,
documentation and source code available for Eclipse Kuksa
reference implementation [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], and our design
decisions described in chapter 5.2 and summarized in Table
I.
        </p>
        <p>
          As we started our first implementation effort, we run into
issues which forced us to rethink our implementation plan
from a minimum-viable-product (MVP) point-of-view [
          <xref ref-type="bibr" rid="ref59">59</xref>
          ].
Based on refined implementation plan we implemented a
SMAD-specific MVP cloud subsystem and MVP in-vehicle
subsystem and integrated our test vehicle to the MVP
subsystems. Each subsection describes how corresponding
implementation effort was done.
        </p>
      </sec>
      <sec id="sec-7-8">
        <title>1) Implementation plan</title>
        <p>Our initial plan was to first implement the cloud
subsystem, verify that the implementation works and then
continue to implement in-vehicle subsystem. If possible,
software from in-vehicle subsystem would be used to verify
that cloud subsystem works as expected and during
development of in-vehicle subsystem, cloud subsystem would
be utilized to identify possible problems in the integration of
the two subsystems.</p>
        <p>To verify our SMAD-specific Kuksa implementation, we
needed to define a suitable test case. We first defined the
overall objective of test case; enable transfer of data read from
sensors of the vehicles first to cloud subsystem and then to an
application reading the data from the cloud subsystem. At this
point, we did not exactly know what protocols we would use
for data transfer between in-vehicle and cloud subsystem and
we did not know what data we would read from the car or what
software would be used to read the data. Given the number of
unknowns, the test case would be built incrementally. Test
case would first verify cloud subsystem implementation; data
can be sent to southbound APIs and same data can be read
from northbound APIs. Then the test case would verify
invehicle subsystem implementation; this essentially meant
verifying that our in-vehicle subsystem could send data to our
cloud subsystem. In addition, test case would also be used to
verify integration of in-vehicle subsystem to our test vehicle;
this meant verifying that data can be read from vehicles
sensors utilizing our in-vehicle subsystem implementation
software and hardware.</p>
        <p>Given the requirement to aim for production grade
operation and maintenance we decided to focus on
implementing robust IaaS set up and service deployment
automation. Self-hosted Kubernetes was not an option for us
and as we generally wanted to avoid tight vendor locking with
any cloud provider, we decided to clearly separate IaaS and
service deployment automation from each other. There would
be strict separation of concerns; IaaS set up automation would
utilize Terraform tool and based on our experience gained on
implementing the IaaS set up automation, Helm tool or
combination of Terraform and Helm would be used for service
deployment. Service deployment would not depend on the
selected IaaS provider and in case there is a need to deploy
SMAD test platform to some other cloud provider than the
initially selected Microsoft Azure, this would only mean
implementation of new IaaS set up automation. Service
deployment should work as it works on any Kubernetes
cluster despite the underlying infrastructure. As we were
drafting the implementation plan, we learned that
SMADspecific Kuksa is going to be utilized in university study
courses. This introduced a need to make our deployment
automation support a use-case where multiple cloud
subsystems would be deployed to Azure on-demand and
destroyed after the corresponding university course had
ended.</p>
      </sec>
      <sec id="sec-7-9">
        <title>2) 1st implementation effort – Refined implementation plan</title>
        <p>
          After initial implementation plan had been defined, we
progressed towards actual implementation by first creating
minimal Terraform automation to set up Azure Kubernetes
Cluster (AKS) [
          <xref ref-type="bibr" rid="ref44">44</xref>
          ] and then started developing our
SMADspecific deployment automation using Kuksa deployment
documentation as reference. We soon realized that this would
be too big task with high risk of failure. As we had observed
before deployment instructions and scripts of Kuksa seemed
complex and lacking and modifying them from
SMADspecific Kuksa without having a working deployment as a
reference point for modifications, could be very
timeconsuming process.
        </p>
        <p>We decided that deployment scripts would be
implemented incrementally following the incremental
implementation of our test case; we would not try implement
deployment automation for complete SMAD-specific cloud
subsyste, in one go, but rather implement absolutely minimum
required to evaluate our test case and as test case evolves our
deployment scripts would evolve. We felt that this approach
would be best supported by defining a minimum viable
product (MVP), which defined only the strictly necessary to
realize our overall test case objective. This meant that
functionality such as identity management with X.509
certificates, support for OTA update of in-vehicle subsystem
software image and use of mTLS was postponed until MVP
would be finished.</p>
      </sec>
      <sec id="sec-7-10">
        <title>3) 2nd implementation effort – cloud subsystem</title>
        <p>As Eclipse Hono was identified as the most important
component in the MVP of SMAD-specific Kuksa we started
closer investigation of Hono and its deployment
documentation. In contrast to Kuksa, Eclipse Hono
documentation was generally very comprehensive, and its
deployment documentation gave a clear instructions on how
one deploys Hono. Once we successfully deployed Hono on a
local development instance of Kubernetes, we felt confident
that at this point no further investigation of Hono was
necessary. Hono documentation gave detailed and explicit
instruction on deploying Hono on AKS, which to us meant
that we could focus our efforts on implementing Terraform
scripts for cloud infrastructure set up and then work out
possible small incompatibilities with deploying Hono on AKS
infrastructure set up by our automation scripts. Hono
deployment would eventually work, IaaS automation was
more unknown. Given that we were committed to incremental
building, following requirements of SMAD-specific Kuksa
MVP, we decided that we would implement set up of access
control, container registry, persistent volume management,
secrets management and other production grade features only
to extent required to support out current MVP
implementation.</p>
        <p>
          After we successfully deployed Hono on AKS set up by
our Terraform scripts, we needed to implement our test case.
Since at this point test case would only be able test the
minimum viable implementation of SMAD-specific Kuksa
cloud subsystem, i.e. Hono, and we had committed to use
invehicle subsystem software for evaluation of cloud subsystem,
we decided that our test case would replicate some parts of a
newly released kuksa.val demo [
          <xref ref-type="bibr" rid="ref60">60</xref>
          ]. By re-creating key parts
of the demo as we would advance to in-vehicle subsystem
implementation and vehicle integration, we could iteratively
develop our test case as we had planned. We deployed
kuksa.val software stack on laptop and user mocked GPS data
which kuksa.val transformed the GPS data into GENIVI VSS
messages and sent them to Hono instance in AKS using
MQTT protocol. Node-RED [
          <xref ref-type="bibr" rid="ref61">61</xref>
          ] dashboard received the
messages from Hono over AMQP protocol and displayed
them in a web browser UI. Implementation of our test case
was fast and relatively easy as we extensively re-used source
code available from [
          <xref ref-type="bibr" rid="ref51">51</xref>
          ]. We successfully verified our cloud
subsystem implementation and progressed to implement
SMAD-specific in-vehicle subsystem.
        </p>
      </sec>
      <sec id="sec-7-11">
        <title>4) 3rd implementation effort – in-vehicle subsystem</title>
        <p>
          Implementation of in-vehicle subsystem started with
examination of AGL UCB and its build process. We tried to
replicate build of Kuksa specific AGL UCB image and failed.
Build instructions of Kuksa in-vehicle subsystem in [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] made
an outdated reference to AGL UCB version not available
anymore. This reference was easily fixed, and we successfully
built an AGL UCB image. However, even though we had
successfully built an AGL UCB image with Kuksa in-vehicle
software included, we could not get this image to start on
Kuksa development and testing hardware. The image started
on Raspberry Pi 3 device, but since we had the impression that
it should start on Kuksa development and testing hardware,
we, despite successfully building an image, could not trust that
we had built a working image; essentially we didn’t have a
working reference point to compare changes we were about to
make. Since considerable amount of time was used to get to
this point, we did not want to continue troubleshooting the
build process of AGL UCB, as we were not confident that we
would find out why the image was not starting in timely
manner. Failing to do so waste considerable amount of SMAD
project development effort. We decided to follow MVP
approach and remove need for AGL UCB and BitBake and
use a ready-made Raspberry Pi OS [
          <xref ref-type="bibr" rid="ref62">62</xref>
          ] (formerly Raspbian).
We made clear separation between AGL UCB and BitBake; if
time permits, build a Raspberry Pi OS based SMAD-specific
in-vehicle subsystem image with BitBake and keep the
repeatability and software traceability offered by BitBake.
Use of AGL UCB and use BitBake would be implemented
later, possible as future development. It is worth noting that
by examining and troubleshooting the build process, we
gained valuable experience about BitBake and customization
of AGL UCB architecture. We also experimented with build
process additions using QEMU [
          <xref ref-type="bibr" rid="ref63">63</xref>
          ], Packer tool [
          <xref ref-type="bibr" rid="ref64">64</xref>
          ] and
Packer builder ARM -plugin [
          <xref ref-type="bibr" rid="ref65">65</xref>
          ] and defined support for
device specific customizations in a pre-deployment process
and an initialization process, i.e. first boot customization
process, which allows integration of the planned identity
management processes to build process of SMAD-specific
invehicle subsystem. This information would be utilized in
future development of SMAD-specific Kuksa.
        </p>
        <p>After we changed AGL UCB to Raspberry Pi OS it was
very straightforward to install kuksa.val into in-vehicle
subsystem and successfully verify our SMAD-specific
invehicle subsystem MVP implementation. Details in Table II</p>
      </sec>
      <sec id="sec-7-12">
        <title>5) 3rd implementation effort – in-vehicle subsystem</title>
        <p>After implementing our in-vehicle subsystem MVP we
decided integrate test vehicle to SMAD-specific subsystems.
In essence, the integration meant that we would need to
implement everything required to evaluate the test case we
defined at the beginning of implementation. Since data
transfer from cloud subsystem to external application and
from in-vehicle subsystem to cloud subsystem were verified
to be working, our main goal was to read data from sensors of
test vehicle.</p>
        <p>
          We decided to use vehicle’s existing CAN busses to access
sensor data of the vehicle. Kuksa development and testing
hardware contains an integrated CAN bus interface IC
(integrated circuit), STN2120 [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ], we decided to utilize that
for interacting with the vehicle. Kuksa development and
testing hardware is designed to utilize standard
on-boarddiagnostic connector (i.e. OBD connector) and as such it
would be connected OBD connector of Toyota for CAN bus
interaction.
        </p>
        <p>We evolved our test case accordingly. Instead of mocked
GPS data live data from CAN bus would be read and send to
cloud subsystem as suitable GENIVI VSS message.</p>
        <p>
          For the software level interaction with CAN bus, we
needed to consider utility of our MVP in context of whole
moving test platform. MVP is not a throwaway prototype and
we choices we make now should be useful when the system is
developed further. We considered two options, ELM
command protocol [66, p.10] and SocketCAN protocol [
          <xref ref-type="bibr" rid="ref67">67</xref>
          ].
kuksa.val contained some example code for interacting with
CAN bus interface chip using ELM command protocol and as
STN2120 supports this protocol, example code from
kuksa.val could be used to fetch data from CAN busses of
Toyota. ELM command protocol is a request-response
protocol aimed for onboard diagnostics (OBD) of vehicles. It
can be used for general purpose interaction over CAN bus, but
protocol is designed to support especially OBD use-cases.
When using ELM command protocol to interact with a CAN
bus, one requests the CAN bus interface IC to send or receive
specific CAN frames. There is also a special monitoring mode
where the IC tries to capture all CAN frames in the bus.
Communication with the IC happens over serial port using
ELM specific AT commands. SocketCAN, in contrast to ELM
protocol, can be seen as a subclass of standard network
interface like an Ethernet or a Wi-Fi connection. Interface
used to interact with the CAN interface, e.g. serial or USB
port, is abstracted away and SocketCAN exposes CAN
interfaces as network interfaces through use of Berkeley
sockets API and Linux network stack. CAN interface, when
interfaced through SocketCAN, can be utilized with
abundance of features and tools available for interacting with
Linux network stack. There are lot of open-source software
libraries for communicating over ELM command protocol,
but we felt that SocketCAN with well-known and mature
interface provided by Berkeley sockets and Linux network
stack, provides more interoperability over various vendors and
products. Communication model of SocketCAN differs
greatly from ELM command protocol, since by design one
does not request specific messages from the CAN interface IC
but filtering of CAN frames happens via functionality
provided by Linux kernel. ELM command protocol is a
halfduplex protocol, which means that simultaneous receiving and
sending of CAN frames is impossible. SocketCAN does not
have such restriction as long as the underlying CAN bus
interface IC supports full-duplex communication.
        </p>
        <p>
          We decided to utilize SocketCAN but unfortunately
vendor support for SocketCAN in ICs that utilize ELM
protocol is, to our best knowledge, non-existing and STN2120
was not an exception. There is an open-source implementation
of Linux kernel driver, elmcan [
          <xref ref-type="bibr" rid="ref68">68</xref>
          ], which exposes ELM
protocol using CAN bus interface devices through
SocketCAN protocol exists. This implementation, forced by
limitations of the ELM protocol utilizing ICs, has many
shortcomings compared to CAN bus interface IC with vendor
provided SocketCAN support. This essentially meant that if
we were to use the STN2120, we could not utilize SocketCAN
in a trustworthy way. To overcome this, we decided that we
will evaluate trustworthiness and performance of
STN2120elmcan combination by comparing output of CAN bus
readouts done with STN2120-elmcan to readouts done with
Kvaser Leaf II CAN bus interface [
          <xref ref-type="bibr" rid="ref69">69</xref>
          ]. Kvaser provides
vendor level SocketCAN support, and we felt that it offers a
practical reference point to evaluate performance and
trustworthiness (i.e. correctness of interaction with CAN bus)
of CAN traffic reading with STN2120-elmcan combination.
        </p>
        <p>
          Since our test case required to send GENIVI VSS
messages to cloud subsystem, we had to transform the sensor
data contained in a CAN frame to a GENIVI VSS message.
SocketCAN does not decode content of CAN frames it
receives or sends; CAN frame decoding into meaningful
messages happens outside of SocketCAN, in the software
utilizing SocketCAN. As kuksa.val already provided means to
decode CAN frames to human-readable format with CAN bus
database files (i.e. DBC files) and to transform the message to
GENIVI VSS messages via manual mapping, it was a natural
choice to use kuksa.val for CAN frame decoding. Since DBC
files are typically vehicle manufacturer or even vehicle model
specific we needed to obtain or implement our own suitable
DBC file for decoding CAN bus traffic of the test Toyotas.
Opendbc project of comma.ai [
          <xref ref-type="bibr" rid="ref70">70</xref>
          ] contained a Toyota specific
DBC file suitable to be used for our MVP implementation.
        </p>
        <p>When we tried utilizing STN2120 with kuksa.val we
immediately found out that we cannot communicate with the
STN2120. In our research on Kuksa described in section 5.2,
we utilized Kuksa development and testing hardware
documentation to determine the capabilities of the device and
now during the implementation we used STN2120 data sheet
to find out how communication with STN2120 should be
done. STN2120 datasheet contained some remarks about
correct communication baud rates, which we tested without
success. It was clear that STN2120 on our Kuksa development
and testing hardware had been configured to use different
baud rate from those mentioned in STN2120 datasheet. At the
time of troubleshooting, Kuksa development and testing
hardware documentation didn’t contain information about
software configuration of the hardware and even with
significant search effort we couldn’t find correct baud rate
setting. We reverted to deduce correct baud rate by monitoring
serial communication lines of STN2120 with an oscilloscope
during power up of the IC. We later learned by chance that
correct baud rate setting could have been found from
configuration files of kuksa.val. Once we had a correct baud
rate, we successfully configured elmcan to interface with
STN2120.</p>
        <p>After communications problems with STN2120 were
solved we started interacting with the Toyota through OBD
connector. After first test we realized that OBD connector in
our test Toyota was probably directly wired to gateway
module which prevented us from reading CAN frames
containing data from vehicle’s sensors. Although we could not
find a definitive information on this matter, we strongly feel
that Toyota only supports ISO 14229-1, i.e. unified diagnostic
services (UDS) protocol to communicate with the gateway
module. This essentially meant that we would have to fetch
vehicle sensor data in request-response manner, and we could
not utilize kuksa.val CAN frame decoding functionality
easily. Implementing UDS support would be too big effort
since we wanted to finish our MVP implementation and verify
our complete test case during SMAD project. As an alternative
approach, we connected Kuksa development and testing
hardware directly into CAN busses available in Toyota wiring
harness, bypassing the gateway module between OBD
connector and CAN busses. This way we could observe CAN
bus traffic without explicitly requesting specific sensor values
with UDS protocol.</p>
        <p>Once necessary wiring harness modifications were done,
we indeed observed much more CAN bus traffic than from
OBD connector and kuksa.val CAN frame decoding
functionality produced meaningful human readable sensor
data.</p>
        <p>We did initial comparison of CAN bus readouts made with
STN2120 through elmcan SocketCAN implementation and
Kvaser Leaf. We could see that CAN Frames received with
elmcan appear in the same order as the corresponding CAN
Frames appear when received with Kvaser Leaf. Thorough
comparison of trustworthiness of using STN2120 through
elmcan SocketCAN implementation and Kvaser Leaf was left
to further studies.</p>
        <p>Table II summarizes our implementation process by
describing functionality provided by the MVP
SMADspecific Kuksa system after each implementation effort.</p>
        <p>Due to challenges we faced in the implementation process
in-vehicle build process customization, identity management
with X.509 certificates, support for OTA update of in-vehicle
subsystem software image and use of mTLS will left for future
development.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>VI. RESULTS AND LESSONS LEARNED</title>
      <p>
        Building the SMAD-specific Kuksa system for the SMAD
environment was started on the basis of available Eclipse
Kuksa framework documentation [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]–[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] but there were a
number of unknow details as presented in section 5.3.1. Some
of the components of Kuksa framework turned out to be
unnecessary in the context of the SMAD project, and some
relevant components required modifications to address
SMAD-specific needs. During the implementation of
SMADspecific Kuksa, we also identified some shortcomings in the
Kuksa framework documentation, which lead us to drastically
change our design during the implementation.
      </p>
      <p>
        The design changes during implementation caused further
that we were not able to build a moving test platform within
the timeline of the SMAD project to the extent defined in the
SMAD project plan. However, we were able to build a
baseline Kuksa solution to be used in the projects following
SMAD. The incremental approach and focusing on
implementing an MVP [
        <xref ref-type="bibr" rid="ref59">59</xref>
        ] to evaluate our test case turned
out to be a correct way to progress, as presented in section
5.3.2.
      </p>
      <p>Kuksa.val deployed to a laptop
sends mocked GPS data as GENIVI
VSS messages to cloud subsystem
over MQTT protocol through LAN</p>
      <p>connection.</p>
      <p>Raspberry Pi OS deployed to Kuksa
development and testing hardware.</p>
      <p>Kuksa.val, installed to Kuksa
development and testing hardware,
sends mocked GPS data as GENIVI
VSS messages to cloud subsystem
over MQTT protocol through LAN</p>
      <p>connection.</p>
      <p>Raspberry Pi OS deployed to Kuksa
development and testing hardware.</p>
      <p>Kuksa.val, installed to Kuksa
development and testing hardware,
sends live data read from vehicle</p>
      <p>sensors over SockerCAN as
GENIVI VSS messages to cloud
subsystem over MQTT protocol
through LAN connection.</p>
      <p>Eclipse Hono, deployed to AKS
using custom made automation
scripts, receives mocked device
telemetry messages through
MQTT and sends the messages
to external application over
AMQP
Eclipse Hono, deployed to AKS
using custom made automation
scripts, receives mocked device
telemetry messages through
MQTT and sends the messages
to external application over
AMQP.</p>
      <p>Eclipse Hono, deployed to
AKS using custom made
automation scripts, receives
device telemetry messages
through MQTT and sends the
messages to external
application over AMQP.</p>
      <p>
        As Eclipse Hono [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] was identified as the most important
component in the MVP, we started closer investigation of
Hono and its deployment documentation [
        <xref ref-type="bibr" rid="ref47">47</xref>
        ]. In contrast to
Kuksa framework, Hono documentation was generally very
comprehensive, and its deployment documentation gave clear
instructions on how one deploys Hono. We succeeded in
implementing deployment automation and the container
registry, persistent volume management, secrets management,
other production grade features only to extent required to
support the SMAD-specific cloud subsystem MVP
implementation, and the test case relevant for the MVP, as
presented in section 5.3.3.
      </p>
      <p>
        For the implementation of the SMAD-specific in-vehicle
subsystem, a closer examination of AGL UCB [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] and its
build process was necessary. We successfully built an AGL
UCB image with Kuksa in-vehicle software included, but we
didn’t manage to start this image on Kuksa development and
testing hardware. Due to the project’s timeline we decided to
omit use a ready-made Raspberry Pi OS image instead,
because the hardware was not tied to a specific version of
Linux. After change from AGL UCB to Raspberry Pi OS it
was straightforward to implement the rest of the
SMADspecific in-vehicle subsystem MVP and successfully verify it.
We will utilize build process and tools of [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] in future
development of SMAD-specific in-vehicle system.
      </p>
      <p>After our in-vehicle subsystem MVP was built, we
integrated the solution to a test vehicle. The vehicle
integration had a set of low-level technical problems to be
solve, as presented in section 5.3.5. We did manage to
successfully integrate SMAD-specific subsystems with test
vehicle using Kuksa development and testing hardware.</p>
      <p>As a summary, our results and experiences indicate that
despite its documentation shortcomings, the Eclipse Kuksa
open-source framework provides new users and projects with
a usable basis for building case-specific solutions for
vehicleto-environment communication and control, combining
invehicle solutions, data communications, and cloud services.</p>
    </sec>
    <sec id="sec-9">
      <title>VII. DISCUSSION AND CONCLUSIONS</title>
      <p>
        In this study, we explored how to build a case-specific,
intelligent automotive data system utilizing the Eclipse Kuksa
framework [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] developed in ITEA 3 APPSTACLE [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
and Eclipse Kuksa projects [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The study was carried out as a
part of the SMAD research project of the University of Oulu
by following the guidelines of Design Science Research
(DSR) as defined by Hevner et al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], Hevner [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and
Hevner &amp; Chatterjee [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The key target of the SMAD project
was to build an intelligent mobile test platform for automotive
research of our university and, thus, this study was a kick-off
for possible deployment of the Kuksa framework in our future
research on open automotive software systems.
      </p>
      <p>By following the guidelines of DSR we were able to build
minimum-viable version of automotive data system, the
SMAD-specific Kuksa, addressing a set of requirements of an
intelligent moving test platform as defined in the SMAD
project plan. We estimate that current implementation fulfills
criteria for Technology Readiness Level 3 as some original
project requirements were dropped, for schedule and resource
circumstance of the project. Section 5 presents the building
process in detail providing an answer to the research question
RQ1. Our work-in-progress implementation of
SMADspecific Kuksa MVP can be found in [72].</p>
      <p>Kuksa turned out to be an open and modular framework,
customizable for a target system that was different from the
ones developed in the APPSTACLE project. Needed
customizations varied between different parts of the
framework. As an answer to research question RQ2 we
summarize our design decisions in table I.</p>
      <p>Building a novel, case-specific automotive data system
based on the Kuksa framework can be estimated to be
demanding, though the framework was technically modular
and customizable. This was expectable result as the
framework was built in a distributed manner in the
APPSTACLE project - a research project with 21 partners
having various research interests and targets. The biggest
obstacles for deployment (RQ3) were our limited initial
experience and knowledge of the framework, shortages in the
Kuksa documentation, and technical problems we
encountered during implementation as presented in detail in
section 5.</p>
      <p>The easiest part to reuse turned out to be the cloud system,
mostly of excellent documentation of Eclipse Hono and
dropping out the most challenging use cases of the SMAD
project plan. In-vehicle subsystem in combination with Kuksa
hardware turned out to be the most difficult. That was
expectable because the custom-build hardware and use of
AGL UCB, were novel for our researcher team.</p>
      <p>Although we didn’t actively participate in Eclipse Kuksa
community in course of this study, we feel that becoming an
active member of Eclipse Kuksa community, would have
helped us in our SMAD-specific Kuksa implementation, as we
would have been able to ask details not covered by Eclipse
Kuksa documentation. Active role in Kuksa community might
have also helped us to coordinate our work with ongoing
development effort of Eclipse Kuksa community and possibly
contribute back to community more than we now did alone.
We feel that active community of an open-source project
fosters active and productive development effort, and this
would foster evolution of Eclipse Kuksa framework.</p>
      <p>We summarize the results of our study by noting that
Kuksa is a customizable framework, deployable in different
case-specific automotive data systems, but requiring lots of
low-level technical knowledge on how to configure, build and
use its open-source software packages. Customization needs
of Kuksa are strongly context dependent, generalized
requirement guidelines for customization might be achievable
with further studies.</p>
      <p>Our targets for future research on the Kuksa framework
cover solving of the technical problems that were left unsolved
in the SMAD project, examining scalability of the built
system, and improving transferability of our experiences.
Once ready, SMAD-specific Kuksa will be utilized to support
our and other future research on automotive software.</p>
    </sec>
    <sec id="sec-10">
      <title>ACKNOWLEDGMENT</title>
      <p>This study was funded by European Regional
Development Fund, Oulu Civil Engineering Foundation,
BusinessOulu and Finnish Transport and Communications
Agency. Part of the described work has been done in context
of Arctic 5G project. We want to thank all colleagues and
partners who worked in the SMAD project, especially student
group N. Lunden, J. Holmi, J. Kosola, M. Saarinen and S.
Wickström, who worked with us on implementing monitoring
and tracing support for SMAD-specific cloud subsystem.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>APPSTACLE</given-names>
            <surname>Project</surname>
          </string-name>
          , “
          <article-title>APPSTACLE project page”</article-title>
          , ITEA3, [Online], Available: https://itea3.org/project/appstacle.html ,
          <source>[Accessed: Apr. 11</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>[2] “Eclipse KUKSA community website”</article-title>
          , Eclipse Foundation, [Online], Available: https://www.eclipse.org/kuksa/ , [Accessed: Apr.
          <volume>12</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3] “Eclipse Kuksa documentation”, Eclipse Foundation, [Online], Available: https://www.eclipse.org/kuksa/documentation/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4] eclipse/kuksa.invehicle, Eclipse Foundation,
          <year>2021</year>
          , [Software], Available: https://github.com/eclipse/kuksa.invehicle ,
          <source>[Accessed: Apr. 18</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5] eclipse/kuksa.cloud, Eclipse Foundation,
          <year>2021</year>
          , [Software], Available: https://github.com/eclipse/kuksa.cloud ,
          <source>[Accessed: Apr. 18</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6] eclipse/kuksa.ide, Eclipse Foundation,
          <year>2020</year>
          , [Software], Available: https://github.com/eclipse/kuksa.ide ,
          <source>[Accessed: Apr. 18</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7] eclipse/kuksa.hardware, Eclipse Foundation,
          <year>2021</year>
          , [Software], Available: https://github.com/eclipse/kuksa.hardware ,
          <source>[Accessed: Apr. 23</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8] “SMAD project homepage”, [Online], Available: https://www.smad.fi/ , [Accessed: Apr.
          <volume>16</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9] “SMAD project proposal”, [Online], Available: https://www.eura2014.fi/rrtiepa/projekti.php?projektikoodi=A74419 &amp;lang=en , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Hevner</surname>
          </string-name>
          et al.,
          <source>“Design Science in Information Systems Research”, Manag. Inf. Syst. Q.</source>
          , vol.
          <volume>28</volume>
          , p.
          <fpage>75</fpage>
          ,
          <string-name>
            <surname>Mar</surname>
          </string-name>
          .
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Hevner</surname>
          </string-name>
          , “A Three Cycle View of Design Science Research”,
          <string-name>
            <given-names>Scand. J.</given-names>
            <surname>Inf</surname>
          </string-name>
          . Syst., vol.
          <volume>19</volume>
          ,
          <string-name>
            <surname>Jan</surname>
          </string-name>
          .
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Hevner</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          , “Design Science Research in Information Systems”,
          <source>Des. Res. Inf. Syst.</source>
          , pp.
          <fpage>9</fpage>
          -
          <lpage>22</lpage>
          ,
          <year>2010</year>
          , doi: 10.1007/978-1-
          <fpage>4419</fpage>
          -5653-
          <issue>8</issue>
          _
          <fpage>2</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13] eclipse/kuksa.cloud - Appstore, Eclipse Foundation,
          <year>2020</year>
          , [Software], Available: https://github.com/eclipse/kuksa.cloud/tree/master/kuksa-appstore ,
          <source>[Accessed: Apr. 18</source>
          ,
          <year>2021</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <article-title>APPSTACLE project, “Deliverable 1.1 - Specification of In-car Software Architecture for Car2X Applications”</article-title>
          , [Online], Available: https://itea3.org/project/appstacle.html ,
          <source>[Accessed: Apr. 11</source>
          ,
          <year>2021</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R.</given-names>
            <surname>Höttger</surname>
          </string-name>
          , “
          <article-title>Driving the Future Connected Vehicle with Eclipse Kuksa“</article-title>
          ,
          <source>Eclipse IoT Day Grenoble</source>
          <year>2019</year>
          , [Presentation], Available: https://wiki.eclipse.org/Eclipse_IoT_Day_Grenoble_
          <year>2019</year>
          , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wagner</surname>
          </string-name>
          , J. Tessmer, “An Introduction to Eclipse Kuksa”,
          <source>Webinar on Eclipse Kuksa</source>
          ,
          <year>2019</year>
          , [Presentation] Available: https://at.projects.genivi.org/wiki/pages/viewpage.action?pageId=
          <fpage>349</fpage>
          <lpage>63516</lpage>
          #Cloud&amp;ConnectedServicesHistory&amp;MinutesofBoFdiscussions , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>“AGL Unified Code</surname>
            <given-names>Base”</given-names>
          </string-name>
          , Automotive Grade Linux, [Online] Available: https://www.automotivelinux.org/software/unified-codebase/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <article-title>“Automotive Grade Linux project homepage”</article-title>
          , Automotive Grade Linux, [Online], Available: https://www.automotivelinux.org/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19] “eclipse/kuksa.invehicle - AGL build instructions”,
          <source>Eclipse Foundation</source>
          ,
          <year>2019</year>
          , [Online], Available: https://github.com/eclipse/kuksa.invehicle/blob/master/aglkuksa/README.md,
          <source>[Accessed: Apr. 16</source>
          ,
          <year>2021</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20] “eclipse/kuksa.invehicle
          <article-title>- Firmware-over-the-air update”</article-title>
          , [Online],
          <string-name>
            <surname>Eclipse</surname>
            <given-names>Foundation</given-names>
          </string-name>
          ,
          <year>2019</year>
          , Available: https://github.com/eclipse/kuksa.invehicle/blob/master/kuksaappmanager/wiki/fota.md ,
          <source>[Accessed: Apr. 16</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21] “OpenEmbedded homepage”, [Online], Available: https://www.openembedded.org ,
          <source>[Accessed: Apr. 22</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22] “Yocto Project homepage”, [Online], Available: https://www.yoctoproject.org/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>“Build Process Overview - AGL Documentation</surname>
          </string-name>
          <article-title>”</article-title>
          . Automotive Grade Linux, [Online], Available: https://docs.automotivelinux.org/en/master/#0_Getting_Started/2_Bui lding_AGL_Image/0_Build_Process/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24] openembedded/bitbake, OpenEmbedded,
          <year>2021</year>
          , [Software], Available: https://github.com/openembedded/bitbake, [Accessed: Apr.
          <volume>19</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <article-title>“STN2120: OBD-II, SW-CAN, MS-CAN Interpreter IC”</article-title>
          , OBD Solutions, [Online], Available: https://www.obdsol.com/solutions/chips/stn2120/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Banijamali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Jamshidi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kuvaja</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Oivo</surname>
          </string-name>
          , “
          <article-title>Kuksa: A Cloud-Native Architecture for Enabling Continuous Delivery in the Automotive Domain”</article-title>
          ,
          <source>in Product-Focused Software Process Improvement</source>
          , vol.
          <volume>11915</volume>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Männistö</surname>
          </string-name>
          , and S. MartínezFernández, Eds. Cham: Springer International Publishing,
          <year>2019</year>
          , pp.
          <fpage>455</fpage>
          -
          <lpage>472</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          <source>[27] APPSTACLE project. “Deliverable 2</source>
          .1
          <article-title>- SotA Research with regard to Car2X Communication, Cloud and Network Middleware and corresponding Security Concepts”</article-title>
          ,
          <year>ITEA3</year>
          , [Online], Available: https://itea3.org/project/appstacle.html ,
          <source>[Accessed: Apr. 11</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>J.</given-names>
            <surname>Gubbi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Buyya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Marusic</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Palaniswami</surname>
          </string-name>
          , “
          <article-title>Internet of Things (IoT): A vision, architectural elements, and future directions”</article-title>
          ,
          <source>Future Gener. Comput. Syst.</source>
          , vol.
          <volume>29</volume>
          , no.
          <issue>7</issue>
          , pp.
          <fpage>1645</fpage>
          -
          <lpage>1660</lpage>
          , Sep.
          <year>2013</year>
          , doi: 10/f427k4.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <article-title>APPSTACLE project, “Deliverable 3.1 - Specification of Data Management, Cloud Platform Architecture and Features of the Automotive IoT Cloud Platform”</article-title>
          ,
          <year>ITEA3</year>
          , [Online], Available: https://itea3.org/project/appstacle.html ,
          <source>[Accessed: Apr. 11</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Eclipse</surname>
            <given-names>Foundation</given-names>
          </string-name>
          , “Eclipse Hono”,
          <year>2021</year>
          , [Software], Available: https://www.eclipse.org/hono/ , [Accessed: Apr.
          <volume>11</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31] “InfluxDB Time Series Platform”,
          <source>InfluxData</source>
          ,
          <year>2021</year>
          , Available: https://www.influxdata.com/products/influxdb/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32] “MongoDB”,
          <source>MongoDB</source>
          ,
          <year>2021</year>
          , [Software], Available: https://www.mongodb.com ,
          <source>[Accessed: Apr. 22</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33] “Grafana”,
          <string-name>
            <surname>Grafana</surname>
            <given-names>Labs</given-names>
          </string-name>
          ,
          <year>2021</year>
          , [Software] Available: https://grafana.com/grafana/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34] “Apache Flink:
          <article-title>Stateful Computations over Data Streams”</article-title>
          ,
          <string-name>
            <surname>Apache</surname>
            <given-names>Foundation</given-names>
          </string-name>
          , [Software], Available: https://flink.apache.org/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Eclipse</surname>
          </string-name>
          hawkBit Project, “Eclipse hawkBit”,
          <string-name>
            <surname>Eclipse</surname>
            <given-names>Foundation</given-names>
          </string-name>
          ,
          <year>2021</year>
          , [Software], Available: https://www.eclipse.org/hawkbit/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36] “Eclipse Ditto”,
          <string-name>
            <surname>Eclipse</surname>
            <given-names>Foundation</given-names>
          </string-name>
          ,
          <year>2021</year>
          , [Software], Available: https://www.eclipse.org/ditto/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37] “Keycloak”,
          <year>2021</year>
          , [Software], Available: https://www.keycloak.org/ [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38] eclipse/kuksa.cloud - Deployment, Eclipse Foundation,
          <year>2020</year>
          , [Online], Available: https://github.com/eclipse/kuksa.cloud/tree/master/deployment , [Accessed: Apr.
          <volume>18</volume>
          ,
          <year>2021</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <given-names>A.</given-names>
            <surname>Banijamali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kuvaja</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Oivo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Jamshidi</surname>
          </string-name>
          , “
          <article-title>Kuksa: Selfadaptive Microservices in Automotive Systems”</article-title>
          , in Product-Focused
          <source>Software Process Improvement</source>
          , Springer International Publishing,
          <year>2020</year>
          , pp.
          <fpage>367</fpage>
          -
          <lpage>384</lpage>
          , doi: 10/gjpm6d.
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <surname>“Kubernetes - Production-Grade Container</surname>
          </string-name>
          Orchestration”, Kubernetes,
          <year>2021</year>
          , [Software], Available: https://kubernetes.io/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41] “Helm”,
          <year>2021</year>
          , [Software], Available: https://helm.sh/ ,
          <source>[Accessed: Apr. 22</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <surname>“</surname>
            <given-names>OKD -</given-names>
          </string-name>
          <article-title>The Community Distribution of Kubernetes that powers Red Hat OpenShift</article-title>
          .”, [Software], Available: https://www.okd.io/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43] “
          <article-title>Bosch pursues an open source strategy to transform IoT”</article-title>
          , Bosch,
          <year>2018</year>
          , [Online], Available: https://blog.bosch
          <article-title>-si.com/bosch-iotsuite/bosch-pursues-an-open-strategy-to-transform-iot/</article-title>
          , [Accessed: May 24,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <surname>“Azure Kubernetes Service (AKS) | Microsoft</surname>
            <given-names>Azure”</given-names>
          </string-name>
          , Microsoft,
          <year>2021</year>
          , [Online], Available: https://azure.microsoft.com/enus/services/kubernetes-service/ , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45] Azure/azure-cli,
          <source>Microsoft Azure</source>
          ,
          <year>2021</year>
          , [Software], Available: .https://github.com/Azure/azure-cli ,
          <source>[Accessed: Apr. 22</source>
          ,
          <year>2021</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          [46]
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Hono</surname>
          </string-name>
          <string-name>
            <surname>Project</surname>
          </string-name>
          , “Deployment :: Eclipse Hono”, [Online], https://www.eclipse.org/hono/docs/deployment/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>
          [47]
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Hono</surname>
          </string-name>
          <string-name>
            <surname>Project</surname>
          </string-name>
          , “Documentation :: Eclipse Hono”, [Online], Available: https://www.eclipse.org/hono/docs/ , [Accessed: Apr.
          <volume>22</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref48">
        <mixed-citation>
          [48] eclipse/kuksa.cloud - Appstore,
          <year>2021</year>
          , [Online], Available: https://github.com/eclipse/kuksa.cloud/tree/master/deployment/helm , [Accessed: Apr.
          <volume>18</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref49">
        <mixed-citation>
          [49]
          <article-title>“agl-distro:app-framework [Automotive Linux Wiki]”</article-title>
          , Automotive Grade Linux, [Online], Available: https://wiki.automotivelinux.org/agl-distro/app-framework ,
          <source>[Accessed: Apr. 23</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref50">
        <mixed-citation>
          [50] “hmiframework [Automotive Linux Wiki]”, Automotive Grade Linux, Available: https://wiki.automotivelinux.org/hmiframework ,[Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref51">
        <mixed-citation>
          [51] eclipse/kuksa.val, Eclipse Foundation,
          <year>2021</year>
          , [Software], Available: https://github.com/eclipse/kuksa.val [Accessed: Apr.
          <volume>17</volume>
          ,
          <year>2021</year>
          ]
        </mixed-citation>
      </ref>
      <ref id="ref52">
        <mixed-citation>
          [52]
          <string-name>
            <surname>“GENIVI Vehicle Signal</surname>
          </string-name>
          <article-title>Specification”</article-title>
          , GENIVI, [Online], Available: https://genivi.github.io/vehicle_signal_specification/ [Accessed: Apr.
          <volume>11</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref53">
        <mixed-citation>
          [53]
          <article-title>“Secure Boot with PS-</article-title>
          45u DP - Swissbit”, Swissbit, [Online], Available: https://www.swissbit.com/en/products/securitytechnology/security-products/secure-boot/ [Accessed: Apr.
          <volume>13</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref54">
        <mixed-citation>
          [54] “Terraform by HashiCorp”,
          <source>HashiCorp</source>
          ,
          <year>2021</year>
          , [Software], Available: https://www.terraform.io/ , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref55">
        <mixed-citation>
          [55]
          <string-name>
            <given-names>T.</given-names>
            <surname>Dierks</surname>
          </string-name>
          , E. Rescorla, “
          <article-title>The Transport Layer Security (TLS) Protocol Version 1</article-title>
          .2”, [Online], Available: https://tools.ietf.org/html/rfc5246 , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref56">
        <mixed-citation>
          [56]
          <string-name>
            <surname>“Apache Qpid - Authentication Providers</surname>
          </string-name>
          ”,
          <string-name>
            <surname>Apache</surname>
            <given-names>Foundation</given-names>
          </string-name>
          , [Online], Available: https://qpid.apache.org/releases/qpid-broker
          <source>-j7.0</source>
          .7/book/Java-Broker
          <string-name>
            <surname>-Management-</surname>
          </string-name>
          Managing-AuthenticationProviders.html ,
          <source>[Accessed: Apr. 15</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref57">
        <mixed-citation>
          [57]
          <string-name>
            <surname>“Smallstep</surname>
          </string-name>
          step-ca”, Smallstep,
          <year>2021</year>
          , [Software], Available: https://smallstep.com/docs/step-ca ,
          <source>[Accessed: Apr. 15</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref58">
        <mixed-citation>
          [58] smallstep/cli, Smallstep,
          <year>2021</year>
          , [Software], Available: https://github.com/smallstep/cli , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref59">
        <mixed-citation>
          [59]
          <string-name>
            <given-names>E.</given-names>
            <surname>Ries</surname>
          </string-name>
          , “
          <article-title>The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses, Illustrated edition”</article-title>
          . New York: Currency,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref60">
        <mixed-citation>
          [60]
          <article-title>“Eclipse Kuksa.val DBC Feeder Demo”</article-title>
          ,
          <string-name>
            <surname>Eclipse</surname>
            <given-names>Foundation</given-names>
          </string-name>
          ,
          <year>2020</year>
          , [Video], Available: https://www.eclipse.org/kuksa/blog/2020/08/18/2020-08-18-dbc/ , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref61">
        <mixed-citation>
          [61] “
          <article-title>Node-RED”</article-title>
          ,
          <source>JS Foundation</source>
          ,
          <year>2021</year>
          , [Software], Available: https://nodered.org/ , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref62">
        <mixed-citation>
          [62]
          <string-name>
            <given-names>The</given-names>
            <surname>Raspberry Pi Foundation</surname>
          </string-name>
          , “Raspberry Pi OS”, Raspberry Pi Foundation, [Software], Available: https://www.raspberrypi.org/software/ ,
          <source>[Accessed: Apr. 23</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref63">
        <mixed-citation>
          [63]
          <string-name>
            <surname>“</surname>
            <given-names>QEMU</given-names>
          </string-name>
          ”,
          <year>2021</year>
          , [Software], Available: https://www.qemu.org/ , [Accessed Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref64">
        <mixed-citation>
          [64] “Packer by HashiCorp”,
          <source>HashiCorp</source>
          ,
          <year>2021</year>
          , [Software], Available: https://www.packer.io/ , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref65">
        <mixed-citation>
          [65]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kaczanowski</surname>
          </string-name>
          , mkaczanowski/packer-builder-arm,
          <year>2021</year>
          , [Software], Available: https://github.com/mkaczanowski/packerbuilder-arm ,
          <source>[Accessed: Apr. 23</source>
          .
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref66">
        <mixed-citation>
          [66]
          <article-title>“ELM327 datasheet”</article-title>
          , ELM electronics, [Online], Available: https://www.elmelectronics.com/products/dsheets/ , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref67">
        <mixed-citation>
          [67] “SocketCAN specification”, Available: https://www.kernel.org/doc/Documentation/networking/can.txt ,
          <source>[Accessed: Apr. 23</source>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref68">
        <mixed-citation>
          [68] norly, norly/elmcan.
          <year>2019</year>
          , [Software], Available: https://github.com/norly/elmcan, [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref69">
        <mixed-citation>
          [69]
          <article-title>“Kvaser Leaf Light HS v2”</article-title>
          , Kvaser, [Online], Available: https://www.kvaser.com/product/kvaser-leaf
          <string-name>
            <surname>-</surname>
          </string-name>
          light
          <string-name>
            <surname>-</surname>
          </string-name>
          hs-v2/ , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref70">
        <mixed-citation>
          [70] commaai/opendbc, comma.
          <source>ai</source>
          ,
          <year>2021</year>
          , [Online], Available: https://github.com/commaai/opendbc , [Accessed: Apr.
          <volume>23</volume>
          ,
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>