
最近跟风买了一个大疆的 4G 模块。一开始我只是想看看它能不能接到 NAS 上,用来做一个短信收发管理工具。结果一路折腾下来,发现这东西确实有点意思,但也不是“插上就能用”。
一开始的目标
我的初始目标很简单:
把这个大疆 4G 模块接到自己的设备上,实现短信集中收发管理。最好可以放在 NAS 上,因为 NAS 长期开机、管理方便,也适合跑一些 Web 服务。
后来又看到网上有人把这个模块识别成 Quectel EC25 后,配合 VoHive 使用,可以管理短信、eSIM、设备状态,甚至通过 Telegram 做通知,于是就开始评估是否要刷机或改设备信息。
要不要刷机?
刚开始比较担心“刷机”这个词,因为涉及固件、NV 参数之类的东西,风险不低。后来确认下来,这次并不是传统意义上的刷固件,而是通过 AT 命令修改 USB 识别信息。
这个大疆 4G 模块本质上是移远 Quectel EG25-G 的变体,默认 USB ID 是大疆私有的:
2ca3:4006 修改后可以让系统把它识别成更通用的 Quectel EC25:
2c7c:0125 修改之后,Linux 内核就能比较自然地加载 option、qmi_wwan、cdc_wdm 等驱动,设备会出现:
/dev/ttyUSB*
/dev/cdc-wdm0
wwan0 这一步完成后,可玩性大幅增加。
为什么最后没有放在 NAS 上?
一开始我确实更想把它插在 NAS 上。NAS 稳定、安静、长期在线,看起来是最合适的宿主。
但实际测试后发现,我的 NAS 虽然能看到 USB 设备本身,却缺少关键内核模块,比如:
option
qmi_wwan
cdc_wdm
usb_wwan 也就是说,NAS 能看到“有个 USB 设备插进来了”,但不能把它识别成可用的蜂窝模块、串口设备或 QMI 网络设备。
这就很尴尬了。VoHive 即使跑在 NAS 上,也无法真正接管这个模块。
所以最后确定方案是:
模块接在 OpenWrt 路由器上,VoHive 也部署在 OpenWrt 上;NAS 如有需要,只做反向代理或访问入口。
这个方案反而更合理。路由器本来就是网络设备,OpenWrt 对 USB 网卡、QMI、串口这些支持也更直接。
部署到 OpenWrt
OpenWrt 上识别成功后,模块状态基本正常:
2c7c:0125
/dev/cdc-wdm0
/dev/ttyUSB0 - /dev/ttyUSB3
wwan0 之后在 OpenWrt 上部署 VoHive。VoHive 提供了一个 Web 管理界面,可以看到模块状态、SIM 信息、短信中心、eSIM 页面、通知配置等功能。
最后访问地址是:
[http://192.168.5.1:7575](http://192.168.5.1:7575) 部署完成后,VoHive 可以正常启动,也能识别模块。
修改设备信息后的变化
把设备从大疆私有 ID 改成 Quectel EC25 兼容身份后,最大的变化是系统识别能力明显增强。
原来它更像是一个“只服务于大疆生态的模块”;修改后,它变成了一个可以被 Linux 正常管理的蜂窝模块。
可以实现的东西包括:
- 识别 SIM 卡信息
- 查看信号强度、网络状态、注册状态
- 管理短信收发
- 通过 QMI 管理蜂窝模块
- 配合 VoHive 做 Web 化管理
- 配置 Telegram、Webhook、Email 等通知
- 理论上支持 eSIM/eUICC 卡管理
- 使用支持蜂窝注册的 SIM 时,还可以进一步配置数据联网
这一步算是整个折腾里最关键的分水岭。
目前实现的使用场景
目前我已经实现的场景是:
把一张能正常注册蜂窝网络的 SIM 卡插在大疆 4G 模块里,通过 OpenWrt 上的 VoHive 实现短信集中收发管理。
现在可以在 Web 页面里查看短信,也可以配置 Telegram Bot,把收到的短信推送到 Telegram。
这样一来,一些验证码、通知短信、备用号码短信,就不用再依赖某一台手机常年开机插卡了。模块插在路由器上,VoHive 负责管理,Telegram 负责提醒,整体体验还挺顺手。