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:
parent
f6fe628aa7
commit
d2f37d06ba
1 changed files with 158 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue