This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 如何将一个网络从一个加密狗移动到另一个加密狗。

Guru**** 633105 points
Other Parts Discussed in Thread: SYSCONFIG, Z-STACK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1180962/how-to-move-one-network-from-one-dongle-to-another-one

Thread 中讨论的其他器件:SysConfigZ-stack

你好!

我有一个简单的问题、想象一下这种情况。

我有加密狗、创建网络、配对我的设备、然后在一段时间后、我决定更改加密狗。

是否有任何方法可以将网络从一个加密狗移动到另一个加密狗? 因此我不必再次配对设备?

此致、

Ayman Hammou

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请尝试参阅 www.ti.com/.../swra671.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,YiKai。

    感谢您的链接。

    我有一个 SonOff 软件狗、克隆工具似乎无法识别它们。 这可能是由其内部的 UARTToUSB 芯片造成的。

    有什么关于如何解决这个问题的想法吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    确保在软件狗上运行 ZNP、并正确设置波特率  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我有 ZNP 在其上运行。

    它无法识别加密狗。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    也许您应该先使用 TI LaunchPad 来测试这一点。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在对 python 代码进行一些修改后、我使其运行。 UARTToUSB 芯片导致其无法工作。

    写入过程会一直进行、直到它必须写入 ZCD_NV_EX_TCLK_TABLE。 有什么理由?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ayman:

    您的 ZNP 必须 定义 MT_SYS_KEY_MANAGEMENT。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何检查它是否具有它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它通常在 Project Properties -> CCS Build -> Arm Compiler -> Predefined Symbols 或 Stack/Config/ZNP_cnf.opts 中定义。  在大多数默认构建中未启用该功能。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的。 我已向未  定义 MT_SYS_KEY_MANAGEMENT 标志的客户端发送了200多个加密狗。

    是否有必要或者我可以在没有加密狗的情况下克隆加密狗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    信任中心链接密钥表  ZCD_NV_EX_TCLK_TABLE 包含 TX/RX 帧计数器、扩展地址、密钥属性/类型以及添加到网络中的相应器件的种子移位索引。  与其他 NV 存储器所需内容一样、此信息对于保留现有网络中的器件是必需的。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是读数的 CLI 输出:

    Success: Data Read for ZCD_NV_PANID
    Success: Data Read for ZCD_NV_EXTADDR
    Success: Data Read for ZCD_NV_EXTENDED_PAN_ID
    Success: Data Read for ZCD_NV_BDBNODEISONANETWORK
    Success: Data Read for ZCD_NV_NIB
    Failure: Could not read ZCD_NV_NWK_ACTIVE_KEY_INFO (610802)
    Failure: Could not read ZCD_NV_NWK_ALTERN_KEY_INFO (610802)
    Failure: Could not read from: ZCD_NV_EX_NWK_SEC_MATERIAL_TABLE
    Failure: Could not read from: ZCD_NV_EX_TCLK_TABLE
    Failure: Could not read from: ZCD_NV_EX_TCLK_IC_TABLE
    Failure: Could not read ZCD_NV_GROUP_TABLE (610802)

    问题似乎也适用于其他 NV 元素。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此定义将影响对大多数关键相关 NV 项目的访问。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、我已经在配置文件中添加了"-dm_SYS_key_management"、构建了十六进制并对其进行了刷写、但看起来不起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    确保在重建之前清理工程、使用 LaunchPad 进行测试、并在重新编程之前擦除所有闪存。  

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没有什么不同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否首先使用 LaunchPad 测试此项?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不。

    我没有。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这些是启用的标志。

    -DMAC_CFG_APP_PENDING_QUEUE=TRUE
    -DMAC_CFG_TX_DATA_MAX=5
    -DMAC_CFG_TX_MAX=8
    -DMAC_CFG_RX_MAX=5
    
    -DOSAL_NV_EXTENDED
    -DADDRMGR_NV_SINGLES
    -DBINDINGTABLE_NV_SINGLES
    -DASSOCLIST_NV_SINGLES
    
    -DZSTACK_DEVICE_BUILD="(DEVICE_BUILD_COORDINATOR | DEVICE_BUILD_ROUTER | DEVICE_BUILD_ENDDEVICE)"
    
    -DNWK_AUTO_POLL
    
    -DZNP_UART_BAUD=HAL_UART_BR_115200
    
    -DZIGBEEPRO
    -DZIGBEE_FRAGMENTATION
    -DINTER_PAN
    
    -DMT_UTIL_FUNC
    
    -DMT_SYS_FUNC
    
    -DMT_AF_FUNC
    
    -DMT_ZDO_CB_FUNC
    -DMT_ZDO_FUNC
    -DMT_ZDO_MGMT
    -DMT_ZDO_EXTENSIONS
    
    -DMT_GP_CB_FUNC
    
    -DMT_APP_CNF_FUNC
    
    -DMT_SYS_KEY_MANAGEMENT

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     请在重新构建之前添加-DFEATURE_NVEXID (并可能关闭 CCS 编译器的优化以获得更好的调试体验)。  请注意 、如果未使用安装代码、则不会读取 ZCD_NV_EX_TCLK_IC_TABLE、并且 ZCD_NV_GROUP_TABLE 应在 config_nv_regions.txt 中重命名为 ZCD_NV_EX_GROUP_TABLE、位于项目 ID 0x0008、系统 ID 0x01、子 ID 0x0000以及与 SysConfig -> Z-Stack -> Group Size -> Group Table 等效的条目。  附件是在进行必要的更改后获得的示例。

    e2e.ti.com/.../read_5F00_content.txt

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ryan。  

    感谢您的建议、现在阅读有效、但当涉及克隆时、我得到了以下结果:

    Success: Data Read for ZCD_NV_PANID
    Success: Data Read for ZCD_NV_EXTADDR
    Success: Data Read for ZCD_NV_EXTENDED_PAN_ID
    Success: Data Read for ZCD_NV_BDBNODEISONANETWORK
    Success: Data Read for ZCD_NV_NIB
    Success: Data Read for ZCD_NV_NWK_ACTIVE_KEY_INFO
    Success: Data Read for ZCD_NV_NWK_ALTERN_KEY_INFO
    Success: Data Read for  ZCD_NV_EX_NWK_SEC_MATERIAL_TABLE
    Success: Data Read for  ZCD_NV_EX_TCLK_TABLE
    Failure: Could not read from: ZCD_NV_EX_TCLK_IC_TABLE
    Success: Data Read for  ZCD_NV_EX_GROUP_TABLE
    Read Complete. Refer to read_content.txt to view results.
    Success: Formed the Network
    Failure: Could not write to: ZCD_NV_PANID (Empty Return)
    Failure: Could not write to: ZCD_NV_EXTADDR (Empty Return)
    Failure: Could not write to: ZCD_NV_EXTENDED_PAN_ID (Empty Return)
    Failure: Could not write to: ZCD_NV_BDBNODEISONANETWORK (Empty Return)
    Failure: Could not write to: ZCD_NV_NIB (Empty Return)
    Failure: Could not write to: ZCD_NV_NWK_ACTIVE_KEY_INFO (Empty Return)
    Success: Wrote ZCD_NV_NWK_ALTERN_KEY_INFO to Memory
    Success: Wrote ZCD_NV_EX_NWK_SEC_MATERIAL_TABLE to Memory
    Success: Wrote ZCD_NV_EX_TCLK_TABLE to Memory
    Success: Wrote ZCD_NV_EX_GROUP_TABLE to Memory

    如果这些 sys_nv_write 失败、是否正常?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这不是预期结果。  确保您的第一个 ZNP/ZC 建立了有效的网络。  然后、第二个 ZNP/ZC 应该在闪存新映像之前擦除其所有存储器。  接下来、使用 TI Zigbee 网络克隆工具的"工具"->"表单网络"选项初始化第二个 ZNP 的 NV 信息、然后使用"克隆内容"成功复制所有相关的 NV 存储器、例如我的示例:

    While in operation this window will be frozen until completion.
    2022-12-19 12:41:55.781855
    Success: Data Read for ZCD_NV_PANID
    Success: Data Read for ZCD_NV_EXTADDR
    Success: Data Read for ZCD_NV_EXTENDED_PAN_ID
    Success: Data Read for ZCD_NV_BDBNODEISONANETWORK
    Success: Data Read for ZCD_NV_NIB
    Success: Data Read for ZCD_NV_NWK_ACTIVE_KEY_INFO
    Success: Data Read for ZCD_NV_NWK_ALTERN_KEY_INFO
    Success: Data Read for  ZCD_NV_EX_NWK_SEC_MATERIAL_TABLE
    Success: Data Read for  ZCD_NV_EX_TCLK_TABLE
    Failure: Could not read from: ZCD_NV_EX_TCLK_IC_TABLE
    Success: Data Read for  ZCD_NV_EX_GROUP_TABLE
    Read Complete. Go to [view] to see content
    Success: Wrote ZCD_NV_PANID to Memory
    Success: Wrote ZCD_NV_EXTADDR to Memory
    Success: Wrote ZCD_NV_EXTENDED_PAN_ID to Memory
    Success: Wrote ZCD_NV_BDBNODEISONANETWORK to Memory
    Success: Wrote ZCD_NV_NIB to Memory
    Success: Wrote ZCD_NV_NWK_ACTIVE_KEY_INFO to Memory
    Success: Wrote ZCD_NV_NWK_ALTERN_KEY_INFO to Memory
    Success: Wrote ZCD_NV_EX_NWK_SEC_MATERIAL_TABLE to Memory
    Success: Wrote ZCD_NV_EX_TCLK_TABLE to Memory
    Success: Wrote ZCD_NV_EX_GROUP_TABLE to Memory
    Please Power Cycle/Restart the new ZC to complete the procedure.
    Ensure to do a physical reset if it is the first time restarting the device after
    programming with an XDS110. If using a LaunchPad the reset button may be pressed.
    2022-12-19 12:41:56.701965
    Window is now operational.

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、我发现了导致写入失败的原因并修复了它。

    建议列表:

    • 修改脚本和工具、以接受具有网桥芯片的加密狗、如 SonOff 加密狗。
    • 网络形成后的许多加密狗发送0x00;脚本在读取2个字节后检查第一个字节是否为0xFE、并决定继续。 网络形成后、第一个数据包为0x00FE、 它是有效的数据包、但具有来自网络形成的0x00、这会导致脚本无法检测到数据包。 数据包的其余部分会导致写入失败。
      • 建议的修复:  
        def read_response(port):
            buf_hex = []
            try:
                buf = port.read(2)  # Read the SOF and LEN
                buf = buf.hex()  # Convert read data to a hexadecimal string
                if buf[0:2] == 'fe':  # Verify the SOF byte
                    buf2 = port.read(int(buf[2:4], 16) + 3)  # Read the rest of the frame + CMD0/CMD1/FCS
                    buf_hex = buf + buf2.hex()  # Append the rest of the frame
                    buf_hex = buf_hex[2: len(buf_hex)]  # Remove the SOF byte
                elif buf[0:2] == "00" and buf[2:4] == "fe":
                    length = port.read(1)
                    ll=int.from_bytes(length, byteorder = "big")
                    buf2 = port.read(ll + 3)
                    buf_hex = buf + buf2.hex()
                    buf_hex = buf_hex[3:len(buf_hex)]
            except ValueError:        
                buf_hex = []
            return buf_hex