跳到主要内容

Quectel 通信模组通用指南

本文提供了在 Neardi RK系列设备上使用Linux系统,通过移远通信模组进行quectel-CM拨号的全面指南。

Neardi产品全系都是 mini-pcie 接口连接,但实际硬件连接方式是通过usb通讯的。

1. 硬件连接

注意

  • 请将 Neardi 设备断电后再安装通信模组和 SIM 卡!
  • 天线必须都接好,否则会影响信号质量或损坏射频组件。

Quectel EC20 4G 模组硬件连接指南

Quectel RG255C 5G 模组硬件连接指南

Quectel RM500U/Q 5G 模组硬件连接指南

2. 验证硬件识别

$ lsusb

如果看到类似以下输出,说明设备已被正确识别。

# 输出示例会根据模组型号而有所不同
Bus 001 Device 003: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. XXXX

3. 使用 quectel-CM 进行拨号

使用quectel-CM命令来拨号连接互联网。使用以下命令进行拨号:

$ sudo quectel-CM &

若拨号成功,ifconfig会显示网络接口被分配了IP地址(接口名可能是usb0或wwan0,取决于系统):

# 网络接口名称和IP地址会因系统和运营商而异
# 通常为wwan0,也有可能是usb0
wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.220.175.69 netmask 255.255.255.0 broadcast 10.220.175.255
inet6 fe80::60fa:c9b1:cd0c:e69b prefixlen 64 scopeid 0x20<link>
ether 46:a0:f1:6c:aa:fa txqueuelen 1000 (Ethernet)
RX packets 82 bytes 12644 (12.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 85 bytes 14918 (14.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

查看网络连通性,使用 -I 参数指定网络接口,可通过ifconfig查询。

$ ping -I <接口名称> bing.com
# 例如:ping -I wwan0 bing.com 或 ping -I usb0 bing.com

4. 停止 quectel-CM 拨号

此命令应在重新拨号前执行,正常情况下不需要执行。

ps -ef | grep -i quectel | grep -v grep | awk '{print $2}' | xargs -r kill -9

5. 处理拨号失败

如果拨号失败,您可能会在终端中看到类似以下的错误消息:

[09-02_09:42:20:388] AT< +CPIN: NOT INSERTED

这类错误通常表示SIM卡未插入。

6. 使用AT命令进行故障排除

Quectel_RGx00URM500U_Series_AT_Commands_Manual_V1.0.pdf 详细AT命令请参考此附件

在拨号失败的情况下,可以按以下顺序查询以排查问题原因: 在执行以下任何查询命令之前,请先执行 sudo -i

6.1. 查询SIM卡状态

echo -e "AT+CPIN?\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

+CPIN: READY
OK

确保SIM卡已解锁且工作正常。如果返回READY,表示SIM卡状态正常。

6.2. 查询当前网络状态

echo -en "AT+QENG=\"SERVINGCELL\"\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

+QENG: "servingcell","NOCONN","NR5G-SA","TDD",460,01,5AA26A008,22,590907,627264,78,100,-100,-8,1,21,24,1
OK

获取模组连接的基站信息,检查信号强度和小区信息,确认模组是否已连接到网络。

6.3. 查询PDP上下文配置

echo -e "AT+CGDCONT?\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

+CGDCONT: 1,"IPV4V6","3gnet","0.0.0.0",0,0,0,0,,,,,,0,,,0,,0,0,0,0
+CGDCONT: 11,"IPV4V6","ims","0.0.0.0",0,0,0,2,,,,,,0,,,0,,0,0,0,0
OK

查看模组的APN配置等信息。

6.4. 如何配置APN信息

配置模组的APN等信息,确保与运营商提供的信息匹配。 查看帮助信息:首先查看quectel-CM的帮助信息,了解命令选项。

neardi@LPA3588:~$ quectel-CM -h
[09-02_09:35:14:017] QConnectManager_Linux_V1.6.5
[09-02_09:35:14:017] Usage: quectel-CM [options]
[09-02_09:35:14:018] -s [apn [user password auth]] Set apn/user/password/auth get from your network provider. auth: 1~pap, 2~chap, 3~MsChapV2
[09-02_09:35:14:018] -p pincode Verify sim card pin if sim card is locked
[09-02_09:35:14:018] -p [quectel-][qmi|mbim]-proxy Request to use proxy
[09-02_09:35:14:018] -f logfilename Save log message of this program to file
[09-02_09:35:14:018] -u usbmonlog filename Save usbmon log to file
[09-02_09:35:14:018] -i interface Specify which network interface to setup data call when multi-modems exits
[09-02_09:35:14:018] -4 Setup IPv4 data call (default)
[09-02_09:35:14:018] -6 Setup IPv6 data call
[09-02_09:35:14:018] -n pdn Specify which pdn to setup data call (default 1 for QMI, 0 for MBIM)
[09-02_09:35:14:018] -k pdn Specify which pdn to hangup data call (by send SIGINT to 'quectel-CM -n pdn')
[09-02_09:35:14:018] -m iface-idx Bind QMI data call to wwan0_<iface idx> when QMAP used. E.g '-n 7 -m 1' bind pdn-7 data call to wwan0_1
[09-02_09:35:14:018] -b Enable network interface bridge function (default 0)
[09-02_09:35:14:018] -v Verbose log mode, for debug purpose.
[09-02_09:35:14:018] -d Obtain the IP address and dns through qmi
[09-02_09:35:14:019] [Examples]
[09-02_09:35:14:019] Example 1: quectel-CM
[09-02_09:35:14:019] Example 2: quectel-CM -s 3gnet
[09-02_09:35:14:019] Example 3: quectel-CM -s 3gnet carl 1234 1 -p 1234 -f gobinet_log.txt

配置APN:使用-s选项设置APN。格式如下:

quectel-CM -s <apn> [<user> <password> <auth>]
  • apn:这是网络运营商提供的APN名称。
  • user:APN的用户名(如果需要)。
  • password:APN的密码(如果需要)。
  • auth:认证类型,1为PAP,2为CHAP,3为MsChapV2。

6.5. 查询模组IMEI号码

echo -e "AT+CGSN\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

869955061681180
OK

确认模组的IMEI正常。IMEI是设备在网络中的唯一标识符�。 您可以通过IMEI验证查看更多模组信息。

6.6. 查询固件版本

echo -e "AT+GMR\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

# 输出会根据模组型号而有所不同
RM500UCNVAAR03A07M2G_01.001.01.001
OK

6.7. 设置模组功能状态

echo -e "AT+CFUN=0/1\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

尝试通过重启模组或切换功能模式来排除临时故障,然后重新尝试拨号。

6.8. 当前设备支持的网络模式及其参数

echo -e "AT+QNWPREFCFG=?\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

+QNWPREFCFG: "mode_pref",AUTO:WCDMA:LTE:NR5G:NR5G-SA:NR5G-NSA
+QNWPREFCFG: "gw_band",1:5:8
+QNWPREFCFG: "lte_band",1:3:5:8:34:38:39:40:41
+QNWPREFCFG: "nr5g_band",1:3:5:8:28:41:77:78:79
+QNWPREFCFG: "all_band_reset"
+QNWPREFCFG: "srv_domain",(0-2)
+QNWPREFCFG: "voice_domain",(0-3)
+QNWPREFCFG: "ue_usage_setting",(0,1)
+QNWPREFCFG: "roam_pref",(0-3)
+QNWPREFCFG: "cell_blacklist",(1-3),(0-15),<freq-pci list>
+QNWPREFCFG: "mode_blacklist",(0-5)
+QNWPREFCFG: "rat_acq_order",NR5G:LTE:WCDMA
+QNWPREFCFG: "nr5g_band_blacklist",(0,1),<nr5g_band_blacklist>
  • AUTO:自动选择
  • LTE:4G LTE模式
  • NR5G-SA:5G SA(独立组网)模式
  • NR5G-NSA:5G NSA(非独立组网)模式

6.9. 查看当前网络模式配置

echo -e "AT+QNWPREFCFG=\"mode_pref\"\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

+QNWPREFCFG: "mode_pref",AUTO
OK

6.10. 设置网络模式

# 设置为5G SA模式
echo -e "AT+QNWPREFCFG=\"mode_pref\",NR5G-SA\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

结果:

OK

7. 网络共享

如果需要将网络连接共享给其他设备,可以使用以下方法:

7.1. 通过iptables实现基本网络共享

假设条件:

  • 拨号成功后的网络接口为 usb0(请替换为您的实际接口名称)
  • 要共享的以太网接口为 eth0(请替换为您的实际接口名称)

启用IP转发:

sudo sysctl -w net.ipv4.ip_forward=1

配置iptables进行NAT:

sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
sudo iptables -A FORWARD -i usb0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o usb0 -j ACCEPT

测试连通性: 在连接到以太网接口的设备上,尝试ping外部地址:

ping bing.com

7.2. 带DHCP的高级网络共享

为了让其他设备能够自动获取IP地址,可以配置DHCP服务:

# 安装dnsmasq
sudo apt-get install dnsmasq

# 配置dnsmasq
echo "interface=eth0" >> /etc/dnsmasq.conf
echo "dhcp-range=192.168.1.100,192.168.1.200,24h" >> /etc/dnsmasq.conf

# 重启dnsmasq服务
sudo systemctl restart dnsmasq

8. 高级配置

8.1. 自动拨号脚本

创建自动拨号脚本,实现开机自动连接:

#!/bin/bash
# /usr/local/bin/auto-dial.sh
# 等待模组初始化
sleep 30

# 检查模组是否识别
if lsusb | grep -i "Quectel"; then
echo "模组已识别,开始拨号..."
sudo quectel-CM &
else
echo "模组未识别,请检查硬件连接"
fi

添加到系统启动项:

# 添加执行权限
sudo chmod +x /usr/local/bin/auto-dial.sh

# 创建systemd服务文件
sudo tee /etc/systemd/system/auto-dial.service > /dev/null <<EOF
[Unit]
Description=Auto Dial Service for Communication Module
After=network.target
Wants=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/auto-dial.sh
Restart=on-failure
RestartSec=10
User=root

[Install]
WantedBy=multi-user.target
EOF

# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable auto-dial.service
sudo systemctl start auto-dial.service

8.2. 网络监控脚本

创建网络监控脚本,自动检测网络状态并重连:

#!/bin/bash
# /usr/local/bin/network-monitor.sh
# 网络接口名称(通常为wwan0�,也可能是usb0)
INTERFACE="wwan0"

while true; do
# 检查网络连接(通过指定接口)
if ! ping -I $INTERFACE -c 1 8.8.8.8 > /dev/null 2>&1; then
echo "网络连接断开,尝试重新拨号..."
pkill quectel-CM
sleep 5
sudo quectel-CM &
fi
sleep 60
done

添加执行权限:

# 添加执行权限
sudo chmod +x /usr/local/bin/network-monitor.sh

9. 故障排除工具

9.1. 附加模组信息查询

# 查看模组详细信息
echo -e "ATI\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

# 查看制造商信息
echo -e "AT+CGMI\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

# 检查信号强度
echo -e "AT+CSQ\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

9.2. 网络状态查询

# 查看网络运营商
echo -e "AT+COPS?\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

# 查看网络模式
echo -e "AT+QNWINFO\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

# 查看数据连接状态
echo -e "AT+QIACT?\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

# 检查网络注册状态
echo -e "AT+CREG?\r\n" > /dev/ttyUSB2 && cat /dev/ttyUSB2

9.3. 系统日志查看

# 查看系统日志中的模组相关信息
sudo dmesg | grep -i usb
sudo dmesg | grep -i quectel

# 查看网络接口状态
ip addr show
ip route show

# 检查系统日志中的网络问题
sudo journalctl -u NetworkManager
sudo journalctl | grep -i quectel

10. 常见问题

10.1. lsusb无法识别模组

  • 检查模组是否正确插入mini-pcie插槽
  • 尝试重启设备
  • 检查模组是否与您的设备兼容
  • 验证天线是否正确连接

10.2. 拨号失败

  • 检查SIM卡是否正确插入
  • 验证SIM卡已激活并有数据服务
  • 使用AT命令检查信号强度(AT+CSQ)
  • 尝试设置特定的网络模式
  • 与运营商验证APN设置
  • 检查SIM卡是否有足够的数据流量和余额

10.3. 拨号成功后无法ping通

  • 检查路由表是否正确配置
  • 验证DNS解析是否正常工作
  • 尝试使用IP地址而不是域名进行测试
  • 检查防火墙设置
  • 验证网络接口已启动并有正确的IP地址

10.4. 信号质量差

  • 检查所有天线是否正确连接
  • 将设备移动到信号覆盖更好的位置
  • 尝试设置在您所在区域覆盖更好的特定网络模式
  • 检查其他设备的干扰
  • 验证天线方向和位置

10.5. 模组不响应AT命令

  • 确认使用正确的ttyUSB设备(通常是ttyUSB2)
  • 检查设备权限:sudo chmod 666 /dev/ttyUSB*
  • 尝试重启模组或重新插拔
  • 使用minicom等串口工具进行调试
  • 验证模组是否处于睡眠模式

10.6. 网络连接不稳定

  • 检查天线连接是否牢固
  • 检查信号强度是否足够(AT+CSQ命令)
  • 尝试更换SIM卡或运营商
  • 检查模组温度是否过高
  • 监控您所在区域的网络拥塞情况
  • 考虑使用网络监控脚本进行自动重连