百望 QDC507 4G 模块修改 USB VID:PID 接入 VoHive
背景
大疆 4G 图传模块有两种芯片方案:早期批次使用 移远 EG25-G,后期批次换用了 百望 QDC507。两种模块的默认 USB VID:PID 都是大疆私有的 2ca3:4006,通用 Linux 驱动无法直接识别。
VoHive 平台原生支持 Quectel 系列模块(VID:PID 2c7c:0125),通过 AT 命令改写 USB 身份后,百望模块也能无缝接入。
本文记录百望 QDC507 芯片模块的 VID:PID 改写过程与踩坑记录。移远 EG25 的改写方法可参考 之前的文章。
硬件信息
| 项目 | 值 |
|---|---|
| 芯片 | 百望 QDC507GLEFM21 |
| 接口 | USB Type-C |
| 默认 VID:PID | 2ca3:4006 (DJI Technology) |
| 目标 VID:PID | 2c7c:0125 (Quectel EC25) |
| 操作环境 | Ubuntu 24.04.4 LTS, Kernel 6.8.0 |
操作步骤
第一步:加载驱动并绑定设备
1 | # 加载 usb-serial 和 option 驱动 |
此时系统会生成 /dev/ttyUSB0 ~ /dev/ttyUSB4 串口设备。
第二步:发送 AT 命令改写 USB 身份
1 | # 写入新 VID:PID(永久生效,存入 NVRAM) |
两个命令都应返回 OK。
第三步:验证改写结果
1 | # 等待 5 秒后查看 |
踩坑记录
坑1:socat 参数必须用 crnl
最初我用的参数是 raw,echo=0:
1 | # ❌ 无效 — AT 命令无响应 |
百望 QDC507 对终端模式有要求,必须使用 crnl 参数(自动处理 CRLF 换行):
1 | # ✅ 正确 |
坑2:AT 查询走 QMI 通道
百望 QDC507 与移远 EG25 的一个区别是:标准串口上的 AT 命令查询全部返回 ERROR。百望芯片将 AT 查询路由到了 QMI 通道,而非传统的 /dev/ttyUSB* 串口。
这意味着:
- 写入命令(如
AT+QCFG改写 VID:PID)在/dev/ttyUSB2上有效 - 查询命令(如
AT+CGSN查 IMEI)在串口上无效,需通过 QMI 协议读取
VoHive 走的是 QMI 通道,所以不受影响——设备注册、短信、网络状态等功能全部正常。
坑3:qmi_wwan 驱动未自动绑定
改写后模块重新枚举为 2c7c:0125,但 qmi_wwan 驱动可能没有自动绑定到网卡接口。需要手动注入:
1 | echo "2c7c 0125" | sudo tee /sys/bus/usb/drivers/qmi_wwan/new_id |
绑定成功后会看到 /dev/cdc-wdm0 设备。
VoHive 配置
VoHive 检测到新设备后,在 Web UI 添加即可。配置中 modem_type 保持 quectel,device_backend 使用 qmi。
VoHive 日志确认:
1 | QMI: modem 支持 27 个 QMI 服务 |
总结
| 芯片 | socat 参数 | AT 查询 | QMI 兼容 | VoHive 可用 |
|---|---|---|---|---|
| 移远 EG25-G | crnl 或 raw,echo=0 |
✅ 正常 | ✅ 原生 | ✅ |
| 百望 QDC507 | 必须 crnl |
❌ 走 QMI 通道 | ✅ 兼容 | ✅ |
两种芯片改写 VID:PID 的核心步骤相同,只是百望对 socat 终端参数更敏感。改写后永久生效,下次插入任何 Linux 设备都会直接识别为 Quectel EC25。