【KW41z】在RaspberryPi上部署KW41z TUN/TAP

先吹吹TUN/TAP其实是一个虚拟的网络设备纯软模拟玩过Linux的筒子应该知道Linux有个很好玩的梗USB设备可以虚拟成一个网络设备KW41z的Thread中有Framework Serial Connectivity Interface (FSCI)和Thread Host Control Interface (THCI)字面上大概意思就是整一个串行通信接口(USB、UART、SPI),有点牛掰可以将IP数据包 封装/解包 成串行数据如果有一个带u口的路由器,加上软件一块KW41z板,就能完成边界路由器的功能早在几年前论坛ATMEL R21 ZigBee活动中就有论坛大神把Contiki移植到R21借助Contiki中的Slip协议,搭配OPENWRT路由器和tunslip6软件完成border router这次恩叉屁的资料再一次给力源码中就包含了border router的例程同时,还公布了Linux OS上位机软件的源码它们就在 ..\SDK_2.2_FRDM-KW41Z\tools\wireless\host_sdk\hsdk\demo实在是给力了试着在树莓派上部署了一版

-----------------KW41z侧的工作------------------两块板分别烧固件一个是thread_host_controlled_device,理论上hybrid下类似的工程也行另一个是thread_router_eligible_device,理论上其他的也行尤其需要注意第一个工程中source\config.h文件中#define THR_SERIAL_TUN_ROUTER ,必须配置为1烧好thread_host_controlled_device的板子撸入树莓派另外一块待命------------------树莓派侧的工作-------------------2、安装依赖[C] 纯文本查看 复制代码?12apt-get install updateapt-get install build-essential libudev-dev libpcap-dev3、make几下在..\host_sdk\hsdk,make一次,接着make install在..\host_sdk\hsdk\demo,执行make; make spi这个时候,..\host_sdk\hsdk\demo\bin下会生成GetKinetisDevices PCAPTest SPITest Thread_KW_Tun这几个可执行代码流./GetKinetisDevice可以查看连接上USB口的KW41z板执行一下就能看到:NXP Kinetis-W device on /dev/ttyACM0.不同系统,端口号可能不同./Thread_KW_Tun就是处理IP包的程序后面再用接着编辑一个sh文件,添加虚拟网络接口nano tun.sh[C] 纯文本查看 复制代码?01020304050607080910111213#!/bin/bash# Create a new TUN interface for Thread interaction.ip -6 tuntap add mode tun fslthr0# Assign it a global IPv6 address.ip -6 addr add FD01::2 dev fslthr0# Add route to default address of Serial TUN embedded interface.ip -6 route add FD01::1 dev fslthr0# Add route to Unique Local /64 Prefix via fslthr0.ip -6 route add FD01:0000:0000:3EAD::/64 dev fslthr0# The interface is ready.ip link set fslthr0 up# Enable IPv6 routing on host.sysctl -w net.ipv6.conf.all.forwarding=1大致意思就是创建一个叫做fslthr0的IPv6虚拟网络接口./tun.sh跑起来ifconfig看一下会出现这么个东西[C] 纯文本查看 复制代码?1234567fslthr0   Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00inet6 addr: fd01::2/128 Scope:GlobalUP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1RX packets:8 errors:0 dropped:0 overruns:0 frame:0TX packets:8 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:500RX bytes:832 (832.0 B)  TX bytes:832 (832.0 B)到这里运行 ./hsdk/demo/bin/Thread_KW_Tun /dev/ttyACM0 fslthr0[C] 纯文本查看 复制代码?12345[THR] Set 802.15.4 channel          OK![THR] Create Network                OK![MESHCOP] Start Commissioner        OK![MESHCOP] Add Expected Joiner       OK![MESHCOP] Sync Steering Data        OK!渐入佳境--------------------over segment-------------------另外一块板子在串口join一个thread网络ok后,ifconfig看一下会出现[C] 纯文本查看 复制代码?1234567Interface 0: 6LoWPANLink local address (LL64): fe80::2995:f51:69ce:4087Mesh local address (ML64): fd1d:b758:634f:5834:d8ca:d682:6645:c052Mesh local address (ML16): fd1d:b758:634f:5834::ff:fe00:1Unique local address: fd01::3ead:2187:d4fe:ff70:f7dbLink local all Thread Nodes(MCast):  ff32:40:fd1d:b758:634f:5834::1Realm local all Thread Nodes(MCast): ff33:40:fd1d:b758:634f:5834::1看到Unique local address: fd01::3ead:2187:d4fe:ff70:f7db了么和树莓派上虚拟的地址是一样的接下来,大家都懂的......

从树莓派ping了一下能通看样子,Border Router离我们不远了这个demo楼主在Desktop Ubuntu和树莓派上都试过能行so,搭载OpenWrt的路由器应该也不在话下可惜手头上没有,不能进一步玩耍了这块板的资源,拿来点灯真是浪费了不过,楼主还是要点

先到这。KW41z开箱建网谈理想

(0)

相关推荐