You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32+SX1262节点基于RadioLib(IN865)OTAA入网失败求助

LoRaWAN 1.1 OTAA入网失败(错误-1116)解决方案

针对你用RadioLib 7.2.1 + ESP32+SX1262接入IN865频段ChirpStack 1.1时出现的RADIOLIB_ERR_NO_JOIN_ACCEPT错误,结合你提到的JoinEUI设为0的场景,从ChirpStack配置和RadioLib代码两方面修正:

一、ChirpStack配置修正

  1. JoinEUI(原AppEUI)匹配设置
    LoRaWAN 1.1的OTAA流程必须验证JoinEUI,即使你不想用自定义值,也需要保证节点侧和ChirpStack侧的JoinEUI完全一致:
    • 在ChirpStack的设备详情页,将JoinEUI设置为0000000000000000(和你节点侧的全0配置对应)。
    • 进入设备所属的**应用(Application)**设置,在JoinEUI列表中添加0000000000000000,否则ChirpStack会直接拒绝该JoinEUI的入网请求。
  2. 密钥配置校验
    确认ChirpStack中设备的NwkKey和AppKey与你提供的完全一致,注意字节顺序:直接按给定的十六进制值填入(比如28 EC CB 64 AB D0 4D 80 7F 21 86 F9 3B FF B7 B7无需反转)。

二、RadioLib代码配置修正

  1. 正确设置全0 JoinEUI
    RadioLib的LoRaWANNode构造函数需要字节数组类型的JoinEUI参数,不能仅传入数值0,需显式定义全0数组:
    #include <RadioLib.h>
    
    // 硬件引脚配置(根据你的接线调整)
    SX1262 radio = Module(18, 26, 27, 33);
    
    // 节点参数
    uint8_t devEUI[] = {0x89, 0x9F, 0x6E, 0xEE, 0x7E, 0x9D, 0x77, 0xF2};
    uint8_t joinEUI[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // 全0 JoinEUI
    uint8_t nwkKey[] = {0x28, 0xEC, 0xCB, 0x64, 0xAB, 0xD0, 0x4D, 0x80, 0x7F, 0x21, 0x86, 0xF9, 0x3B, 0xFF, 0xB7, 0xB7};
    uint8_t appKey[] = {0x3E, 0x41, 0x74, 0x2C, 0xD8, 0x65, 0x70, 0xBC, 0x65, 0x95, 0x1A, 0x80, 0x5A, 0xAB, 0x19, 0x7E};
    
    LoRaWANNode node(&radio, joinEUI, devEUI, nwkKey, appKey);
    
    void setup() {
      Serial.begin(115200);
      delay(1000);
    
      // 初始化Radio
      int state = radio.begin();
      if (state != RADIOLIB_ERR_NONE) {
        Serial.print("Radio初始化失败: ");
        Serial.println(state);
        while(true);
      }
    
      // 配置IN865频段
      state = node.begin(LORAWAN_REGION_IN865);
      if (state != RADIOLIB_ERR_NONE) {
        Serial.print("LoRaWAN初始化失败: ");
        Serial.println(state);
        while(true);
      }
    
      // 设置入网重试(可选,提升成功率)
      node.setJoinRetries(3);
      node.setJoinDelay(5000); // 重试间隔5秒
    
      // 发起OTAA入网
      Serial.println("发起入网请求...");
      state = node.join();
      if (state == RADIOLIB_ERR_NONE) {
        Serial.println("入网成功!");
      } else {
        Serial.print("入网失败,错误码: ");
        Serial.println(state);
      }
    }
    
    void loop() {
      // 后续业务逻辑
    }
    
  2. 频段配置确认
    确保调用node.begin(LORAWAN_REGION_IN865),RadioLib 7.x版本对IN865频段的信道配置已适配ChirpStack默认设置,无需额外修改。

三、额外排查点

  • 查看ChirpStack的Network Server日志,确认是否收到入网请求,以及是否因JoinEUI未授权或密钥不匹配拒绝下发Join Accept。
  • 验证网关的IN865频段信道覆盖,确保节点发送入网请求的信道(默认SF12/125kHz)在网关支持的信道列表中。
  • 检查ESP32与SX1262的接线(尤其是DIO1、NSS、RESET引脚),避免硬件通信异常导致入网请求发送不完整。

内容的提问来源于stack exchange,提问作者Harshit Kumar Shakya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 06:13:11