WEMOS D1 Mini(ESP8266)连接Sagemcom FAST3890V3路由器DHCP失败求助
问题根因
你遇到的是Sagemcom FAST3890V3路由器的DHCP服务兼容性问题:该型号路由器默认开启了DHCP报文严格校验,要求客户端发送的DHCP Discover报文中必须携带客户端标识符(Option 61)或主机名(Option 12),而ESP8266的默认WiFi库发送的Discover报文没有携带这两个选项,直接被路由器丢弃,不会返回DHCP Offer响应。
你后续拿到的超出地址池的无效IP是ESP8266长时间未收到DHCP响应时自动生成的169.254.x.x段链路本地地址,并非路由器分配的地址。
解决方案
方案1:修改ESP8266代码补全DHCP选项(优先推荐)
在调用WiFi.begin()前添加代码补全DHCP必需的主机名选项即可,修改后代码示例:
// 先设置DHCP主机名,满足路由器的报文校验要求 WiFi.hostname("ESP8266_Device"); WiFi.begin(ssid, password); client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); }
如果上述修改仍无效,可以额外补充客户端标识符选项:
#include <WiFi.h> extern "C" { #include "user_interface.h" } // 自定义DHCP Option 61(客户端标识符),后面6位填你设备的MAC地址即可 uint8_t client_id[] = {0x01, 0xe8, 0xdb, 0x84, 0xdf, 0x9d, 0xf6}; wifi_set_option(STATION_IF, 61, sizeof(client_id), client_id);
方案2:修改路由器配置(临时验证用)
登录路由器管理后台,做任意一项配置修改即可临时验证:
- 进入「LAN设置」-「DHCP高级配置」,关闭「严格校验DHCP报文」开关,保存后重启路由器
- 或进入「静态地址绑定」页面,将你ESP8266的MAC地址(e8:db:84:df:9d:f6)绑定到DHCP地址池范围内的固定IP,保存后设备重启即可直接拿到绑定的IP
方案3:确认WiFi频段配置
Sagemcom FAST3890V3默认开启双频合一功能,ESP8266仅支持2.4G WiFi,建议在路由器后台将2.4G和5G SSID拆分,单独连接2.4G的SSID,避免双频合一导致的DHCP请求转发错误。
内容的提问来源于stack exchange,提问作者mariano
相关产品推荐
相关产品推荐

