
简介这份手册面向使用移远 LTE 标准模块的嵌入式开发者与硬件工程师聚焦 EC200x、EC600x、EG912Y 系列模块的 AT 命令集用于模块配置、网络连接与功能控制等开发场景。内容系统梳理了各条 AT 命令的语法、参数、响应及使用场景涵盖 GPRS 附着状态查询、短信模式切换、拨号上网、数据收发等典型操作并附有使用与披露限制、版权商标、第三方材料及隐私声明等注意事项便于开发者按规范完成产品设计。资源包为 1 个 PDF 文件约 1.12MB版本 1.0、日期 2021-12-13正文约 193 页目录结构清晰可按命令类别快速检索。目前已有 473 人学习下载适合需要查阅官方命令定义、排查模块通信问题或对照实现驱动逻辑的中高级开发者参考。1. 从一次现场翻车说起这份 AT 手册到底解决什么问题去年帮一个做共享设备的朋友排查问题现场设备用的是 EC200 系列模组插上卡死活注不上网。现场工程师折腾了一下午换了三张卡、重启了十几次最后发现是ATQCFGnwscanmode被上一版固件默认锁在某个制式上跟当地网络对不上。这种问题没有一份靠谱的 AT 命令手册你连从哪查起都不知道。移远 Quectel EC200、EC600、EC800、EG912Y 这几个系列是 LTE Cat 1 和 Cat 4 模组里出货量极大的几个型号广泛用在 POS 机、共享设备、工业网关、车载终端上。它们共用一套 AT 命令体系但每个型号在细节上又有差异。这份《EC200xEC600xEG912Y 系列 AT 命令手册》就是官方给出的命令全集覆盖通用命令、串口控制、状态控制、SIM 卡操作、网络服务、呼叫相关等十几个大类接近 200 页。适合谁适合所有拿这几个模组做产品固件、做嵌入式开发、做现场调试的工程师。你不需要从头读到尾但手边必须有一份能随时翻的。2. 手册的骨架怎么拆从 AT 命令语法到 URC 上报机制拿到一份 193 页的 PDF最怕的是不知道从哪翻。我一般会先把它拆成三块命令语法规则、命令分类索引、URC 上报机制。这三块搞清楚了后面查任何一条命令都是按图索骥。2.1 AT 命令的四种语句格式与响应规则手册第 1 章「引言」里把 AT 命令的语句格式讲得很清楚但很多人直接跳过。实际上不理解这四种格式你连命令写错了都看不出来。AT 命令的语句分为四类类型格式示例用途执行命令ATcmdATCSQ执行某个动作不需要参数查询命令ATcmd?ATCSQ?查询当前设置值设置命令ATcmd...ATQCFGnwscanmode,0设置参数测试命令ATcmd?ATQCFG?查询该命令支持的参数范围这里有个血泪经验测试命令?是你最好的朋友。当你不知道某个命令支持哪些参数值时先发ATQCFG?模组会把所有子命令和取值范围列出来。比翻手册快得多而且不会因为固件版本差异导致手册和实际对不上。响应方面手册定义了三种结果码OK表示命令执行成功ERROR表示语法错误或执行失败CME ERROR: code表示设备相关的错误。很多人看到ERROR就慌了其实先检查是不是漏了引号或者逗号80% 的ERROR都是格式问题。2.2 命令分类索引按功能域建立检索路径手册把命令分成了十几个大类我按实际使用频率重新排一下优先级第一优先级状态查询与网络注册ATCPAS查询模组活动状态ATCREG查询 CS 域网络注册状态ATCGREG查询 PS 域网络注册状态ATCSQ查询信号强度ATQNWINFO查询当前网络信息制式、频段、运营商这五条命令是你拿到任何一块模组后第一组要跑的。ATCPAS返回CPAS: 0表示 ready返回其他值说明模组还没准备好。ATCREG?返回CREG: 0,1表示已注册到本地网络0,5表示漫游。第二优先级SIM 卡与网络配置ATCPIN?查询 SIM 卡状态ATQCCID查询 ICCIDATCIMI查询 IMSIATCOPS?查询当前运营商ATQCFGnwscanmode配置网络搜索模式ATQCFGband配置频段第三优先级数据连接与串口控制ATQCFGusbnet配置 USB 网卡模式ATQCFGnat配置 NAT 模式ATIPR设置串口波特率ATIFC设置流控这个排序不是手册的顺序而是现场调试的实际顺序。先确认模组活着再确认卡正常再确认网络注册上了最后才去调数据连接。2.3 URC 上报机制为什么你的回调总是不触发URCUnsolicited Result Code是模组主动上报给主控的消息比如收到短信、网络状态变化、来电等。手册第 1.7 节和第 4.4 节专门讲了 URC 的配置。关键命令是ATQINDCFG它可以控制哪些 URC 上报、哪些不上报。比如# 查询当前 URC 配置 ATQINDCFG? # 关闭所有 URC 上报调试时用生产环境千万别关 ATQINDCFGall,0 # 只开启网络注册状态 URC ATQINDCFGcreg,1还有一个容易翻车的点ATQCFGurc/cache控制 URC 缓存。如果打开缓存模组在串口忙的时候会把 URC 存起来等串口空闲再发。听起来很美好但如果你的主控没有正确处理缓存 URC 的顺序就会出现「回调函数收到了三天前的网络状态」这种玄学问题。我一般建议在调试阶段先关掉缓存确认 URC 能正常收到再按需打开。3. 从零跑通一次入网EC200 系列模组的上网配置全流程这一章是实操核心。我以 EC200 系列为例把从模组上电到数据连接建立的完整流程拆一遍。EC600 和 EG912Y 的流程基本一致差异点我会单独标出来。3.1 硬件连接与串口参数确认在发任何 AT 命令之前先确认硬件连接。EC200 系列通常有两路串口主串口用于 AT 命令交互辅助串口用于调试日志。主串口的默认波特率一般是 115200但不同固件版本可能不同。如果你不确定当前波特率有两个办法一是查模组标签上的固件版本对照手册的默认参数表二是用串口工具从 9600 到 921600 逐个试发AT看有没有OK返回。第二种方法笨但有效我现场用过很多次。确认波特率后先发一条最简单的命令AT # 预期响应OK如果返回OK说明串口通了。如果返回乱码检查波特率、数据位8、停止位1、校验位无。如果什么都不返回检查硬件流控是否被启用——有些模组默认开启 RTS/CTS你的 USB 转串口线如果不支持流控就收不到任何东西。3.2 SIM 卡检测与网络注册的完整命令序列串口通了之后按以下顺序执行。每一步都有明确的预期响应如果某一步不对不要往下走。# 第 1 步确认模组功能模式正常 ATCFUN? # 预期CFUN: 1全功能模式 # 如果是 0发 ATCFUN1 切到全功能 # 第 2 步查询 SIM 卡状态 ATCPIN? # 预期CPIN: READY # 如果返回 CME ERROR: 10说明没检测到 SIM 卡 # 如果返回 CME ERROR: 11说明需要 PIN 码 # 第 3 步查询 SIM 卡初始化状态 ATQINISTAT # 预期QINISTAT: 3SIM 卡和电话本都初始化完成 # 如果返回 0 或 1等几秒再查 # 第 4 步查询网络注册状态 ATCREG? # 预期CREG: 0,1 或 CREG: 0,5 # 0,1 已注册本地网络 # 0,5 已注册漫游网络 # 0,2 正在搜索 # 0,3 注册被拒绝 # 第 5 步查询信号强度 ATCSQ # 预期CSQ: 20,99 之类 # 第一个值范围 0-31越大越好 # 小于 10 说明信号很差检查天线 # 第 6 步查询当前网络信息 ATQNWINFO # 预期QNWINFO: FDD LTE,46000,LTE BAND 3,1650 # 依次是制式、运营商代码、频段、频点这六步跑完如果ATCREG?返回0,1说明模组已经成功注册到网络。如果卡在0,2一直搜索常见原因有三个天线没接好、频段配置不对、SIM 卡欠费。频段问题用ATQCFGband查后面会讲。3.3 数据连接建立PPP 拨号与 USB 网卡模式的选择网络注册成功后下一步是建立数据连接。EC200 系列支持两种方式PPP 拨号和 USB 网卡模式。选哪种取决于你的主控平台。PPP 拨号适合 Linux 或 RTOS 平台主控通过串口发 PPP 帧模组作为 PPP 服务器。配置命令# 设置 APN ATQICSGP1,1,CMNET,,,1 # 参数contextID1, protocolType1(IP), APNCMNET, 用户名空, 密码空, authType1 # 激活 PDP 上下文 ATQIACT1 # 预期OK # 如果返回 ERROR用 ATQIGETERROR 查具体错误码 # 查询 PDP 上下文状态 ATQIACT? # 预期QIACT: 1,1,1,10.x.x.x # 依次是contextID, state(1激活), type(1IP), IP地址USB 网卡模式适合 Windows 或 Android 平台模组通过 USB 枚举成网卡系统直接识别为以太网设备。配置命令# 查询当前 USB 网卡模式 ATQCFGusbnet? # 预期QCFG: usbnet,0 # 0 ECM 模式 # 1 MBIM 模式 # 2 RNDIS 模式 # 3 ECM RNDIS 自适应 # 设置为 RNDIS 模式Windows 常用 ATQCFGusbnet,2 # 需要重启模组生效 ATCFUN1,1这里有个大坑切换 usbnet 模式后必须重启模组而且重启后 USB 设备会重新枚举你的上位机如果没做热插拔处理就会以为设备掉了。我一般建议在产品固件里把 usbnet 模式作为出厂配置一次性写好不要留给用户去切。3.4 验证数据链路ping 测试与吞吐量初判数据连接建立后怎么确认真的通了最直接的办法是在模组侧发 ping。EC200 系列支持ATQPING命令# 发起 ping目标 8.8.8.8超时 5 秒ping 4 次 ATQPING1,8.8.8.8,5,4 # 预期返回 QPING: 0,32,45,255 之类的统计信息 # 第一个参数 0 表示成功其他值表示失败如果 ping 不通先检查 PDP 上下文是否真的激活了ATQIACT?再检查 APN 是否正确。有些运营商的 APN 需要用户名密码比如某些物联网卡这时候ATQICSGP的后三个参数就不能留空。吞吐量方面EC200 系列是 Cat 1理论下行 10Mbps、上行 5Mbps。实际测试中用ATQCFGusbnet,2走 RNDIS 模式在 PC 上跑 iperf 能到 8Mbps 左右。如果只有几百 Kbps检查是不是被限速了或者天线匹配有问题。4. 避坑与排查现场调试中最容易翻车的五个点这一章是我自己踩过的坑以及帮别人排查时反复遇到的。每条按「现象 → 原因 → 解决」写你对照着查就行。4.1 现象ATCREG? 一直返回 0,2 搜不到网原因最常见的是频段配置和当地网络不匹配。EC200 系列支持多频段但出厂默认可能只开了部分频段。比如某些批次默认只开 B1/B3/B8而当地 LTE 用的是 B5。解决先用ATQCFGband查询当前频段配置返回的是一个十六进制位掩码。然后对照手册的频段表把需要的频段加上。比如要加 B5# 查询当前频段 ATQCFGband # 返回 QCFG: band,0x4e,0x0,0x0 # 设置频段为 B1B3B5B8 ATQCFGband,0x4e,0x0,0x0 # 具体掩码值查手册的频段表不同型号不一样改完频段后重启模组再查ATCREG?。如果还是搜不到换一张已知能用的卡试排除卡的问题。4.2 现象ATCPIN? 返回 CME ERROR: 10原因模组没检测到 SIM 卡。可能是卡没插好、卡座接触不良、或者 SIM 卡检测引脚配置不对。解决先检查硬件。EC200 系列有ATQSIMDET命令控制 SIM 卡检测功能# 查询 SIM 卡检测配置 ATQSIMDET? # 返回 QSIMDET: 1,0 # 第一个参数1开启检测0关闭 # 第二个参数检测电平0低电平检测1高电平检测 # 如果卡座是常闭型可能需要关闭检测 ATQSIMDET0,0如果硬件没问题检查ATQSIMSTAT看插拔状态上报是否正常。有些卡座的热插拔引脚没接模组会一直认为卡不在位。4.3 现象PPP 拨号成功但无法访问外网原因PDP 上下文激活了但 APN 配置不对或者 NAT 没开。解决先确认 APN。不同运营商的 APN 不同移动是CMNET联通是3GNET电信是CTNET。物联网卡有专门的 APN问卡商要。# 重新配置 APN ATQICSGP1,1,正确的APN,用户名,密码,1 # 去激活再重新激活 ATQIDEACT1 ATQIACT1如果 APN 没问题检查 NAT 配置。EC200 系列在 USB 网卡模式下需要开启 NATATQCFGnat,1 # 1 开启 NAT0 关闭4.4 现象URC 上报丢失或延迟严重原因URC 缓存开启或者串口流控没配好导致数据被覆盖。解决先查 URC 缓存配置ATQCFGurc/cache? # 返回 QCFG: urc/cache,1 表示缓存开启 # 改为 0 关闭缓存 ATQCFGurc/cache,0然后检查串口流控。如果主控处理速度慢建议开启硬件流控ATIFC2,2 # 2,2 启用 RTS/CTS 硬件流控4.5 现象ATQCFGusbnet 切换后设备不识别原因切换 usbnet 模式后没有重启或者上位机驱动不匹配。解决切换后必须重启ATQCFGusbnet,2 ATCFUN1,1 # 等待模组重启完成通常 10-15 秒重启后如果 Windows 不识别检查设备管理器里有没有未识别的 USB 设备。RNDIS 模式需要 Windows 自带驱动如果显示黄色感叹号手动更新驱动指向模组的 USB 驱动目录。Linux 下 ECM 模式一般免驱但需要确认内核编译了cdc_ether模块。5. 进阶技巧用 ATQCFG 做精细化网络控制与固件兼容性检查前面讲的都是「能用」层面的操作。这一章讲几个「用好」的技巧以及怎么判断你手里的固件和手册是否匹配。5.1 ATQCFG 的子命令组合技ATQCFG是移远扩展命令里最强大的一个它有十几个子命令可以精细控制网络行为。我挑三个最实用的组合组合一锁定制式 锁定频段# 只搜 LTE不搜 2G/3G ATQCFGnwscanmode,3,1 # 3 只搜 LTE1 立即生效 # 锁定 B3 和 B8 ATQCFGband,0x0,0x0,0x80000000 # 具体掩码值查手册频段表这个组合用在固定场景的设备上比如共享充电宝你知道当地只有 B3 和 B8锁定后搜网速度能快一倍。组合二控制 URC 上报时机# 设置 URC 延迟上报 100ms ATQCFGurcdelay,100 # 设置 RI 信号在 URC 上报时的行为 ATQCFGurc/ri/other,pulse,100,1 # 参数模式pulse, 持续时间100ms, 是否在 URC 前拉低1这个组合用在主控休眠唤醒的场景。主控在休眠时模组收到 URC 先拉 RI 引脚唤醒主控延迟 100ms 再发 URC 数据确保主控准备好接收。组合三网络搜索顺序优化# 设置搜网顺序为 LTE - 2G ATQCFGnwscanseq,03,1 # 03 先 LTE 后 2G这个在 LTE 信号弱但 2G 信号好的地方有用。默认顺序可能是 LTE - 3G - 2G搜 3G 浪费时间。5.2 用 ATGMR 和 ATQGMR 做固件版本比对手册是基于特定固件版本写的你手里的模组固件可能更新或更旧。查固件版本ATGMR # 返回类似EC200ACNAR01A03M16 # 这是固件版本号 ATQGMR # 返回更详细的版本信息拿到版本号后对照手册的文档历史。这份手册是 2021 年 12 月 13 日的 1.0 受控版本如果你的固件是 2022 年之后的部分命令的参数范围可能有变化。最稳妥的办法是对每个要用的命令先发ATcmd?查实际支持的参数范围再对照手册确认。5.3 一个我常用的快速验证脚本最后分享一个我每次拿到新模组都会跑的验证脚本。用 Python 写通过串口发命令自动检查关键状态import serial import time def check_module(port, baudrate115200): ser serial.Serial(port, baudrate, timeout2) results {} # 检查列表命令 - 预期关键字 checks [ (AT, OK), (ATCPAS, CPAS: 0), (ATCPIN?, CPIN: READY), (ATCREG?, CREG: 0,1), (ATCSQ, CSQ:), (ATQNWINFO, QNWINFO:), ] for cmd, expect in checks: ser.write((cmd \r\n).encode()) time.sleep(0.5) resp ser.read_all().decode(errorsignore) results[cmd] expect in resp print(f{cmd}: {PASS if results[cmd] else FAIL} - {resp.strip()}) ser.close() return results # 使用示例 check_module(/dev/ttyUSB0)这个脚本的逻辑很简单逐条发命令检查响应里有没有预期关键字。ATCPAS返回CPAS: 0说明模组 readyATCPIN?返回CPIN: READY说明卡正常ATCREG?返回CREG: 0,1说明注册成功。任何一条 FAIL就按前面章节的排查步骤去查。参数说明port是串口设备路径Linux 下通常是/dev/ttyUSB0或/dev/ttyACM0Windows 下是COM3之类的。baudrate默认 115200如果模组改过波特率这里要同步改。timeout2是读超时模组响应慢的时候可以加到 5。从那以后我每次拿到新模组都强制走一遍这个脚本确认基础状态没问题再往下做业务逻辑。很多所谓的「玄学问题」其实在第一步就能暴露出来。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。