在嵌入式物联网项目中,4G通信模组的稳定接入往往是实现设备远程管理的关键环节。Jetson Orin Nano作为NVIDIA面向边缘计算推出的高性能开发平台,与移远EC20 4G模组的组合,能够为智能摄像头、移动机器人等场景提供可靠的无线连接方案。本文将完整呈现从内核配置到网络调试的全流程实战经验,特别针对Orin Nano的ARM64架构和Linux 5.15内核特性进行适配优化。
在开始驱动移植前,需要确认硬件连接状态:
lsusb命令验证设备识别:bash复制$ lsusb | grep 2C7C
Bus 001 Device 003: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC20 LTE modem
bash复制$ dmesg | grep usb
[ 125.671234] usb 1-2: new high-speed USB device number 3 using xhci_hcd
Orin Nano的默认内核配置需要针对EC20进行以下修改:
关键配置项:
makefile复制# USB串口支持
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y
# USB网络驱动
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_QMI_WWAN=y
CONFIG_USB_WDM=y
配置方法:
bash复制cd /usr/src/linux-headers-$(uname -r)
bash复制make menuconfig
依次进入:
提示:Orin Nano的默认配置文件位于
arch/arm64/configs/defconfig,直接修改该文件可永久保存配置
EC20模组通过USB接口暴露多个串口设备,需要修改drivers/usb/serial/option.c文件:
添加设备标识符:
c复制static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(0x2C7C, 0x0125) }, // EC20标准模式
{ USB_DEVICE(0x2C7C, 0x0126) }, // EC20调试模式
{ } /* Terminating entry */
};
实现零包机制:
在drivers/usb/serial/usb_wwan.c中添加特殊处理:
c复制#ifdef CONFIG_QUECTEL_EC20
if (dir == USB_DIR_OUT &&
le16_to_cpu(serial->dev->descriptor.idVendor) == 0x2C7C) {
urb->transfer_flags |= URB_ZERO_PACKET;
}
#endif
休眠唤醒支持:
更新option_1port_device结构体:
c复制static struct usb_serial_driver option_1port_device = {
.reset_resume = usb_wwan_resume,
};
移远提供的定制版QMI驱动需要以下集成步骤:
qmi_wwan_q.c复制到drivers/net/usb/目录makefile复制obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan_q.o
obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan.o
CONFIG_QCA_NSS_DRV相关配置CONFIG_PINCTRL_IPQ8074选项bash复制sudo apt install build-essential libncurses-dev bison flex libssl-dev
bash复制make -j$(nproc) Image modules dtbs
bash复制sudo make modules_install
sudo cp arch/arm64/boot/Image /boot/
完成刷机后,依次检查以下关键节点:
串口设备生成:
bash复制ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3
QMI控制接口:
bash复制ls /dev/cdc-wdm0
网络接口状态:
bash复制sudo ifconfig wwan0 up
ifconfig wwan0
使用minicom进行基础通信测试:
bash复制sudo minicom -D /dev/ttyUSB2 -b 115200
发送测试指令:
code复制AT
AT+CSQ
AT+COPS?
编译移远拨号工具:
bash复制git clone https://github.com/quectel/quectel-CM
cd quectel-CM && make
解决常见问题:
bash复制sudo apt install dos2unix
dos2unix default.script
bash复制chmod 755 /usr/share/udhcpc/default.script
启动网络连接:
bash复制sudo ./quectel-CM &
ping www.baidu.com
通过调整TCP参数提升4G网络性能:
bash复制sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.core.rmem_max=4194304
sudo sysctl -w net.core.wmem_max=4194304
针对移动网络特点,建议配置心跳保持:
bash复制sudo echo "30" > /proc/sys/net/ipv4/tcp_keepalive_time
sudo echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes
在完成全部调试后,EC20模组应该能够稳定保持4G连接,实测在信号良好的环境下,下载速率可达50Mbps以上,上传速率约20Mbps,完全满足大多数物联网应用的数据传输需求。实际项目中建议添加自动重连机制,以应对移动网络环境的不稳定性。