LoraWAN论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2429|回复: 0
打印 上一主题 下一主题

为什么 ChirpStack 会提示 mic error 呢?

[复制链接]

109

主题

472

帖子

5647

积分

论坛元老

Rank: 8Rank: 8

积分
5647
跳转到指定楼层
楼主
发表于 2023-7-17 09:08:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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)即可解决。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|LoraWAN论坛  

GMT+8, 2024-11-24 01:05 , Processed in 0.077930 second(s), 6 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表