此博客基于前两篇博客
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-brSECTION := baseCATEGORY := NetworkTITLE := OpenThread Border Router
-       DEPENDS := +libstdcpp +libjson-c +libubus +libblobmsg-json +libncurses +libreadline +libpthread
+       DEPENDS := +libstdcpp +libjson-c +libubus +libblobmsg-json +libncurses +libreadline +libpthread +libavahi-clientendef

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.0inet6 addr: ddbe:48ec:56c6:10::17a/128 Scope:Globalinet6 addr: ddbe:48ec:56c6:10:5b90:ca3:d4b0:dd5f/64 Scope:Globalinet6 addr: fe80::c0bf:c04f:ad81:9dc3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:6606 errors:0 dropped:0 overruns:0 frame:0TX packets:5056 errors:0 dropped:0 overruns:0 carrier:0collisions: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.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:5038 errors:0 dropped:0 overruns:0 frame:0TX packets:5038 errors:0 dropped:0 overruns:0 carrier:0collisions: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组网的两种方式已验证完。

openwrt环境下,使用externel commissioning组网openthread相关推荐

  1. 校园网环境下通过OpenWrt软路由利用DNSPod实现QNAP NAS远程IPv4+IPv6双栈访问

    起因是我在宿舍部署了一台NAS,定期对我的个人数据进行备份,同时在NAS上搭建了文件服务器.工作站.个人多媒体中心以及git等服务,但是因为校园网ipv4无法给上级路由配置端口转发,IPv6只能获取到 ...

  2. UBUNTU环境下编译的openwrt

    UBUNTU环境下编译的openwrt 请执行这个命令以安装编译依赖包:sudo apt-get update 然后再输这个: sudo apt-get install gcc g++ binutil ...

  3. openwrt 环境搭建(win10子系统)

    因为工作需要,我一个安卓程序开发,做了很多关于openwrt相关的内容,也不说喜不喜欢吧,反正应该对得起自己的工资.废话不多说,进入主题吧! 前面我写了一篇在Windows10上搭建Ubuntu子系统 ...

  4. 《在(虚拟机)ubuntu16.04上进行openwrt环境搭建及源码下载》

    广西·河池学院 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来之河池学院:OpenWrt无线路由组 写作时间: 2020年7月30日21:00:51 <在(虚拟机)ubun ...

  5. 复杂环境下关于人员 快速统计、识别及定位的研究

    复杂环境下关于人员 快速统计.识别及定位的研究 摘要: 本文着重分析了在室内.地下.机井.矿井等特殊环境下,人员的快速统计.识别及高精度定位的目前行业状况,并对相关案例进行了剖析研究,从而为项目有效性 ...

  6. 《无线网络:理解和应对互联网环境下网络互连所带来的挑战》——第3章 无线个域网 3.1蓝牙...

    本节书摘来自华章出版社<无线网络:理解和应对互联网环境下网络互连所带来的挑战>一书中的第3章,第3.1节,作者:(美)杰克L.伯班克(Jack L. Burbank)等著,更多章节内容可以 ...

  7. 5G环境下工业互联网向向智能制造过渡

    Industrial IoT in 5G environment towards smart manufacturing 5GIIoT Background IIoT: 技术趋势 适用于IIoT的通信 ...

  8. 多云环境下部署 k3s 集群

    多云环境下部署 k3s 集群 最近在玩k3s,刚好手上有三台云服务器(白嫖的一年亚马逊,双11买的腾讯云,朋友的阿里云),尝试跨云厂商搭建k3s集群玩玩 一.基础配置 服务器信息 系统 公网IP 内网 ...

  9. linux svn更换数据仓库,Linux环境下SVN数据仓库迁移

    上一篇文章介绍了Windows环境下SVN数据的备份与还原,这篇文章介绍下Linux环境下数据迁移. 一准备工作 1安装环境 1 centOS7 2可上网 2软件需求 1 winSCP 2 PuTTy ...

  10. UIPopoverController在ARC环境下用法注意

    在ARC环境下如果便用以下代码: [cpp] view plaincopyprint? UIViewController *viewTwo; viewTwo = [[ViewTwo alloc] in ...

最新文章

  1. 操作系统原理:页置换算法,FIFO,LRU,Clock,LFU,二次机会法
  2. 诡异的select *语句报错事件
  3. .NET Core Tools转向使用MSBuild项目格式
  4. linux之more命令
  5. 如何学好单片机?​嵌入式第一门课
  6. ZZ:SDNLAB技术分享(一):ODL的SFC入门和Demo
  7. java 学习笔记_java学习笔记
  8. c语言会生成class文件,一文带你刨析class文件
  9. 主内存和工作内存交互
  10. jupyter notebook + 服务器中docker 使用配置
  11. Qt + FFmpeg 屏幕录制器
  12. Linux服务器CPU性能模式
  13. linux开启磁盘多队列(blk-mq)
  14. WebStorm调试
  15. weblogic上服务器上日志查看及ohs服务器重启
  16. 现在还能买什么股票呢?
  17. CodeVs 1148 传球游戏
  18. Oracle中的日期和字符串互相转换以及格式化
  19. 全要素分析与问题解决:以人为本,主次分明
  20. 【接口测试基础】第十二篇 | 详解Postman测试报告

热门文章

  1. 《计算机网络实验》网络参数配置与常用网络命令使用,超级详细教程
  2. 数据库练习题归纳整理
  3. buck电路的matlab仿真,buck电路simulink仿真
  4. Oracle Certified
  5. pert图java_甘特图和PERT图
  6. 集成运算放大器对输入级的要求
  7. 赵鹏的《大师之路》教程
  8. FFT算法的C语言实现
  9. 电脑写作与发布哪款软件好?
  10. mysql的pdb文件在哪里_pdb是什么文件?pdb数据库文件怎么打开?