Author: Andy Dolan (a.dolan@cablelabs.com)
README.md
(this file): Overview of demo componentsdocs/Hardware.md
: Hardware requirements &
configurationdocs/Build.md
: How to build demo componentsdocs/Running.md
: How to run each component and execute
the demodocs/Raspberry_Pi_Deployment.md
:
One-pager for deploying & running the streamlined onboarding demo on Raspberry
Pis.This repository contains the core components to execute a demonstration of Streamlined Onboarding, the use of Wi-Fi Easy Connect (AKA Device Provisioning Protocol or DPP) to onboard OCF Devices immediately after they are associated to the Wi-Fi network.
A Debian-based Linux environment is assumed for this demonstration.
The general flow of the streamlined onboarding demo is pictured above; its general steps are as follows:
The diagram above displays two client devices, a lamp and a light switch. Once both client devices are onboarded through this method, a final step of provisioning access between the two so that the switch can operate on the lamp is performed through the OBT.
This implementation of Streamlined Onboarding is made up of a number of components that operate together at different layers and in different roles in the architecture. Not all components are fully realized or packaged, and executing the demo requires installation of dependencies, building of source, configuration, and execution in a correct sequence to work correctly. The necessary dependencies are available as submodules of this repository.
For an overview of what each role in the architecture does, refer to the Streamlined Onboarding specification (OCF), and the Wi-Fi Easy Connect specification (WFA). The key roles that are used in this implementation are as follows:
deps/SO_IoTivity-Lite/port/linux
obt-py
branch of
deps/SO_IoTivity-Lite
To facilitate this demo, at least two Wi-Fi enabled Linux devices are needed. These devices can be thought of in the following way:
For the sake of simplicity, this README generally assumes that these are the only two devices in use, and refers to them accordingly below.
The software components of this demo include the following:
deps/SO_IoTivity-Lite
): The modified version of
IoTivity-Lite, the open source standard implementation of the OCF standard,
written in C.
deps/SO_hostap
): The modified version of HostAP (hostapd
and
wpa_supplicant
), the open source standard implementation of the Wi-Fi
specification, written in C.
wpa_supplicant
as its
Wi-Fi network manager.hostapd
, which broadcasts the Wi-Fi
network and acts as the DPP configurator.systemd
service definitions for hostapd
and wpa_supplicant
that can be
used to automatically start and managed the modified HostAP components of
the architecture, found in the services/
directory.wpa_cli
and
hostapd_cli
, found in the scripts/
directory./etc/opt/streamlined_onboarding
or
/usr/local/etc/streamlined_onboarding
; these configurations provide the
basic settings required in HostAP for DPP to function.ocf_devices
directory.Note that our modified version of IoTivity-Lite also includes a web-based onboarding tool written in Python. This can be the primary OBT used on the access point, or the command-line-based OBT can also be used.
However, note that, at the time of writing, the web-based OBT is not fully
merged into the primary branch of the SO_IoTivity-Lite
repository used in this
demo, and may need to be built separately.
Note that this version of the demo is not entirely compliant with the OCF streamlined onboarding specification, in that the information that is provided over the DPP channel during network association does not conform to what is outlined in the specification.
Again, further documentation is needed on building and running the web-based OBT, as its source is distributed between the upstream OCF IoTivity-Lite repository and the CableLabs fork of IoTivity-Lite (SO_IoTivity-Lite).
The graphical lightswitch device is intended to be run on a Raspberry Pi 3 with
an additional Adafruit PiTFT. The source relies on specific GPIO functions that
can be "mocked" through special environment variables, so that the interface can
be run on a regular Linux desktop environment without GPIO. See the
dotenv_template
file for more
information.
The OBT relies on multicast IPv6 traffic for discovery of OCF devices. When the OBT is executed on the AP and VLANs are in use (as is the case when using the NetReach AP), ensure that multicast traffic originating from the OBT is reflected to all VLANs to ensure discovery of client devices.
Alternatively, the OBT can be run on a separate device on the same VLAN as client devices to be onboarded. The OBT can be considered logically separate and need not be tightly coupled to any particular device in this demo's architecture, so long as it can reach the DPP Diplomat and client devices.