Quectel 通信模组通用指南
本文提供了在 Neardi RK系列设备上使用Linux系统,通过移远通信模组进行quectel-CM拨号的全面指南。
Neardi产品全系都是 mini-pcie 接口连接,但实际硬件连接方式是通过usb通讯的。
1. 硬件连接
注意
- 请将 Neardi 设备断电后再安装通信模组和 SIM 卡!
- 天线必须都接好,否则会影响信号质量或损坏射频组件。
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卡或运营商
- 检查模组温度是否过高
- 监控您所在区域的网络拥塞情况
- 考虑使用网络监控脚本进行自动重连