LoraWAN论坛
标题:
为什么 ChirpStack 会提示 mic error 呢?
[打印本页]
作者:
BeyondDream
时间:
2023-7-17 09:08
标题:
为什么 ChirpStack 会提示 mic error 呢?
本帖最后由 BeyondDream 于 2024-5-21 14:54 编辑
# 背景
将 1 个运行了较长时间的 LoRa Device 加入 1 台 ChirpStack 出现 mic error
# 原理
FCnt 在 Device 和 ChirpStack 都是 32 位整数,而 LoRaWAN 协议是 16 位整数。
每当 FCnt 超过 0xFFFF(65535) 时,Device 和 ChirpStack 都需要记录高 16 位,才能同步 FCnt 数值。如下例所示:
LoRa Device LoRaWAN ChirpStack
0 0 0
1 1 1
... ... ...
65535 65535 65535
65536 0 65536
65537 1 65537
... ... ...
当一台 ChirpStack 突然接入 1 个运行超过了 0xFFFF(65535) 个 LoRa 报文的 Device 时,它无法知道 FCnt 高 16 位数值。
也就是双方的 FCnt 同步失败。
因为 FCnt 被用于计算 MIC 和 Payload 加密,这就引发了 mic error,也引起了 Payload 解密错误。
# 解决
尽可能让 LoRa Device 和 ChirpStack 同步运行,比如:将 Device 重启(迫使 FCnt = 0)即可解决。
欢迎光临 LoraWAN论坛 (http://lora.timeddd.com/)
Powered by Discuz! X3.3