openwrt环境下,使用externel commissioning组网openthread

此博客基于前两篇博客
openwrt移植openthread
openwrt搭建thread网络
详细操作可参考官方externel commissioning使用指导

使用android thread app

1.修改ot-br-posix中openwrt的Makefile,将OTBR_MDNS=avahi,并添加libavahi-client依赖包。
https://github.com/openthread/ot-br-posix/blob/master/etc/openwrt/openthread-br/Makefile

@@ -44,7 +44,7 @@ CMAKE_SOURCE_DIR = $(LOCAL_SOURCE_DIR)
 CMAKE_OPTIONS = \
        -DBUILD_TESTING=OFF \
        -DCMAKE_INSTALL_PREFIX=/usr \
-       -DOTBR_MDNS=OFF \
+       -DOTBR_MDNS=avahi \
        -DOTBR_OPENWRT=ON \
        -DOTBR_WEB=ON
 
@@ -52,7 +52,7 @@ define Package/openthread-br
        SECTION := base
        CATEGORY := Network
        TITLE := OpenThread Border Router
-       DEPENDS := +libstdcpp +libjson-c +libubus +libblobmsg-json +libncurses +libreadline +libpthread
+       DEPENDS := +libstdcpp +libjson-c +libubus +libblobmsg-json +libncurses +libreadline +libpthread +libavahi-client
 endef

2.编译之后更新openthread-br_xxx.ipk到openwrt

**openwrt下执行**
 otbr-agent /dev/ttyACM0 115200 &
ot-ctl
> panid 0xdead
Done
> extpanid dead1111dead2222
Done
> masterkey 11112233445566778899DEAD1111DEAD
Done
> prefix add fd11:22::/64 pasor
Done
> pskc 198886f519a8fd7c981fee95d72f4ba7
Done
> pskc -p J01NME
Done
> networkname OpenThreadGuide
Done
> ifconfig up
Done
> thread start
Done
> netdataregister
Done

3.使用android手机安装thread app,app下载链接:thread app
.
4.手机连接路由wifi,打开thread app.
在这里插入图片描述
输入密码,密码为J01NME。
此密码与pskc的关系:
可查看https://github.com/openthread/ot-br-posix/tree/master/tools
pskc工具将passphrase、extpanid、network_name三个参数通过算法计算出pskc,而app中的密码是passphrase。
各参数详细说明可参考:ot-cli命令详细介绍
在这里插入图片描述
密码输入正确后,通过手机扫描joiner device的二维码即可将joiner device加入thread网络
在这里插入图片描述
5.制作joiner device二维码
ubuntu使用screen命令控制joiner device

> factoryreset
> eui64
f4ce36d76bbd2876   #获取joiner device的eui64
Done

设置组网密码为:N0RD1C
登录二维码制作网站:https://www.qr-code-generator.com/
点击Text,将v=1&&eui=f4ce36d76bbd2876&&cc=N0RD1C输入message框,点击制作二维码。
在这里插入图片描述
6.app扫描二维码
通过thread app扫描joiner device的二维码
在这里插入图片描述
此时app正在等待joiner device加入。

7.joiner device加入thread 网络
ubuntu使用screen命令控制joiner device

> ifconfig up
Done
> joiner start N0RD1C
Done
Join success!
> thread start
Done

在这里插入图片描述
app作为externel commissioner设置完成。

使用ot-commissioner作为externel commissioning

详细可参考https://openthread.google.cn/guides/border-router/external-commissioning?comm=ot-commissioner
.
1.ubuntu安装ot-commissioner
clone工程https://github.com/openthread/ot-commissioner
按照readme在ubuntu中编译ot-commsioner.
.
2.启动border route.
按照openwrt搭建thread网络进行到“启动BORDER ROUTER(openwrt)”章节

3.ubuntu连接openwrt lan或wifi

deng@ubuntu:/work/work/custom/ot-commissioner/build$ ifconfig
ens33     Link encap:Ethernet  HWaddr 00:0c:29:87:f9:ea  
          inet addr:192.168.8.177  Bcast:192.168.8.255  Mask:255.255.255.0
          inet6 addr: ddbe:48ec:56c6:10::17a/128 Scope:Global
          inet6 addr: ddbe:48ec:56c6:10:5b90:ca3:d4b0:dd5f/64 Scope:Global
          inet6 addr: fe80::c0bf:c04f:ad81:9dc3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6606 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5056 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:662611 (662.6 KB)  TX bytes:3703294 (3.7 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5038 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5038 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:345014 (345.0 KB)  TX bytes:345014 (345.0 KB)

deng@ubuntu:/work/work/custom/ot-commissioner/build$ ping ddbe:48ec:56c6:10::1
ping: unknown host ddbe:48ec:56c6:10::1
deng@ubuntu:/work/work/custom/ot-commissioner/build$ ping6 ddbe:48ec:56c6:10::1
PING ddbe:48ec:56c6:10::1(ddbe:48ec:56c6:10::1) 56 data bytes
64 bytes from ddbe:48ec:56c6:10::1: icmp_seq=1 ttl=64 time=1.02 ms
64 bytes from ddbe:48ec:56c6:10::1: icmp_seq=2 ttl=64 time=1.00 ms
64 bytes from ddbe:48ec:56c6:10::1: icmp_seq=3 ttl=64 time=0.889 ms
^C
--- ddbe:48ec:56c6:10::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.889/0.970/1.021/0.057 ms
deng@ubuntu:/work/work/custom/ot-commissioner/build$

ubuntu可ping通openwrt。

4.openwrt确保otbr-agent监听49191端口

root@GL-B1300:/# netstat -pnl | grep agent
udp        0      0 :::49191                :::*                                4466/otbr-agent
udp        0      0 :::61631                :::*                                4466/otbr-agent
raw        0      0 :::58                   :::*                    58          4466/otbr-agent
unix  2      [ ACC ]     STREAM     LISTENING      14105 4466/otbr-agent     /tmp/openthread.sock
root@GL-B1300:/# 

5.修改commissioner-cli的pskc

**openwrt中**
> dataset
Active Timestamp: 1
Channel: 15
Channel Mask: 07fff800
Ext PAN ID: 7f6b9dc5ee4ef2d2
Mesh Local Prefix: fd01:e5dd:ae8c:c555/64
Master Key: 8d23c1d84545d097f4111ccb368268f3
Network Name: OpenThread-8473
PAN ID: 0x8473
PSKc: 59a7c729fd1c5e8d1844d917d0ca9c16  #记录pskc
Security Policy: 0, onrcb
Done

**ubuntu中修改../src/app/etc/commissioner/non-ccm-config.json中的PSKc与oenwrt中的相同**
deng@ubuntu:/work/work/custom/ot-commissioner/build$ cat ../src/app/etc/commissioner/non-ccm-config.json | grep PSKc
    "PSKc" : "59a7c729fd1c5e8d1844d917d0ca9c16"

5.启动commissioner-cli
commissioner-cli详细操作命令可参考:https://github.com/openthread/openthread/blob/master/src/cli/README_COMMISSIONER.md

deng@ubuntu:/work/work/custom/ot-commissioner/build$ sudo ./src/app/cli/commissioner-cli ../src/app/etc/commissioner/non-ccm-config.json
   ____  ______                                   _           _                          ________    ____
  / __ \/_  __/   _________  ____ ___  ____ ___  (_)_________(_)___  ____  ___  _____   / ____/ /   /  _/
 / / / / / /_____/ ___/ __ \/ __ `__ \/ __ `__ \/ / ___/ ___/ / __ \/ __ \/ _ \/ ___/  / /   / /    / /  
/ /_/ / / /_____/ /__/ /_/ / / / / / / / / / / / (__  |__  ) / /_/ / / / /  __/ /     / /___/ /____/ /   
\____/ /_/      \___/\____/_/ /_/ /_/_/ /_/ /_/_/____/____/_/\____/_/ /_/\___/_/      \____/_____/___/   
                                                                                                         

> 
> 
> 
> start ddbe:48ec:56c6:10::1 49191  #ddbe:48ec:56c6:10::1为openwrt的br-lan ip
[done]
> joiner enableall meshcop J01NU5   #将所有thread网络的加入密码设为J01NU5
[done]

博主在验证该功能时遇到一个错误:

> start ddbe:48ec:56c6:10::1 49191
IO_ERROR: NET - Reading information from the socket failed
[failed]

原因是otbr-agent中DTLS messages过长,openthread官方已修复该bug,请自行查看:https://github.com/openthread/openthread/pull/5125/commits/77e8cdd4c92ddf4fa123472ba1e0ba959bc24e9b

6.joiner device加入thread网络

**ubuntu中**
screen /dev/ttyACM0 115200
> factoryreset
> ifconfig up
Done
> joiner start J01NU5
Done
Join success!
> thread start

自此externel commissioning组网的两种方式已验证完。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值