快速安装 - Linux / OpenWrt

EC25-AF 安装
Linux / OpenWrt 平台快速使用 EC25-AF LTE Cat 4 模块(Mini PCIe 转 USB)
需要准备
- 一台 Linux 设备(本文以 OpenWrt / ImmortalWrt 路由器为例)
- EC25-AF Mini PCIe 模块 + Mini PCIe 转 USB 2.0 底座
- 可上网的 Nano-SIM 卡
- 路由器的 WAN 口可以正常上网(用于下载驱动)
如果路由器还没有联网,可以先在能上网的电脑上下载对应的 IPK/APK,再用 U 盘安装。 不同路由器架构不同,请在 OpenWrt 软件源 中查找对应版本。
接入设备
安装 Nano-SIM 卡

EC25-AF 有两个可插 SIM 卡的位置:
| 卡槽位置 | 说明 | 实测结果 |
|---|---|---|
| 模块本体卡槽 | Mini PCIe 模块 PCB 上的卡座 | AT+CPIN? → READY,IMSI / CCID 可读,注册 CHN-CT 正常 |
| USB 底座卡槽 | Fanconn Mini PCIe 转 USB 底座上的自弹式卡座 | AT+CPIN? → READY,同一张卡 IMSI / CCID 一致,注册及上网正常 |
同一时间只插一张 SIM 卡。
卡槽对应关系
实测结论:
- 两个物理卡槽都能正常识别 SIM 卡,读出的 IMSI 与 CCID 完全一致
- EC25-AF 规格书中 (U)SIM 接口为 ×1,且固件不支持
AT+QUIMSLOT/AT+QCFG="simslot"(均返回ERROR) - 因此 USB 底座卡槽与模块本体卡槽对应同一路 SIM(SIM1),属于两个并联/备用的物理卡座,不存在可独立切换的 SIM2 通道
不要把底座卡槽当作独立的“SIM 2”。EC25-AF(D) 只有一路 USIM,两个卡座同时插卡会相互冲突,请只插一张。
接入路由器 USB 接口
将 Mini PCIe 转 USB 底座插入路由器的 USB-A 接口。
注意:部分路由器的 USB 口供电不足,建议使用带独立供电的 USB HUB,避免模块反复重启。
配置 Dongle - 路由器部分
连接到路由器
ssh root@192.168.1.1
管理地址以实际路由器为准。
检查 USB 设备
先确认系统已经识别到模块:
root@OpenWrt:~# lsusb
预期可以看到 Quectel 设备(EC25 与 EC20 共用 USB PID,显示为 EC25 LTE modem):
Bus 001 Device 002: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
lsusb的iProduct字符串可直接读出模块型号,例如本机为EC25-AF。
如果提示 lsusb: not found,先安装 usbutils:
# OpenWrt 24.10 及更早版本
opkg update
opkg install usbutils
# ImmortalWrt 25.12 等使用 apk 的版本
apk update
apk add usbutils
安装驱动和工具
安装 USB 串口驱动(用于 AT 指令):
# opkg
opkg update
opkg install kmod-usb-serial-option
# apk
apk update
apk add kmod-usb-serial-option
安装 ECM 网卡驱动(用于 usb0 上网):
# opkg
opkg install kmod-usb-net-cdc-ether
# apk
apk add kmod-usb-net-cdc-ether
安装串口工具:
# opkg
opkg install minicom
# apk
apk add minicom
查看串口
root@OpenWrt:~# ls /dev/ttyUSB*
预期输出:
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3
EC25 的 AT 指令口通常为
/dev/ttyUSB2,本机实测波特率为115200。注意:重新插拔模块后,AT 口可能变为
/dev/ttyUSB3(本机复测时出现过)。 不确定时对/dev/ttyUSB0~/dev/ttyUSB3逐个发送ATI,有Quectel返回的即为 AT 口。如果
/dev/ttyUSB*不存在,请确认kmod-usb-serial-option已安装,并重新插拔模块。
可选:恢复出厂复位
复位会清除模块内的历史配置(APN、USB 模式、频段锁定等)。新设备或配置混乱时建议执行;如果模块当前工作正常,可以跳过本节,直接看 设置 USB 工作模式。
1. 进入 AT 终端
minicom -D /dev/ttyUSB2 -b 115200
发送 AT,返回 OK 表示通信正常:
AT
OK
2. 恢复出厂并重启
AT&F
OK
AT+QPRTPARA=3
OK
AT+CFUN=1,1
OK
AT+CFUN=1,1会让模块重启,USB 会重新枚举,串口会短暂消失,等待 30~60 秒即可。
3. 退出 minicom
按 Ctrl + A,再按 X,选择 Yes。
- 复位后
usbnet会恢复为模块默认值0(QMI / RMNET),需要按下一节重新设置为 ECM 模式。 - 复位后 APN 会被清空(
AT+CGDCONT?中cid=1的 APN 为空),必须重新配置,否则usb0能拿到 IP 但无法上网。
设置 USB 工作模式
重新进入 AT 终端:
minicom -D /dev/ttyUSB2 -b 115200
查看当前模式
AT+QCFG="usbnet"
+QCFG: "usbnet",0
OK
模式说明
| 参数 | 模式 | 说明 |
|---|---|---|
| 0 | QMI / RMNET | 需要 kmod-usb-net-qmi-wwan + uqmi,EC25 出厂默认 |
| 1 | ECM | Linux/OpenWrt 原生支持,推荐 |
| 2 | MBIM | 需要 kmod-usb-net-cdc-mbim + umbim |
| 3 | RNDIS | 需要 kmod-usb-net-rndis |
如果查询结果为
0(默认)或3(RNDIS)而系统没有安装对应驱动,就会出现“模块已识别,但没有任何网卡”的现象。
切换为 ECM 模式
AT+QCFG="usbnet",1
OK
AT+CFUN=1,1
OK
等待模块重启(约 30~60 秒),退出 minicom。
配置 APN
复位后 APN 为空,需要按运营商设置(以中国电信 ctnet 为例):
AT+CGDCONT=1,"IPV4V6","ctnet"
OK
AT+CFUN=1,1
APN 由运营商提供,例如
cmnet(移动)、ctnet(电信)、3gnet(联通)。ECM 模式下模块使用
cid=1的 APN 自动拨号。
确认网卡
root@OpenWrt:~# ls /sys/class/net
USB ECM 网卡通常命名为 usb0(若 eth0/eth1 未被占用,也可能命名为 eth2,以实际输出为准)。
root@OpenWrt:~# ip addr show usb0
预期输出(IP 由模块自动分配):
12: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
link/ether 72:c0:2e:c6:5f:18 brd ff:ff:ff:ff:ff:ff
inet 192.168.225.51/24 brd 192.168.225.255 scope global usb0
与 BG95 不同,EC25 切换到 ECM 模式后 AT 串口仍然存在(/dev/ttyUSB0 ~ /dev/ttyUSB3),
可以一边上网一边用 minicom 查询 CSQ、CEREG 等状态。
配置上网
方式一:命令行(UCI)
将 WAN 口的设备改为 usb0(接口名以实际为准,本文使用 wan / wan6):
uci set network.wan.device='usb0'
uci set network.wan6.device='usb0'
uci commit network
service network reload
如果是多 WAN 环境(例如 wan1 为主线路、wan3 为蜂窝备份),建议给蜂窝接口设置更高的 metric,实现主备切换:
uci set network.wan3.device='usb0'
uci set network.wan36.device='usb0'
uci set network.wan3.metric='20'
uci set network.wan36.metric='20'
uci commit network
service network reload
metric 数值越小优先级越高。
wan1保持默认0,蜂窝设为20,则网线优先、蜂窝备份;拔掉网线后自动切换到蜂窝。
方式二:Web 界面
- 打开
网络→接口→wan→编辑 - 将
设备选择为usb0 - 点击
保存→保存并应用 - 如需 IPv6,对
wan6做同样设置
验证
查看接口状态
root@OpenWrt:~# ifstatus wan
确认 "up": true,并且获取到 192.168.225.x 地址。
查看路由
root@OpenWrt:~# ip route
default via 10.0.0.1 dev eth1 src 10.0.0.43
default via 192.168.225.1 dev usb0 src 192.168.225.51 metric 20
测试模块链路
root@OpenWrt:~# ping -c 3 192.168.225.1
能通说明 路由器 ↔ 模块的 ECM 链路正常。
指定网卡测试(不拔网线也能验证蜂窝)
root@OpenWrt:~# ping -I usb0 -c 3 223.5.5.5
64 bytes from 223.5.5.5: seq=0 ttl=50 time=56.7 ms
64 bytes from 223.5.5.5: seq=1 ttl=50 time=32.9 ms
64 bytes from 223.5.5.5: seq=2 ttl=50 time=30.2 ms
IPv6 测试
多 WAN 场景下 IPv6 默认路由带有源地址前缀,需要指定源地址测试:
root@OpenWrt:~# ip -6 addr show usb0
root@OpenWrt:~# ping -6 -I <usb0 的 IPv6 地址> -c 3 2400:3200::1
在 ImmortalWrt 25.12.2(MT7981,内核 6.12)上实测:
- 模块型号
EC25-AF(D),固件EC25AFFDR07A08M4G_01.002.01.002 - SIM 插在模块本体卡槽或 USB 底座卡槽均可正常识别:
+CPIN: READY,IMSI / CCID 一致,成功注册CHN-CT - 两个卡座对应同一路 USIM(SIM1),不存在独立的 SIM2
- 恢复出厂后
usbnet默认值为0,切换为1(ECM)后生成usb0 - ECM 模式下
/dev/ttyUSB0~/dev/ttyUSB3仍然可用(AT 口可能为ttyUSB2或ttyUSB3) - 恢复出厂后 APN 为空,配置
ctnet并重启后,IPv4 与 IPv6 均可正常上网
常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
lsusb 无 2c7c:0125 | USB 未识别/供电不足 | 更换 USB 口或使用带供电 HUB |
有 lsusb,无 /dev/ttyUSB* | 未安装串口驱动 | 安装 kmod-usb-serial-option |
无 usb0 | usbnet=0/3 但未装 QMI/RNDIS 驱动 | 切换为 ECM(usbnet=1)或安装对应驱动 |
usb0 无 IP | 未运行 DHCP 客户端 | 确认接口 proto 为 dhcp 并重新加载网络 |
usb0 有 IP 但无法上网 | 复位后 APN 为空 | AT+CGDCONT=1,"IPV4V6","<APN>" 后重启模块 |
| AT 无返回 | 串口或波特率不对 | 确认 /dev/ttyUSB2、波特率 115200(可再试 9600) |
复位后长时间 +CSQ: 99,99 | 模块正在重新搜网 | 等待 1~2 分钟,用 AT+QENG="servingcell" 确认已驻留小区 |
| 两个卡座同时插卡后异常 | 两个卡座共用一路 USIM | 只插一张卡,见 卡槽对应关系 |
更多 AT 指令请参考 设备调试。