【问题标题】:DHCP fail with WEMOS D1 Mini in sagemcom FAST3890V3 routersagemcom FAST3890V3 路由器中的 WEMOS D1 Mini DHCP 失败
【发布时间】:2021-11-13 19:44:46
【问题描述】:

在 sagemcom FAST3890V3 路由器中使用经典 esp8266 (wemos) 连接示例使用 DHCP,我从未获得 IP,大约 10 分钟后,我获得了一些超出范围的 IP,但它不起作用。 我阅读了很多帖子,但找不到解决方案。谢谢

连接伪代码(你知道的)

 WiFi.begin(ssid, password);
  client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
 // wifi_station_set_auto_connect(true);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }

wireshark 仅捕获 Discover - 交易,路由器没有回答,5 次。

323 43.461691 0.0.0.0 255.255.255.255 DHCP 350 DHCP 发现 - 事务 ID 0x2beb89bf

第 323 帧:线路上 350 字节(2800 位),接口 \Device\NPF_{4F87DED9-5E05-47A3-A4C3-1D594FD44EE5} 上捕获的 350 字节(2800 位),id 0 以太网 II,Src:Espressi_df:9d:f6 (e8:db:84:df:9d:f6),Dst:广播 (ff:ff:ff:ff:ff:ff) 目的地:广播(ff:ff:ff:ff:ff:ff) 地址:广播​​(ff:ff:ff:ff:ff:ff) .... ..1。 .... .... .... .... = LG 位:本地管理地址(这不是出厂默认设置) .... ...1 .... .... .... .... = IG 位:组地址(多播/广播) 资料来源:Espressi_df:9d:f6 (e8:db:84:df:9d:f6) 地址:Espressi_df:9d:f6 (e8:db:84:df:9d:f6) .... ..0。 .... .... .... .... = LG 位:全球唯一地址(出厂默认值) .... ...0 .... .... .... .... = IG 位:单个地址(单播) 类型:IPv4 (0x0800) Internet 协议版本 4,Src:0.0.0.0,Dst:255.255.255.255 0100 .... = 版本:4 .... 0101 = 标头长度:20 字节 (5) 区分服务字段:0x00(DSCP:CS0,ECN:Not-ECT) 0000 00.. = 差异化服务代码点:默认 (0) .... ..00 = 显式拥塞通知:不支持 ECN 传输 (0) 总长度:336 标识:0x0004 (4) 标志:0x00 0... .... = 保留位:未设置 .0.. .... = 不分段:未设置 ..0。 .... =更多片段:未设置 片段偏移:0 生存时间:255 协议:UDP (17) 标头校验和:0xba99 [禁用验证] [标头校验和状态:未验证] 源地址:0.0.0.0 目的地址:255.255.255.255 用户数据报协议,Src 端口:68,Dst 端口:67 源端口:68 目的港:67 长度:316 校验和:0x5bed [未验证] [校验和状态:未验证] [流指数:9] [时间戳] UDP 有效负载(308 字节) 动态主机配置协议(发现) 消息类型:引导请求 (1) 硬件类型:以太网 (0x01) 硬件地址长度:6 啤酒花:0 交易 ID:0x2beb89bf 经过的秒数:0 Bootp 标志:0x0000(单播) 客户端IP地址:0.0.0.0 您的(客户端)IP 地址:0.0.0.0 下一个服务器 IP 地址:0.0.0.0 中继代理IP地址:0.0.0.0 客户端 MAC 地址:Espressi_df:9d:f6 (e8:db:84:df:9d:f6) 客户端硬件地址填充:00000000000000000000 未给出服务器主机名 未给出引导文件名 魔术饼干:DHCP 选项:(53) DHCP 消息类型(发现) 长度:1 DHCP:发现 (1) 选项:(57) 最大 DHCP 消息大小 长度:2 最大 DHCP 消息大小:1500 选项:(55) 参数请求列表 长度:5 参数请求列表项:(1)子网掩码 参数请求列表项:(3)路由器 参数请求列表项:(28)广播地址 参数请求列表项:(6)域名服务器 参数请求列表项:(42) 网络时间协议服务器 选项:(255) 结束 选项结束:255 填充:0000000000000000000000000000000000000000000000000000000000000000000000000…

0000 ff ff ff ff ff ff e8 db 84 df 9d f6 08 00 45 00 0010 01 50 00 04 00 00 ff 11 巴 99 00 00 00 00 ff ff 0020 ff ff 00 44 00 43 01 3c 5b ed 01 01 06 00 2b eb 0030 89 bf 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040 00 00 00 00 00 00 e8 db 84 df 9d f6 00 00 00 00 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0110 00 00 00 00 00 00 63 82 53 63 35 01 01 39 02 05 0120 直流 37 05 01 03 1c 06 2a ff 00 00 00 00 00 00 00 0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00

【问题讨论】:

  • 您是否尝试将 IP 打印到 Serial?
  • 我没有获得 IP,与 sagemcom FAST3890V3 路由器的 DHCP 协商是我的问题。其他路由器没有失败。
  • 然后尝试分析路由器中的配置。它可能会阻止您的设备。添加到白名单可能有效,但不确定

标签: c++ ip router esp8266 dhcp


【解决方案1】:

我不确定您是否出于安全原因跳过了它,但您需要将 SSID 和密码存储在相应的变量中,以便稍后在连接循环中使用,下面是一个完整的 wifi 配置示例:

#include <ESP8266WiFi.h>        // Include the Wi-Fi library

const char* ssid     = "SSID";         // The SSID (name) of the Wi-Fi network you want to connect to
const char* password = "PASSWORD";     // The password of the Wi-Fi network

void setup() {
  Serial.begin(115200);         // Start the Serial communication to send messages to the computer
  delay(10);
  Serial.println('\n');
  
  WiFi.begin(ssid, password);             // Connect to the network
  Serial.print("Connecting to ");
  Serial.print(ssid); Serial.println(" ...");

  int i = 0;
  while (WiFi.status() != WL_CONNECTED) { // Wait for the Wi-Fi to connect
    delay(1000);
    Serial.print(++i); Serial.print(' ');
  }

  Serial.println('\n');
  Serial.println("Connection established!");  
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());         // Send the IP address of the ESP8266 to the computer
}

void loop() { }

希望对你有帮助

【讨论】:

  • 嗨,是的,我输入了伪代码,esp8266 连接到路由器并且无法从 DHCP 获取 IP,正如您在 wireshark 日志中看到的那样。我的代码和你的类似,这不是问题,与 sagemcom FAST3890V3 路由器的 DHCP 协商是我的问题。其他路由器没有失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多