Quectel EC20 在 Linux 上的使用

本文使用的 EC20 R2.1 Mini PCIe 是一款支持 PCI Express Mini Card 标准接口的 LTE 模块,采用 LTE 3GPP Rel.11 技术。模块介绍请看 Quectel EC20

准备工作

硬件连接

在开始实验之前,先准备好 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

其中,0x2C7C0x0125 分别是 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

为了更好地交互,建议使用 minicommicrocom 这些串口调试工具进行测试。

执行 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 即可发送短信。

Leave a Reply