RT-Thread论坛
直播中

李泳瑜

8年用户 1215经验值
私信 关注
[问答]

rtt连接ESP8266报错(AT+CIPDNS_CUR?),固件版本为2.3.0.0,是什么原因导致的?


不知道我这个固件版本挺新的,为什么不支持报错(AT+CIPDNS_CUR?)
大佬们那个固件版本支持AT+CIPDNS_CUR?的,可以给我一个支持(AT+CIPDNS_CUR?)的固件包吗.但是固件版本是2.3.0.0的吗,我使用的是esp8266_12F


回帖(1)

他在笑

2025-9-16 17:59:31

你的 ESP8266 固件版本 2.3.0.0 不支持 AT+CIPDNS_CUR? 命令,这是你遇到报错的主要原因


问题分析



  1. 命令引入时间晚: AT+CIPDNS_CUR? 及相关 DNS 设置命令 (AT+CIPDNS_CUR, AT+CIPDNS_DEF?, AT+CIPDNS_DEF) 是在 ESP8266 SDK/AT 固件发展后期才被正式添加和稳定支持的。它们并不是从最早期固件就存在的。

  2. 固件版本标识歧义:

    • 你在 AT 指令查询结果中看到的 2.3.0.0 很可能不是官方 SDK 的版本号标识方式。官方安信可(Ai-Thinker)发布的 AT 固件通常使用 1.7.X.Y 或类似格式(包含编译日期)来表示其基础 SDK 版本。

    • 2.3.0.0 这种格式很不常见,高度怀疑你使用的固件是:

      • 非官方的(自定义编译的): 可能基于早期或不完整的源码分支编译,遗漏了 DNS 命令的支持。

      • 精简固件: 为了节省 ROM 空间,刻意移除了不常用的 DNS 查询功能。

      • 版本信息显示错误或被修改。


    • 关键点: 无论这个 2.3.0.0 代表什么,实测它不支持 AT+CIPDNS_CUR?,证明其内部确实缺少该命令。



哪个固件版本支持 AT+CIPDNS_CUR?


该命令在安信可官方的 2.0.0 SDK 或更高版本为基础的 AT 固件中是稳定支持的。更具体地说:



  • 基于 2.0.0 (以及更新的 2.1.0, 2.2.0, 3.0.0 等) SDK 编译的完整版(非精简版)安信可 ESP8266 AT 固件都支持这个命令。

  • 在较晚期的 1.7.X SDK 分支(例如 1.7.4)中,这些命令可能已经存在但处于测试状态或不稳定。但 1.7.4 版本通常也被认为支持这些 DNS 命令。


解决方案


你需要刷写一个基于较新 SDK(最好是 >= 2.0.0)的、完整的、官方或可靠来源的安信可 ESP8266 AT 固件


步骤




  1. 获取正确的固件:



    • 访问安信可官方下载中心: https://docs.ai-thinker.com/esp8266

    • 寻找 FirmwareAT固件 (AT Firmware) 部分。

    • 下载最新版本的固件包。 目前官方仓库通常提供基于较新 SDK (如 3.0.0) 的固件。一个典型的文件名示例是 ESP8266_AT_Bin_Vx.x.x.x (其中 x.x.x.x 代表版本号)。

    • 确保下载的是 FULL (完整版) 或 SPIFFS (包含文件系统,通常也包含完整AT命令集) 的固件。避免 MINI (精简版) 固件,因为它为了省空间移除了很多命令(包括 DNS 相关的)。




  2. 确认固件内容: 解压下载的固件包。里面应该包含多个 .bin 文件:



    • boot_vx.x.x.bin (引导程序)

    • esp_init_data_default_vx.x.x.bin (射频校准数据 - 非常重要!)

    • at_customize.bin (可选,配置参数)

    • at_xxxx.bin (主AT固件文件,文件名中的xxxx可能代表容量类型如5121024)

    • userx.bin (可能不需要,或者与SPIFFS有关)

    • 重要: 务必找到并记录包里的烧录说明文档 Download_Guide.md 或类似名字的文件,里面会明确告知每个文件的烧录地址。




  3. 刷写固件 (需工具):



    • 你需要一个 USB 转 TTL 串口模块(如 CH340G, CP2102, FT232)连接 ESP8266-12F。

    • 你需要一个固件烧录工具(如 esptool.py, Flash Download Tools (for Windows), 或 Arduino ESP8266 Filesystem Uploader 如果通过 Arduino IDE)。

    • 按照官方固件包里的 Download_Guide.md 进行操作。核心步骤是:

      • ESP8266 进入下载模式:GPIO0 拉低(接地),EN/RST 拉高(接3.3V),在上电瞬间或复位时保持这个状态。

      • 使用烧录工具选择对应的 .bin 文件和它们的指定烧录地址。地址信息是最关键的,必须严格按照 Download_Guide.md 里的设置。

      • 设置好串口号、波特率(烧录时通常用 115200 或更高,如 460800, 921600)。

      • 点击烧录/下载。完成后断开 GPIO0 与地的连接(拉高或悬空),复位或重新上电模块。





  4. 验证新固件:



    • 通过串口工具连接模块,发送 AT 应返回 OK

    • 发送 AT+GMR 查询新固件版本。预期看到的格式应该是类似 AT version:x.x.x(x)SDK version:y.y.y(z) (例如 AT version:2.2.0.0(something) / SDK version:3.0.0(something))。之前那个 2.3.0.0 不应该再出现。

    • 发送 AT+CIPDNS_CUR? 现在你应该能收到 OK 响应和当前的 DNS 服务器地址信息(如果未设置过,可能是空的)。




给你的建议



  • 直接下载最新官方固件: 访问安信可文档网站 https://docs.ai-thinker.com/esp8266 -> 资源下载 (Resources) -> 固件 (Firmware) -> 下载 ESP8266 NonOS AT Bin Vx.x.x.x (找到最新的) -> 选择里面的 Full 压缩包 (ESP8266_AT_Bin_Full_vx.x.x.x.zip)。

  • 仔细阅读烧录指南: 解压下载的 Full 包,里面一定有 Download_Guide.md一字不漏地阅读并按指示操作。错误的烧录地址是变砖的主要原因之一。

  • 擦除 Flash: 在烧录新固件之前,强烈建议在烧录工具中使用 Full chip eraseErase all contents 选项完全擦除原有固件(通常只需要擦除一次)。这有助于解决因旧配置信息残留导致的不稳定问题。如果工具允许设置擦除区域,擦除 0x000000x3FFFF (256KB) 或 0x000000xFFFFF (1MB) 等整个Flash范围即可。

  • 校准数据: 务必烧录固件包里的 esp_init_data_default_vx.x.x.bin 文件到它指定的地址(通常是 0x3FC000/0x7C000 for 512KB Flash, 0x3FC000/0x7FC000 for 1MB, 具体看烧录指南!)。缺少或错误的这个文件会导致 Wi-Fi 性能极差甚至无法连接。


其他可能性和注意事项



  • 检查硬件: 确保你的 ESP8266-12F 模块连接正确,供电充足(建议使用外接电源,USB转TTL的5V或3.3V供电能力可能不足),串口线焊接/连接可靠。

  • 指令拼写和波特率: 再次确认 AT+CIPDNS_CUR? 指令输入是否正确(无空格,大小写敏感,英文问号),并且串口波特率设置与模块当前设定匹配(尝试常用的 115200)。发送指令后,等待足够时间让模块响应(可能需要几毫秒到几十毫秒)。

  • 真的需要 _CUR 吗? 如果你只是想查询默认的 DNS 设置(断电保存的那个),AT+CIPDNS_DEF? 可能更常用。如果你只是想设置当前DNS,AT+CIPDNS_CUR=... 就足够了,无需查询。在确认不支持 _CUR? 的情况下,你可以尝试 AT+CIPDNS? (旧版查询方式,可能会返回错误或不支持) 或 AT+CIPDNS_DEF? (查看默认设置) 是否可用。但这只是尝试,不能替代刷新固件解决该命令缺失的问题。


总结: 你的 2.3.0.0 固件不支持 AT+CIPDNS_CUR? 命令。解决方案是下载并刷写一个基于 SDK 2.0.0 或更新版本完整版安信可官方 ESP8266 AT 固件(如最新的 ESP8266_AT_Bin_Full_vx.x.x.x.zip),并严格按照包内的烧录指南进行操作。刷完之后,该命令就能正常使用了。祝刷机顺利!

举报

更多回帖

发帖
×
20
完善资料,
赚取积分