net: Extend echo_client README.rst file to setup OTBR based echo_server

This description provides information about setting up RCP (nRF21540-DK)
and OT HOST (mimxrt1020_evk) to communicate with HOST PC's echo_server
via OpenThread Border Router (OTBR).

Signed-off-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
Lukasz Majewski 2024-12-18 16:12:13 +01:00 committed by Benjamin Cabé
parent f6fe628aa7
commit d2f37d06ba

View file

@ -179,3 +179,161 @@ on how to test TLS with Linux host samples.
See the :zephyr:code-sample:`sockets-echo-server` documentation for an alternate
way of running, with the echo-client on the Linux host and the echo-server
in QEMU.
OpenThread RCP+Zephyr HOST (SPINEL connection via UART)
=======================================================
Prerequisites:
--------------
- Build ``echo-server`` for HOST PC (x86_64)
(https://github.com/zephyrproject-rtos/net-tools) SHA1:1c4fdba
.. code-block:: console
$ make echo-server
- Program nRF RCP from Nordic nrf SDK (v2.7.0):
.. code-block:: console
(v2.7.0) ~/ncs$ west build -p always -b nrf21540dk/nrf52840 -S logging nrf/samples/openthread/coprocessor
- Build mimxrt1020_evk HOST (Zephyr):
.. zephyr-app-commands::
:zephyr-app: samples/net/sockets/echo_client
:board: mimxrt1020_evk
:conf: "prj.conf overlay-ot-rcp-host-uart.conf"
:goals: build
:compact:
And flash
.. code-block:: console
$ west flash -r pyocd -i 0226000047784e4500439004d9170013e56100009796990
- Connect the nRF RCP with IMXRT1020 (HOST) via UART
.. code-block:: c
/*
* imxrt1020_evk -> HOST
* nRF21540-DK -> RCP (nrf/samples/openthread/coprocessor)
* LPUART2 used for communication:
* nRF21540 (P6) P0.08 RXD -> IMXRT1020-EVK (J17) D1 (GPIO B1 08) (TXD)
* nRF21540 (P6) P0.07 CTS -> IMXRT1020-EVK (J19) D8 (GPIO B1 07) (RTS)
* nRF21540 (P6) P0.06 TXD -> IMXRT1020-EVK (J17) D0 (GPIO B1 09) (RXD)
* nRF21540 (P6) P0.05 RTS -> IMXRT1020-EVK (J17) D7 (GPIO B1 06) (CTS)
*/
- Install the OTBR (OpenThread Border Router) docker container on your HOST PC (x86_64)
Follow steps from https://docs.nordicsemi.com/bundle/ncs-2.5.1/page/nrf/protocols/thread/tools.html#running_otbr_using_docker
**Most notable ones:**
1. Create ``otbr0`` network bridge to have access to OT network from HOST
Linux PC
.. code-block:: console
sudo docker network create --ipv6 --subnet fd11:db8:1::/64 -o com.docker.network.bridge.name=otbr0 otbr
2. Pull docker container for OTBR:
.. code-block:: console
docker pull nrfconnect/otbr:84c6aff
3. Start the docker image:
.. code-block:: console
sudo modprobe ip6table_filter
sudo docker run -it --rm --privileged --name otbr --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/ttyACM5:/dev/radio nrfconnect/otbr:84c6aff --radio-url spinel+hdlc+uart:///dev/radio?uart-baudrate=1000000
4. Add proper routing (``fd11:22::/64`` are the IPv6 addresses - On-Mesh - which allow accessing the OT devices) on HOST PC (x86_64)
.. code-block:: console
sudo ip -6 route add fd11:22::/64 dev otbr0 via fd11:db8:1::2
And the output for on-OT address:
.. code-block:: console
ip route get fd11:22:0:0:5188:1678:d0c0:6893
fd11:22::5188:1678:d0c0:6893 from :: via fd11:db8:1::2 dev otbr0 src fd11:db8:1::1 metric 1024 pref medium
5. Start the console to the docker image:
.. code-block:: console
sudo docker exec -it otbr /bin/bash
Test with e.g.
.. code-block:: console
ot-ctl router table
ot-ctl ipaddr
Configure OTBR
--------------
On the HOST PC's webbrowser: http://localhost:8080/
Go to ``Form`` and leave default values - e.g:
* Network Key: ``00112233445566778899aabbccddeeff``
* On-Mesh Prefix: ``fd11:22::``
* Channel: ``15``
to "FORM" the OT network.
*Note:*
The "On-Mesh Prefix" shall match the one setup in ``otbr0`` routing.
Configure RCP (nRF21540-DK) + OT HOST (mimxrt1020)
--------------------------------------------------
.. code-block:: console
ot factoryreset
ot dataset networkkey 00112233445566778899aabbccddeeff
ot ifconfig up
In the HOST PC www webpage interface please:
Commission -> Joiner PSKd* set to ``J01NME`` -> START COMMISSION
.. code-block:: console
ot joiner start J01NME
ot thread start
The ``ot ipaddr`` shall show IPv6 address starting from ``fd11:22:0:0:``.
This one can be accessed from HOST's PC network (via e.g.
``ping -6 fd11:22:0:0:e8bf:266b:63ca:eff4``).
Start ``echo-server`` on HOST PC (x86-64)
-----------------------------------------
.. code-block:: console
./echo-server -i otbr0