
本文为「4G 物联网模块实战」系列的概念辨析篇聊一个写前面几篇时一直有人问的问题AT 固件和 DTU 固件到底有什么区别怎么选版权声明本文为原创技术分享文章转载请注明出处。目录前言1 先搞清楚什么是 AT 固件1.1 定义一堆以 AT 开头的指令接口1.2 它到底怎么工作1.3 适合谁2 再看 DTU 固件以 FS800DTU 为例2.1 定义串口转网络的搬运工2.2 它怎么工作2.3 关键配置一次永久保存2.4 一个常被忽略的真相DTU 固件里也藏着 AT 通道3 一张表说清区别4 实际用下来各自的坑4.1 AT 固件的坑4.2 DTU 固件的坑4.3 一个认知误区AT 和 DTU 不是非此即彼5 怎么选 / 总结前言写这个系列以来从开箱、切 MQTT、到上 OneNET一直有人私信或评论问一个问题“你说的 DTU 固件到底是个啥我之前玩的 4G 模块都是发 AT 指令的这俩有啥区别”这是个好问题。因为我前面几篇默认你已经接受了DTU 固件 填表就通这个设定但说实话很多刚接触的人都会懵——这板子底层明明是个 Cat.1 模组本身支持 AT 指令怎么出厂又自带了个 DTU 固件这俩到底是啥关系这篇文章就把这层窗户纸捅破。不堆术语从它怎么干活的角度把 AT 固件和 DTU 固件聊清楚。看完你应该就能判断自己手上的项目该走哪条路。1 先搞清楚什么是 AT 固件1.1 定义一堆以 AT 开头的指令接口AT 固件说白了就是模组出厂时烧录的一套固件它向上暴露一个以AT开头的指令接口Attention 的缩写最早是 Hayes 公司给调制解调器定的标准后来所有蜂窝模组都沿用下来了。你通过串口往模块里发ATxxx这样的文本指令模块回OK或者一串数据就这么交互。比如查信号、配 APN、建 Socket、发数据全靠一条条指令敲。这是最原始、也最万能的玩法——模组厂商几乎所有的能力最终都暴露成一条条 AT 指令。1.2 它到底怎么工作回想一下我第 1 篇开头吐槽过的那段流程那其实就是纯 AT 固件的典型日常上电 →AT查模组在不在 →ATCPIN查卡 →ATCGATT配注网 → 建 Socket → 进透传 → 开始传数据一条一条来中间还得处理各种返回码、超时、错误。新手把模块从能开机搞到能传数据一两个小时打底。而且有个很要命的点AT 固件每次掉线、每次重启建立连接的那些流程都得重新跑一遍。它不会帮你自动重连所有重连逻辑都得你代码里自己写。1.3 适合谁AT 固件适合这几类人想精细控制每一层的人心跳包怎么发、Socket 怎么保活、断线怎么重连全在自己代码里掌控。需要电话 / 短信 / 特殊协议的人AT 固件能玩电话、短信还能跑 FTP、PPP、RNDIS 这些 DTU 固件通常不带的协议。做底层开发、要把模块当裸芯片用的比如你要自己写一套连接管理逻辑那 AT 指令就是你的原材料。一句话总结AT 固件功能最全、控制最细但活也最多。2 再看 DTU 固件以 FS800DTU 为例2.1 定义串口转网络的搬运工DTU 固件Data Transfer Unit数据传输单元的思路完全不同。它的核心任务就一个把串口收到的数据原样搬到网络上把网络收到的数据原样搬回串口。也就是透传。它把联网这件事在固件里封装好了。你不用管 Socket 怎么建、AT 指令怎么发你只需要告诉它连哪个服务器、用什么协议剩下的它自己搞定。FS800DTU 出厂烧的就是这套 DTU 固件配一个图形化配置工具填表就行。下图为配置工具2.2 它怎么工作对比 AT 固件的一条条敲指令DTU 固件的流程是上电 → 打开配置工具 → 填服务器地址、端口、协议 → 点设置所有参数 → 模块自动联网并连接服务器相当于把敲命令替换成了填表格。这也是我第 1 篇说的另一条路线。2.3 关键配置一次永久保存这是 DTU 固件相比 AT 固件最爽的一点参数存在模块的 Flash 里断电再上电自动读取配置、自动重建连接不需要 MCU 重新配一遍。中间掉线了固件自己按之前存的逻辑重连不用你代码干预。还自带心跳包、注册包这些保活机制以及基站定位、特殊字段处理等增强功能。对新手和只想快速把数据传上去的项目来说这些默认就帮你做好了的东西省的是真金白银的开发时间。2.4 一个常被忽略的真相DTU 固件里也藏着 AT 通道这里说一个参考文章很少提、但我第 1 篇就写过、而且很关键的点DTU 固件和支持 AT 指令并不矛盾。FS800DTU 的 DTU 固件底层还是那颗 Cat.1 模组模组本身就是靠 AT 指令驱动的。所以 DTU 固件只是在 AT 指令之上包了一层自动联网 透传的逻辑底下那条 AT 通道一直都在——你通过串口发退出透传就能进 AT 模式直接对模组发指令查状态、做调试。注意这里的AT 通道本质是 YunDTU/EzDTU 固件底层本身就是 AT 指令驱动的它在透传层之上拦截了转义序列允许用户暂时退出透传、进入 AT 命令模式。这和把 DTU 固件换成纯 AT 固件是两回事不要混淆。这就引出下一个重要认知也是很多人搞混的地方AT 固件和 DTU 固件对 FS800DTU 来说不是两块不同的板子而是两种用法。出厂是 DTU 固件填表就通但你随时能钻进底层的 AT 通道里折腾。3 一张表说清区别前面都是定性聊这里直接上表把关键维度摊开对比对比维度DTU 固件FS800DTU 出厂AT 固件纯 AT 指令参数配置方式图形化工具填表 / 串口指令 / Socket 远程配置只能串口逐条发 AT 指令联网流程设置一次永久保存断电自动重建连接每次掉线 / 重启都要重新跑一遍连接流程网络维护固件按参数自动联网、自动重连需代码逐条处理 AT 指令自行实现重连逻辑数据传输网络透传串口 ↔ 服务器AT 指令控制收发支持协议TCP / UDP / MQTT / HTTP等TCP / UDP / MQTT / HTTP / FTP / PPP / RNDIS 等云平台接入原生支持阿里云、OneNET 等填参数即上云不直接支持需自己实现接入逻辑电话 / 短信不支持支持开发周期短填表即通满足约 90% 物联网应用长要写各种异常处理、连接管理灵活性封装好但可控性弱定制空间有限最灵活每一层都能自己掌控一句话概括DTU 固件是最简单的数据透传 永久配置AT 固件是指令精细控制 灵活但繁琐。4 实际用下来各自的坑4.1 AT 固件的坑重启就重来这是最劝退新手的。每次上电、每次被基站踢下线网络连接都得重新建立你必须在代码里实现一整套断线检测 自动重连 状态机的逻辑否则现场一掉线就永久断连。异常处理是大头AT 指令不是发了就完超时不回、回 ERROR、半路断掉……这些边界情况不处理好项目根本不敢上线。门槛不低要懂注网流程、Socket 生命周期、各种返回码学习曲线确实陡。4.2 DTU 固件的坑电话 / 短信玩不了DTU 固件专注数据传输电话、短信这些不在它的活儿里。需要的话只能走 AT 通道或者换方案。协议栈少一截FTP、PPP、RNDIS 这类 AT 固件能玩的DTU 固件一般没有。如果你的项目依赖这些DTU 固件就不够用了。IP 不能当设备身份证4G 模块拿到的 IP 是基站随机分配的每次都可能变别拿它当固定设备标识——多设备区分还是得靠 Client ID、设备名那套。状态信息混入数据流DTU 固件默认会把连接状态比如FSTCP CONNECTED也通过串口上报这些 ASCII 行会直接混进你的业务数据流里。如果你传的是二进制协议解析会直接出问题。解决方案是进 AT 模式关掉ATLINKDEBUG或者通过超级命令关掉——但如果你不知道有这回事排查起来会相当痛苦。4.3 一个认知误区AT 和 DTU 不是非此即彼我第 2 篇、第 3 篇全程用 DTU 固件把 MQTT、OneNET 跑通了但并不代表AT 指令就没用了。真实情况是DTU 固件负责常规的数据上云占 90% 场景AT 通道负责临时查状态、调试、或者实现 DTU 固件覆盖不到的骚操作。两者是主用 备用 / 上层 底层的配合关系而不是二选一。很多人以为买了 DTU 固件的板子就再也碰不到 AT 了这是误解。知道底下还有条 AT 通道关键时刻能救急。5 怎么选 / 总结写到这选法其实很清晰了如果你是新手、想快速把 4G 数据传上去、专注应用层→ 直接 DTU 固件。填表、点按钮、断电自动重连前面三篇就是这么跑下来的门槛低、出活快。如果你要精细控制通信每一层、要电话短信、要 FTP/PPP 这类特殊协议、或者要做底层产品开发→ 老老实实撸 AT 指令DTU 固件封装的那层反而会束手束脚。现实里最常见的是组合拳用 DTU 固件解决 90% 的上云需求需要的时候钻进 AT 通道做调试或特殊操作。不过需要留意DTU 固件的省事是以接受封装为代价的。如果你的项目需要处理非标准协议、私有分包逻辑或者将来可能扩展电话/短信功能一开始就选 AT 固件反而更省事——省的是后期推倒重来的事。对我自己来说写这个系列最大的收获之一就是搞清楚了DTU 固件不是把 AT 指令消灭了而是在它上面盖了一层好用的壳。盖了壳之后大部分时候你不用管底下但知道壳底下是什么心里才踏实。如果你手上的模组是纯 AT 固件非 YunDTU/EzDTU 固件或者你发现进入 AT 模式的具体指令或回显与我说的不一样欢迎在评论区或私信告诉我我同步更新到文章里。