不刷机,让大疆一代 4G 模块在 Windows 上收短信、连 4G
目录 展开 收起
最近群里不少小伙伴都在玩大疆一代 4G 模块,热度挺高。大家常见的玩法是把它接到 NAS 上,再用 Docker 跑 VoHive 管理短信和网络。看他们折腾得热闹,我也跟着买了一个。
早上收到快递,我直接把模块带到了公司。NAS 在家,Docker 方案只能等晚上回去再玩;眼前正好有一台 Windows 电脑,那就先插上去,看看原厂状态能不能直接跑起来。
其实我最先想到的,还是照群友们的思路:直接在这台 Windows 上用 Docker Desktop 跑 SIM 管理面板。Compose 本身不难,真正卡住的是 USB 设备透传——Windows 和 Docker 的 Linux 环境之间还隔着一层,挂载 /dev:/dev 也不会凭空把 Windows 里的模块送进容器。继续走下去还得折腾 WSL、usbipd 之类的转发链路,我当时只是想快速试机,便没有继续做 Windows Docker 方案,转而研究原生驱动。
设备管理器很快热闹起来:一个 USB 复合设备,下面挂着五个总线自报名称为 Baiwang 的未知设备,整整齐齐五个黄色感叹号。
网上的教程大多从 Linux、OpenWrt 或 VoHive 开始,紧接着就是「改机」「改 ID」甚至「刷机」。我只想先确认一件事:原厂状态能不能在 Windows 上收短信、上 4G?
答案是可以。
先把几个词说清楚
- VID/PID:每个 USB 设备都有的一对「身份证号」。VID 表示厂商,PID 表示产品型号;Windows 会据此决定能否自动找到对应驱动。
- MI_02、MI_04:这块模块插到电脑后,实际上同时提供了好几个功能;
MI后的数字只是其中一个功能接口的编号,不是模块型号。 - AT 指令:向 4G 模块发送的短文本命令,用于查询 SIM 卡、信号、运营商和短信等状态。发送最简单的
AT,模块回复OK,就说明串口能通信。 - WWAN:Windows 对「蜂窝网络网卡」的称呼,也就是让电脑通过 SIM 卡使用 4G 上网的那张网卡。
这次实测没有向模块写入或改动任何配置。做的事情只有两件:
- 为用于发送 AT 指令的
MI_02选择串口驱动; - 为用于 4G 上网的
MI_04选择蜂窝网卡驱动。
最后的结果:
| 项目 | 实测结果 |
|---|---|
| 控制串口 | 正常,Windows 分配为 COM3 |
| 模块识别 | 自报 Baiwang,型号 QDC507 |
| 固件 | QDC507GLEFM21_01.001.02.001 |
| SIM | 正常识别 |
| 短信 | PDU 收发正常,可区分模块存储与 SIM 存储 |
| 蜂窝网络 | Windows Mobile Broadband 正常识别 |
| 运营商 | 中国电信 |
| IPv4 / IPv6 | 均正常获取 |
| 外网测试 | 指定 4G 源地址访问测试页返回 HTTP 204 |
下面把完整过程记下来。
Windows 怎么认出它
模块的 USB 身份证号是:
VID_2CA3&PID_4006其中 VID_2CA3 是厂商编号,PID_4006 是产品编号。普通人不需要记住它们;后面的安装步骤只用它来确认自己选中了模块中正确的功能接口。
通过 ATI、AT+GMI、AT+GMM 和 AT+QGMR 查询,得到:
BaiwangQDC507Revision: QDC507GLEFM21这里的 Baiwang 是模块固件通过 ATI、AT+GMI 返回的原始字符串,Windows 读取到的 USB 总线设备描述也是它。
它本质上是移远 EG25-G 系列方案,只是原厂状态使用 DJI 的 USB 身份证号 2CA3:4006,而非常见的移远编号。硬件和协议能力都在,Windows 自动匹配不到的只是这张「身份证」。
把它看成一栋房子会更好理解:模块只插了一根 USB 线,但里面有五个不同用途的「房间」。我们只需要进入第 2 个和第 4 个:
| 接口 | 常见用途 | 本文是否处理 |
|---|---|---|
MI_00 | 模块诊断 | 否 |
MI_01 | GPS 定位 | 否 |
MI_02 | 发送查询指令的串口 | 是 |
MI_03 | 模块内部辅助功能 | 否 |
MI_04 | 4G 上网网卡 | 是 |
在设备管理器里,它们的硬件 ID 类似:
USB\VID_2CA3&PID_4006&MI_00USB\VID_2CA3&PID_4006&MI_01USB\VID_2CA3&PID_4006&MI_02USB\VID_2CA3&PID_4006&MI_03USB\VID_2CA3&PID_4006&MI_04「不刷机」到底省略了什么
很多教程所说的「刷机」,实际是在模块里把 USB 身份证号从:
2CA3:4006 # DJI永久改成:
2C7C:0125 # Quectel改完后 Linux 能自动找到常见驱动,使用起来确实方便;但这个改动会写入模块,拔线或卸载 Windows 驱动都不会还原。
本文完全不做这一步。代价是 Windows 不会自动匹配驱动,需要在设备管理器里手动指定。好处也很直接:模块保持原厂身份,整个过程可以通过卸载 Windows 设备驱动撤销。
真正替换模块系统软件的「刷固件」风险更高,还可能影响通信校准和设备身份。为了查询状态、收发短信和 4G 上网,没有必要碰它。
准备签名驱动
需要两类驱动:
qcser.inf # 串口qcwwan.inf # WWAN 网卡可以使用 Quectel LTE&5G Windows USB Driver,或系统中已有的 Microsoft WHCP 签名 Qualcomm 驱动。先检查驱动仓库:
pnputil /enum-drivers | Select-String -Pattern 'qcser|qcwwan|Quectel|Qualcomm' -Context 3,5重点看两项:
Original Name: qcser.inf / qcwwan.infPublished Name: oemXX.infoemXX.inf 的编号由每台 Windows 自己分配,不能照抄别人的 oem107.inf、oem108.inf。找到实际路径后检查签名:
Get-AuthenticodeSignature 'C:\Windows\INF\oemXX.inf'Status 应为 Valid。
第一步:把 MI_02 装成 AT 串口
这一步的目标是让 Windows 给模块分配一个 COM 端口,之后就能用普通串口工具或 PowerShell 向它发送查询命令。
在设备管理器的「其他设备」中,逐个查看 Baiwang:
右键 → 属性 → 详细信息 → 硬件 ID找到:
USB\VID_2CA3&PID_4006&MI_02然后:
更新驱动程序→ 浏览我的电脑以查找驱动程序→ 让我从计算机上的可用驱动程序列表中选取→ 显示所有设备→ 从磁盘安装选择实际的 qcser.inf,型号选择:
Qualcomm HS-USB AT Port 9003如果用的是移远驱动包,名称可能是:
Quectel USB AT Port不要选 Diagnostics、NMEA 或 QDLoader。确认 Windows 的不匹配提示后,设备会出现在「端口(COM 和 LPT)」下。我的机器分配到了 COM3。
第二步:用 AT 指令验证
下面这段 PowerShell 只执行查询,不修改模块配置。将 COM3 换成设备管理器中的实际端口;它相当于依次问模块「能通信吗、SIM 能用吗、信号和运营商是什么」。
$port = [System.IO.Ports.SerialPort]::new('COM3', 115200, 'None', 8, 'One')$port.ReadTimeout = 2500$port.WriteTimeout = 2000$port.DtrEnable = $true$port.RtsEnable = $true
try { $port.Open() Start-Sleep -Milliseconds 400
foreach ($cmd in @( 'AT', 'ATI', 'AT+QGMR', 'AT+CPIN?', 'AT+QCCID', 'AT+CSQ', 'AT+CEREG?', 'AT+COPS?' )) { $port.DiscardInBuffer() $port.Write("$cmd`r") Start-Sleep -Milliseconds 900 "--- $cmd ---" $port.ReadExisting() }}finally { if ($port.IsOpen) { $port.Close() } $port.Dispose()}正常结果:
AT → OKAT+CPIN? → +CPIN: READYAT+CEREG? → 0,1 或 0,5AT+COPS? → 当前运营商有个容易误判的地方:LTE 注册主要看 CEREG。本次测试里 CEREG: 0,1 已经注册成功,但传统电路域的 CREG 仍可能显示未注册或被拒绝,不影响 LTE 数据业务。
SIM 没插好时常见:
+CME ERROR: 10 # 未检测到 SIM+CME ERROR: 13 # SIM 失败断开 USB 电源,重新安装 Nano-SIM,再上电即可。不要带电反复插拔 SIM。
顺手验证短信
短信存储有两个容易混淆的名字:
| 名称 | 含义 |
|---|---|
ME | 模块内部存储,换 SIM 后仍然保留 |
SM | 当前 SIM 卡存储 |
查询当前存储:
AT+CPMS?例如:
+CPMS: "ME",8,23,"ME",8,23,"ME",8,23这表示模块内部有 8 个短信分片,不代表当前 SIM 卡中有 8 条短信。切到 SIM 卡查询数量,再恢复模块存储:
AT+CPMS="SM","SM","SM"AT+CPMS?AT+CPMS="ME","ME","ME"常见只读短信命令:
AT+CMGF? # 查询短信模式AT+CNMI? # 查询新短信通知AT+CSCA? # 查询短信中心AT+CMGL=4 # 列出当前存储中的全部短信AT+CMGR=0 # 读取指定序号QDC507 默认通常使用 PDU 模式,也就是把短信保存成机器可读的编码。中文长短信会拆成多个分片;读取时需要按顺序合并并解码,短信内容本身没有丢失。
第三步:把 MI_04 装成 WWAN 网卡
这一步完成后,模块会像电脑内置的手机网络功能一样,出现在 Windows 的网络连接中。
回到设备管理器,找到:
USB\VID_2CA3&PID_4006&MI_04重复「从磁盘安装」,这次选择实际的 qcwwan.inf。
优先选择:
Qualcomm HS-USB WWAN Adapter 9003有些驱动列表不显示带 9003 的名称,可以选择使用同一 qcwwan.ndi 安装段的通用项:
Qualcomm HS-USB WWAN AdapterQuectel 驱动包中可能显示:
Quectel Wireless Ethernet Adapter不要选带 MUX、MI_03、Diagnostics 或 NMEA 的项。
安装完成后检查:
Get-PnpDevice -PresentOnly | Where-Object InstanceId -match 'VID_2CA3&PID_4006&MI_04'
Get-NetAdapter -IncludeHidden | Where-Object InterfaceDescription -match 'Qualcomm|Quectel|WWAN'
netsh mbn show interfacesWindows 应该能识别出 Mobile Broadband 接口、模块型号、固件、运营商和信号。
第四步:配置 APN
APN 可以理解成运营商给手机或网卡配置的「上网入口名称」。普通手机通常自动填写;这块模块在 Windows 中可能需要手动填一次。
三大运营商常用 APN:
| 运营商 | 常用 APN |
|---|---|
| 中国移动 | cmnet |
| 中国联通 | 3gnet 或 uninet |
| 中国电信 | ctnet |
物联网卡、企业卡、定向流量卡应使用服务商给出的专用 APN,不要猜。
部分 Windows 可以在这里添加:
设置 → 网络和 Internet → 手机网络 → APN 设置但我的 Windows 版本根本没有显示「移动运营商设置」。这时可以直接用 netsh mbn。
先查询接口和当前 SIM 信息:
netsh mbn show interfacesnetsh mbn show readyinfo interface="手机网络"输出中的 Subscriber ID 和 SIM ICC ID 属于敏感标识,不要截图公开。创建 ctnet.xml,将占位内容替换为当前 SIM 的实际值:
<?xml version="1.0" encoding="utf-8"?><MBNProfile xmlns="http://www.microsoft.com/networking/WWAN/profile/v1"> <Name>China Telecom ctnet</Name> <IsDefault>true</IsDefault> <ProfileCreationType>UserProvisioned</ProfileCreationType> <SubscriberID>替换为 Subscriber Id</SubscriberID> <SimIccID>替换为 SIM ICC Id</SimIccID> <HomeProviderName>China Telecom</HomeProviderName> <AutoConnectOnInternet>true</AutoConnectOnInternet> <ConnectionMode>auto</ConnectionMode> <Context> <AccessString>ctnet</AccessString> <Compression>DISABLE</Compression> <AuthProtocol>NONE</AuthProtocol> </Context></MBNProfile>导入并连接:
netsh mbn add profile interface="手机网络" name="D:\路径\ctnet.xml"netsh mbn show profiles interface="手机网络"netsh mbn connect interface="手机网络" connmode=name name="China Telecom ctnet"本次连接时,netsh 首先返回了 0x139f,看起来像失败;但几秒后接口已经进入 Connected。所以不要只看第一行错误码,应该检查实际状态:
Start-Sleep -Seconds 8netsh mbn show interfacesGet-NetIPConfiguration -InterfaceAlias '手机网络'如果已经获得运营商地址、默认网关和 DNS,就说明数据会话已建立。
验证流量确实走 4G
电脑同时连接 Wi-Fi 或有线网络时,直接访问网页未必走 4G。可以绑定蜂窝接口的 IPv4 地址进行测试:
$src = Get-NetIPAddress -InterfaceAlias '手机网络' -AddressFamily IPv4 | Where-Object IPAddress -notlike '169.254.*' | Select-Object -First 1 -ExpandProperty IPAddress
ping.exe -n 3 -S $src 1.1.1.1
curl.exe --interface $src ` -o NUL ` -w "HTTP=%{http_code} CONNECT=%{time_connect}s TOTAL=%{time_total}s`n" ` http://connectivitycheck.gstatic.com/generate_204本次实测:
1.1.1.1:3/3 成功HTTP:204连接耗时:约 70ms说明蜂窝接口本身已经可以正常访问互联网。
断开和重连:
netsh mbn disconnect interface="手机网络"
netsh mbn connect ` interface="手机网络" ` connmode=name ` name="China Telecom ctnet"换卡后需要做什么
同一运营商换卡时,APN 通常不变;换运营商时一般要换 APN。Windows 会把这份配置和具体 SIM 卡关联,因此即使同运营商换卡,旧配置也可能不再匹配。
换卡后:
netsh mbn show readyinfo interface="手机网络"netsh mbn show profiles interface="手机网络"删除旧配置:
netsh mbn delete profile ` interface="手机网络" ` name="China Telecom ctnet"再使用新卡的信息和正确的 APN 重新生成配置。
为什么做不到真正的插上即用
实验已经证明,驱动本身完全能工作,缺的只有硬件 ID 匹配:
模块:2CA3:4006通用驱动声明的设备:05C6:* / 2C7C:0125 等想让 Windows 真正自动安装,只有两条路:
- 把模块 ID 改成通用驱动认识的
2C7C:0125; - 做一份包含
2CA3:4006且由可信厂商或微软签名的驱动。
第一条会写模块配置,不符合本文目标;第二条不是改两行 INF 就行,修改后原签名会失效。
不过可以做一个管理员运行的一键工具,用 Windows SetupAPI 自动完成 MI_02、MI_04 的驱动选择,再按 SIM 运营商生成 APN。它仍然是在 Windows 中安装驱动,但用户不必再进设备管理器逐项点击,而且完全不用刷模块。
收尾
这次最有价值的结论不是「QDC507 能上网」——Linux 社区早就证明了。真正补上的拼图是:模块的 USB 身份证号不同,并不妨碍它在 Windows 下查询状态、收发短信和使用 4G 数据;它只让 Windows 无法自动匹配驱动。
我原本买它,就是打算晚上带回家接 NAS、跑 Docker。这趟公司里的 Windows 测试算是开箱后的前菜,却顺手验证了一条更轻的路:如果目标只是把模块临时用作短信终端或备用 4G 网卡,先别刷,两次手动绑定驱动已经足够。