Quectel EC20 在 Linux 上的使用
本文使用的 EC20 R2.1 Mini PCIe 是一款支持 PCI Express Mini Card 标准接口的 LTE 模块,采用 LTE 3GPP Rel.11 技术。模块介绍请看 Quectel EC20。
背景知识
- PPP
- GobiNet 驱动
- QMI_WWAN 驱动
- quectel-CM:Quectel Connect Manager
- RNDIS(Remote Network Driver Interface Specification,远程网络驱动接口规范)是一个通信协议。 它是微软公司的专利协议,被大多数Windows、Linux和Unix系统所支持。 它主要使用USB协议作为其下层传输,它向上层提供虚拟的以太网连接。
拨号工具
- pppd
- Gobinet + QconnectManager
- modemmanager
- WvDial
网卡名称
- ppp0
- wwan0
- usb0
准备工作
硬件连接
在开始实验之前,先准备好 EC20 mini PCIe 模块,并通过 mini PCIe 转 USB 转接板连接到 Linux 主机。
- 硬件描述: EC20 模块封装成标准的 PCIe 接口,实际走的是 USB 信号,并虚拟出多个 ttyUSB 设备节点。
- 系统描述: 本实验基于 Ubuntu 20.04(Linux 内核版本 5.8.0-55)进行。
内核配置
本文在 Ubuntu 20.04 进行测试,测试前请先确认当前内核已配置下列一些选项。
CONFIG_USB_SERIAL
CONFIG_USB_SERIAL_WWAN
CONFIG_USB_SERIAL_OPTION
CONFIG_USBNET
CONFIG_PPP
并检查内核是否已经加载相应模块。
lsmod | grep usb
lsmod | grep ppp
提示:新版的 Ubuntu 已经支持 EC20 4G 模块的驱动,连接之后就能自动识别,需要准备的只有应用层的 pppd 和 wvdial 等程序。
安装软件
如果没有 pppd 和 wvdial 命令,请执行如下命令进行安装。
sudo apt install ppp
sudo apt install wvdial
检查是否安装成功。
$ pppd --version
pppd version 2.4.7
$ wvdial --version
WvDial 1.61
Copyright (c) 1997-2005 Net Integration Technologies, Inc.
连接 EC20 模块,执行 lsusb 命令,如果出现如下内容则模块已经成功被 Linux 系统识别到。
Bus 002 Device 009: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
其中,0x2C7C
和 0x0125
分别是 Quectel EC25/EC20 R2.0 的 VID 和 PID 编号。
AT 功能
当连接模块并加载 USB 驱动成功后,在 /dev 目录下将会创建出几个 tty 设备节点。例如 /dev/ttyUSB2 是 AT 指令的控制端口。
$ ls -l /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 6月 26 00:14 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 6月 26 00:13 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2 6月 26 00:16 /dev/ttyUSB2
crw-rw---- 1 root dialout 188, 3 6月 26 00:14 /dev/ttyUSB3
其中 ttyUSB0 为模块的 DM 端口,ttyUSB1 为 GPS NMEA 数据输出端口,ttyUSB2 为 AT 指令通信端口,ttyUSB3 为 PPP 连接端口。
接下来,就可以通过 ttyUSB2 串口输入 AT 指令并接收返回数据。在 Linux 下最直接的方式就是使用 echo 和 cat 命令,分别打开两个终端,一边执行 echo 命令发送 AT 指令,一边执行 cat 命令等待数据。
cat /dev/ttyUSB2 & echo -e "ATI\r\n" > /dev/ttyUSB2
为了更好地交互,建议使用 minicom 或 microcom 这些串口调试工具进行测试。
执行 AT+CPIN?
命令查询 SIM 卡状态,如果返回 +CPIN: READY
表示 SIM 卡准备就绪,如果返回 +CME ERROR: 10
表示 SIM not inserted,如果返回 +CME ERROR: 13
表示 SIM failure。
可以通过下面 AT 指令来简单测试短信发送功能。
AT+CMGF=1
AT+CSCS="GSM"
AT+CMGS="your-phone-number"
> Hello World!
Ctrl-Z
在 AT+CMGS
后面的字串中填入接收信息的号码,收到 “>” 提示符后填入短信内容,按 Ctrl-Z 即可发送短信。
Wvdial
wvdial 是 Linux 下的智能化拨号工具,利用 wvdial 和 ppp 可以实现 Linux 下的轻松上网。在整个过程中 wvdial 的作用是拨号并等待提示,并根据提示输入相应的用户名和密码等认证信息;ppp 的作用是与拨入方协商传输数据的方法并维持该连接。
wvdial 及其相关配置
wvdial 的功能很强大,会试探着去猜测如何拨号及登录到服务器,同时它还会对常见的错误智能的进行处理,不需要你去写登录脚本。wvdial 只有一个配置文件 /etc/wvdial.conf。
wvdial 的启动过程是这样的:首先需要载入 wvdial.conf 配置文件,然后再初始化 modem 并拨号,拨号后等待拨入方的响应,收到拨入方响应后则启动 pppd。可以用 wvdialconf 程序自动生成 wvdial.conf 配置文件,运行该程序的格式为:
wvdialconf /etc/wvdial.conf