问题

 

ZigBee 3.0 网络:如何使用install code生成的Link Key加入Z3网络?

答案

 

在ZigBee 3.0之前,install code只用于Smart Energy网络。现在,所有的ZigBee 3.0设备都需要支持install code,但是否在网络中使用由Trust Center决定。在本文中,你可以按照以下步骤使用命令行(CLI命令)的方式,将Z3 Light使用install code生成Link Key方式加入到Z3 Gateway中。本文适用于EM358x或者EFR32平台。

 

假定你已经编译了Z3 Light的示例代码,以及Z3 Gateway的示例代码。其中Z3 Light是SOC模式,Z3 Gateway的是以NCP + Host模式。在创建Z3 Gateway的示例代码时,需要设置Link Key table的大小,可在“NCP configuration” plugin中配置,设置其至少为1(默认为0)。

 

  1. 确保Z3 Light没有处在任何网络当中。可以使用“network leave” CLI命令使其退网。
  2. 在Z3 Light的设备中安装install code,install code可以是6/8/12/16字节。在本例子中,使用00112233445566778899AABBCCDDEEFF,将其保存到txt文本中,格式如下:
Install Code: 00112233445566778899AABBCCDDEEFF
  1. 按照AN714第4、5部分的指导,将install code安装到Z3 Light设备的Token中。我的EFR32MG1的无线板子+WSTK的套件的serial number是#440069872。在Windows系统的CMD窗口中输入以下命令:
>commander flash --tokengroup znet --tokenfile installCode.txt --serialno 440069872

 

你将看到窗口输出以下内容:

Writing 2048 bytes starting at address 0x0fe04000
Comparing range 0x0FE04000 - 0x0FE047FF (2 KB)
Erasing range 0x0FE04000 - 0x0FE047FF (1 sector, 2 KB)
Programming range 0x0FE04240 - 0x0FE0435F (288 Bytes)
Verifying range 0x0FE04000 - 0x0FE047FF (2 KB)
DONE

 

为了验证install code是否安装成功,可以使用以下命令将Token导出进行验证:

>commander tokendump --tokengroup znet --serialno 440069872

 

在输出的信息中包含以下重要内容:

#
# The token data can be in one of three main forms: byte-array, integer, or string.
# Byte-arrays are a series of hexadecimal numbers of the required length.
# Integers are BIG endian hexadecimal numbers.
# String data is a quoted set of ASCII characters.
#
# MFG_EMBER_EUI_64     : E3F607FEFF570B00
……
 
#'MFG_INSTALLATION_CODE (Smart Energy Install Code)' token group
# Install Code Flags : 0x0006
Install Code       : 00112233445566778899AABBCCDDEEFF
# CRC                : 0x8F52

 

  1. 在Z3 Gateway中,使用以下CLI命令建立Centralized网络:
 
>plugin network-creator start 1
 
NWK Creator: Form: 0x00
Z3GatewayHostv510>NWK Creator Security: Start: 0x00
NWK Creator: Form. Channel: 20. Status: 0x00
Form Centralized network complete: 0x00
NWK Creator: Stop. Status: 0x00. State: 0x00
EMBER_NETWORK_UP 0x0000

 

  1. 使用以下命令将install code生成Link Key,并存储在Z3 Gateway中。Z3 Gateway作为Centralized的Trust Center。

option install-code [KeyTableIndex:1] [ieeeAddress:8] [installCode:-1]

 

option install-code 0 {00 0B 57 FF FE 07 F6 E3} {00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 52 8F}

其中option install-code后面第一参数是Link Key table的指引。

第二个参数是入网节点的EUI64地址。

第三个参数是install code。你可以通过使用CLI “info”来查看入网节点Z3 Light的EUI64地址(node [(>)000B57FFFE07F6E3])。

第四个参数是install code加上其对应的CRC校验码。你可以通过第3步的tokendump命令得到install code的CRC校验码。注意:这里是以大端格式排列。

 

  1. 使用Network Analyzer工具对入网过程进行抓包(可选)。在Simplicity Studio视图中转到Network Analyzer,并右键单击J-Link adapter,选择capture 进行抓包。如果你处于一个噪音环境下,可以选择在指定的PAN ID上进行抓包。

 

  1. 使用如下CLI命令,在Z3Gateway(Trust Center)上设置临时的Link Key(与install code生成的Link Key相同):

plugin network-creator-security set-joining-Link-Key {eui64} {LinkKey}

plugin network-creator-security set-joining-Link-Key {00 0B 57 FF FE 07 F6 E3} {9A A4 67 C7 8F 45 43 F1 BC A6 CA 03 C3 D7 3B 31}

 

  1. 在Z3Gateway中使用如下CLI命令设置允许加网:
plugin network-creator-security open-network

 

  1. 最后在Z3Light中使用Network Steering plugin命令加入网络。
plugin network-steering start 0

以上步骤就是通过install code生成的临时Link Key顺利加入到Z3网络中。如果你在第6步使用Network Analyzer进行抓包,可以看到整个入网过程。Z3 Light初始化网络使用临时的Link Key。Trust Center使用临时的Link Key将Network Key传输给Z3 Light,(请参考"Transport Key (NWK)"帧)。最后Z3 Light请求一个新的Link Key,Trust Center传输新的Link Key给Z3 Light,(请参考"Transport Key (Link)"帧)。

 

 

  • Proprietary
  • Knowledge Base Articles
  • Simplicity Studio
  • Wireless