百望 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
2
3
4
5
6
# 加载 usb-serial 和 option 驱动
sudo modprobe usbserial
sudo modprobe option

# 将 DJI 的 VID:PID 注册到 option 驱动
echo "2ca3 4006" | sudo tee /sys/bus/usb-serial/drivers/option1/new_id

此时系统会生成 /dev/ttyUSB0 ~ /dev/ttyUSB4 串口设备。

第二步:发送 AT 命令改写 USB 身份

1
2
3
4
5
# 写入新 VID:PID(永久生效,存入 NVRAM)
echo 'AT+QCFG="usbcfg",0x2C7C,0x0125,1,1,1,1,1,0,0' | sudo socat -t 3 - /dev/ttyUSB2,b115200,crnl

# 重启模块使更改生效
echo 'AT+CFUN=1,1' | sudo socat -t 3 - /dev/ttyUSB2,b115200,crnl

两个命令都应返回 OK

第三步:验证改写结果

1
2
3
# 等待 5 秒后查看
lsusb | grep 2c7c
# 应显示: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem

踩坑记录

坑1:socat 参数必须用 crnl

最初我用的参数是 raw,echo=0

1
2
3
4
# ❌ 无效 — AT 命令无响应
sudo socat - /dev/ttyUSB2,b115200,raw,echo=0 <<'EOF'
AT+QCFG="usbcfg",0x2C7C,0x0125,1,1,1,1,1,0,0
EOF

百望 QDC507 对终端模式有要求,必须使用 crnl 参数(自动处理 CRLF 换行):

1
2
# ✅ 正确
echo 'AT+QCFG="usbcfg",0x2C7C,0x0125,1,1,1,1,1,0,0' | sudo socat -t 3 - /dev/ttyUSB2,b115200,crnl

坑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 保持 quecteldevice_backend 使用 qmi

VoHive 日志确认:

1
2
QMI: modem 支持 27 个 QMI 服务
[baiwang] 收到新短信通知 (QMI)

总结

芯片 socat 参数 AT 查询 QMI 兼容 VoHive 可用
移远 EG25-G crnlraw,echo=0 ✅ 正常 ✅ 原生
百望 QDC507 必须 crnl ❌ 走 QMI 通道 ✅ 兼容

两种芯片改写 VID:PID 的核心步骤相同,只是百望对 socat 终端参数更敏感。改写后永久生效,下次插入任何 Linux 设备都会直接识别为 Quectel EC25。