diff --git a/docs/guides/nrfconnect_android_commissioning.md b/docs/guides/nrfconnect_android_commissioning.md
index 9240f4d83d65f2..f7a8b08e4a75e1 100644
--- a/docs/guides/nrfconnect_android_commissioning.md
+++ b/docs/guides/nrfconnect_android_commissioning.md
@@ -11,10 +11,7 @@ onto a CHIP-enabled Thread network. The instructions are also valid for
- [Overview](#overview)
- [Requirements](#requirements)
-- [Building and programming OpenThread RCP firmware](#building-rcp-firmware)
-- [Configuring PC as Thread Border Router](#configuring-pc)
- - [Forming Thread network](#forming-thread-network)
- - [Configuring Wi-Fi hotspot](#configuring-hotspot)
+- [Setting up Thread Border Router](#setting-up-thread-border-router)
- [Building and programming nRF Connect Lock Example Application](#building-example)
- [Building and installing Android CHIPTool](#building-chiptool)
- [Preparing accessory device](#preparing-accessory)
@@ -29,47 +26,28 @@ onto a CHIP-enabled Thread network. The instructions are also valid for
The commissioning process is composed of the following main stages:
-- CHIPTool discovers a CHIP accessory device over Bluetooth LE.
-- CHIPTool establishes a secure channel to the device over Bluetooth LE, and
+1. CHIPTool discovers a CHIP accessory device over Bluetooth LE.
+2. CHIPTool establishes a secure channel to the device over Bluetooth LE, and
sends CHIP operational credentials and Thread provisioning data.
-- The accessory device joins a CHIP-enabled Thread network.
+3. The accessory device joins a CHIP-enabled Thread network.
Bluetooth LE is only used during the commissioning phase. Afterwards, only the
-IP connectivity between the smartphone and the accessory device is needed to
-send operational messages. Since a typical smartphone does not have a Thread
-radio built-in, extra effort is needed to prepare a fully-fledged testing
-environment. This page describes how to build a Thread Border Router using a PC
-with a spare Wi-Fi card and an
-[OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor)
-device.
+IPv6 connectivity between the smartphone and the accessory device is needed to
+send operational messages. The IPv6 address of the device is not exchanged
+during the commissioning process and CHIPTool must use DNS Service Discovery
+(DNS-SD) to learn or refresh the address before the controller initiates the
+IPv6-based communication.
+
+Since a typical smartphone does not have a Thread radio built-in, extra effort
+is needed to prepare a fully-fledged testing environment. Refer to the
+[OpenThread Border Router](openthread_border_router_pi.md) article to set up a
+Thread Border Router on a Raspberry Pi.
The following diagram shows the connectivity between network components required
to allow communication between devices running the CHIPTool and Lock
applications:
-```
- +--------------------+
- | Smartphone |
- +---------| Android CHIPTool |---------+
- | +--------------------+ |
- | | Wi-Fi
- | |
- | +---------------+ Ethernet +----------+
- | | PC |------------| Internet |
- | +---------------+ +----------+
- | |
- | Bluetooth LE | USB
- | |
- | +---------------+
- | | nRF52840 DK |
- | | OpenThread RCP|
- | +---------------+
- | |
- | +--------------------+ | Thread
- | | nRF52840 DK | |
- +---------| Lock Application |---------+
- +--------------------+
-```
+
@@ -77,192 +55,34 @@ applications:
## Requirements
-You need the following hardware and software to build a Thread Border Router:
+You need the following hardware and software for commissioning the nRF Connect
+accessory using Android CHIPTool:
- Two nRF52840 DK (PCA10056)
- - One nRF52840 DK is needed to run
+ - One nRF52840 DK is needed for running the
[OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor)
- firmware and can be replaced with another compatible device like
- nRF52840 Dongle.
+ firmware. You can replace this DK with another compatible device, such
+ as the nRF52840 Dongle.
+ - One nRF52840 DK is needed for running the lock application. You can
+ replace this DK with another compatible device, such as the nRF5340 DK.
- Smartphone compatible with Android 8.0 or later
-- PC with the following characteristics:
-
- - Software: Ubuntu 20.04 and Docker installed
- - Hardware: A spare Wi-Fi card
-
-While this page references Ubuntu 20.04, all the procedures can be completed
-using other popular operating systems.
-
-
-
-
-
-## Building and programming OpenThread RCP firmware
-
-OpenThread RCP firmware is required to allow the PC to communicate with Thread
-devices. Run the commands mentioned in the following steps to build and program
-the RCP firmware onto an nRF52840 DK:
-
-1. Download and install the
- [nRF Command Line Tools](https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Command-Line-Tools).
-2. Clone the OpenThread repository into the current directory:
-
- $ git clone https://github.com/openthread/openthread.git
-
-3. Enter the _openthread_ directory:
-
- $ cd openthread
-
-4. Install OpenThread dependencies:
-
- $ ./script/bootstrap
-
-5. Set up the build environment:
-
- $ ./bootstrap
-
-6. Build OpenThread for the nRF52840 DK:
-
- $ make -f examples/Makefile-nrf52840
-
- This creates an RCP image in the `bin/ot-rcp` directory.
-
-7. Convert the RCP image to HEX format:
-
- $ arm-none-eabi-objcopy -O ihex output/nrf52840/bin/ot-rcp output/nrf52840/bin/ot-rcp.hex
-
-8. Program the RCP firmware:
-
- $ nrfjprog --chiperase --program output/nrf52840/bin/ot-rcp.hex --reset
-
-9. Disable the Mass Storage feature on the device:
-
- $ JLinkExe
- J-Link>MSDDisable
- Probe configured successfully.
- J-Link>exit
-
- This is required, so that the feature
- [does not interfere](https://github.com/openthread/openthread/blob/master/examples/platforms/nrf528xx/nrf52840/README.md#mass-storage-device-known-issue)
- with core RCP functionalities. The setting remains valid even if you program
- another firmware onto the device.
-
-10. Power-cycle the device to apply the changes.
+- Raspberry Pi Model 3B+ or newer (along with an SD card with at least 8 GB of
+ memory)
+- Wi-Fi Access Point supporting IPv6 (without the IPv6 Router Advertisement
+ Guard enabled on the router)
-
-
-## Configuring PC as Thread Border Router
-
-To make your PC work as a Thread Border Router, complete the following tasks:
-
-1. Form a Thread network using the OpenThread RCP device and configure IPv6
- packet routing to the network.
-2. Configure a Wi-Fi hotspot using a spare Wi-Fi card on your PC.
+
-
+## Setting up Thread Border Router
-### Forming Thread network
-
-To form a Thread network, complete the following steps:
-
-1. Create an IPv6 network for the OpenThread Border Router (OTBR) container in
- Docker:
-
- $ docker network create --ipv6 --subnet fd11:db8:1::/64 -o com.docker.network.bridge.name=otbr0 otbr
-
-2. Start the OTBR container using the following command. In the last line,
- provide the device node name of the nRF52840 kit that is running the RCP
- firmware before `:/dev/radio` (in this case, the name is _/dev/ttyACM0_):
-
- $ docker run -it --rm --privileged --network otbr -p 8080:80 \
- --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" \
- --volume /dev/ttyACM0:/dev/radio openthread/otbr --radio-url spinel+hdlc+uart:///dev/radio
-
-3. Open the `http://localhost:8080/` address in a web browser.
-4. Click **Form** in the menu to the left. The network forming creator window
- appears.
-5. Make sure that the On-Mesh Prefix is set to `fd11:22::`. This value is used
- later to configure the IPv6 packet routing.
-6. Click the **Form** button at the bottom of the window to form a new Thread
- network using the default settings.
-7. Run the following command to learn which IPv6 address was assigned to the
- OTBR container in Docker.
-
- $ docker network inspect otbr | grep IPv6Address
-
- After checking the output, the address will most likely be `fd11:db8:1::2`.
-
-8. To ensure that packets targeting Thread network nodes are routed through the
- OTBR container in Docker, run the following command, with _fd11:db8:1::2_
- replaced with the actual address obtained in the previous step:
-
- $ sudo ip -6 route add fd11:22::/64 dev otbr0 via fd11:db8:1::2
-
-
-
-### Configuring Wi-Fi hotspot
-
-To configure a Wi-Fi hotspot using a spare Wi-Fi card on your PC, complete the
-following steps:
-
-1. Open the Ubuntu settings widget by running the following command:
-
- $ gnome-control-center
-
-2. Go to the Wi-Fi settings.
-3. Click the three-dot icon at the title bar and select the **Turn On Wi-Fi
- Hotspot...** option.
-4. Enter your network name and password and click **Turn On**.
-5. Run the following command to assign a well-known IPv6 address to the hotspot
- interface:
-
- $ nmcli connection modify Hotspot ipv6.addresses fd11:db8:2::1/64
-
-6. Run the following command to install Routing Advertisement Daemon (radvd),
- which enables the IPv6 auto-configuration of devices that connect to the
- hotspot:
-
- $ sudo apt install radvd
-
-7. Learn the hotspot interface name by running the following command:
-
- $ nmcli connection show Hotspot | grep interface-name
-
-8. Add the following lines into `/etc/radvd.conf`, with _wlo1_ replaced with
- the hotspot interface name obtained in the previous step:
-
- interface wlo1
- {
- MinRtrAdvInterval 3;
- MaxRtrAdvInterval 4;
- AdvSendAdvert on;
- AdvManagedFlag on;
- prefix fd11:db8:2::/64
- {
- AdvValidLifetime 14300;
- AdvPreferredLifetime 14200;
- };
- };
-
-9. Start the radvd service by running the following command:
-
- $ systemctl start radvd
-
-To automatically start the radvd service on every reboot, run the following
-command:
-
- $ systemctl enable radvd
-
-> If you use Ubuntu 18.04, a DHCP server is not configured automatically when
-> creating a Wi-Fi hotspot. As a result, devices that connect to the hotspot
-> will not be assigned an IPv4 address and may not work properly. To address the
-> problem, install and configure a DHCP server on the hotspot interface. For
-> example, you can use
-> [isc-dhcp-server](https://help.ubuntu.com/community/isc-dhcp-server).
+Follow the [OpenThread Border Router](openthread_border_router_pi.md) article to
+set up OpenThread Border Router on the Raspberry Pi, with either the nRF52840 DK
+or the nRF52840 Dongle acting as the
+[OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor).
@@ -295,7 +115,7 @@ After building, install the application by completing the following steps:
guide on the Android Studio hub for detailed information.
3. If the **Install via USB** option is supported for your Android version,
turn it on.
-4. Plug the smartphone into an USB port on your PC.
+4. Plug the smartphone into a USB port on your PC.
5. Run the following command to install the application, with _chip-dir_
replaced with the path to the CHIP source directory:
@@ -322,11 +142,11 @@ To prepare the accessory device for commissioning, complete the following steps:
factory reset of the device.
3. Find a message similar to the following one in the application logs:
- I: 666[SVR] Copy/paste the below URL in a browser to see the QR Code:
- https://dhrishi.github.io/connectedhomeip/qrcode.html?data=CH%3AI34DV%2A-00%200C9SS0
+ I: 615 [SVR]Copy/paste the below URL in a browser to see the QR Code:
+ I: 621 [SVR]https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3AW0GU2OTB00KA0648G00
4. Open the URL in a web browser to have the commissioning QR code generated.
-5. Push **Button 4** on the device to start Bluetooth LE advertising.
+5. Press **Button 4** on the device to start Bluetooth LE advertising.
@@ -335,12 +155,12 @@ To prepare the accessory device for commissioning, complete the following steps:
## Commissioning accessory device
To commission the accessory device onto the Thread network created in the
-[Forming Thread network](#Forming-a-Thread-network) section, complete the
-following steps:
+[Setting up Thread Border Router](#setting-up-thread-border-router) section,
+complete the following steps:
1. Enable **Bluetooth** and **Location** services on your smartphone.
-2. Connect the smartphone to the Wi-Fi Hotspot created in the
- [Configuring Wi-Fi hotspot](#Configuring-a-Wi-Fi-hotspot) section.
+2. Connect the smartphone to the same Wi-Fi network as the Raspberry Pi which
+ runs OpenThread Border Router.
3. Open the CHIPTool application on your smartphone.
4. Tap the **PROVISION CHIP DEVICE WITH THREAD** button and scan the
commissioning QR code. Several notifications will appear, informing you of
@@ -363,11 +183,17 @@ Once the device is commissioned, the following screen appears:
![CHIPTool device control screen](../../docs/images/CHIPTool_device_commissioned.jpg)
-This means that the provisioning is completed successfully and you are connected
-to the device. Check the connection with the following steps:
+The two textboxes at the top contain **Fabric ID** and **Node ID** of the last
+commissioned device.
+
+Check the IPv6 connectivity with the device using the following steps:
+
+1. Tap **UPDATE ADDRESS** to learn or refresh the IPv6 address of the device.
+ CHIPTool will use a built-in DNS-SD client to resolve **Fabric ID** and
+ **Node ID** of the device to its IPv6 address. The result of the operation,
+ be it the address or an error message, will be displayed at the bottom of the
+ screen.
-1. Verify that the text box on the screen is not empty and contains the IPv6
- address of the accessory device.
2. Tap the following buttons to change the lock state:
- **ON** and **OFF** buttons lock and unlock the door, respectively.
diff --git a/docs/images/CHIPTool_device_commissioned.jpg b/docs/images/CHIPTool_device_commissioned.jpg
index dbe10d5d2c6de4..85bbbdc2b8fefc 100644
Binary files a/docs/images/CHIPTool_device_commissioned.jpg and b/docs/images/CHIPTool_device_commissioned.jpg differ
diff --git a/docs/images/nrfconnect_android_connectivity.svg b/docs/images/nrfconnect_android_connectivity.svg
new file mode 100644
index 00000000000000..313dad18eb84a0
--- /dev/null
+++ b/docs/images/nrfconnect_android_connectivity.svg
@@ -0,0 +1,224 @@
+
+
+
\ No newline at end of file