
huo成功QMI 拨号后wwan0网卡出现并获取运营商分配的IP源码获取也可以用别的机器交叉编译驱动但是源码一定要对应驱动目标板内核版本安装编译依赖sudo apt install -y build-essential bc bison flex libssl-dev libelf-dev dwarves \ kmod wget tar xz-utils zstd libncurses-dev mkdir -p ~/jetson_qmi_driver cd ~/jetson_qmi_driver下载对应版本的内核源码jetsonubuntu:~/jetson_qmi_driver$cat /etc/nv_tegra_release# R36 (release), REVISION: 5.0, GCID: 43688277, BOARD: generic, EABI: aarch64, DATE: Fri Jan 16 03:50:45 UTC 2026# KERNEL_VARIANT: ootTARGET_USERSPACE_LIB_DIRnvidiaTARGET_USERSPACE_LIB_DIR_PATHusr/lib/aarch64-linux-gnu/nvidiajetsonubuntu:~/jetson_qmi_driver$uname -aLinux ubuntu 5.15.185-tegra #1 SMP PREEMPT Thu Jan 15 19:24:38 PST 2026 aarch64 aarch64 aarch64 GNU/Linuxwget -c -O public_sources.tbz2 https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v5.0/sources/public_sources.tbz2或者用 source.sh 脚本一键下载L4T_MAJOR$(grep -oP R\d /etc/nv_tegra_release | head -1 | tr -d R) # 36 L4T_MINOR$(grep -oP REVISION:\s*\K[\d.] /etc/nv_tegra_release) # 5.0 echo L4T: R${L4T_MAJOR} v${L4T_MINOR} URLhttps://developer.download.nvidia.com/embedded/L4T/r${L4T_MAJOR}_Release_v${L4T_MINOR}/sources/public_sources.tbz2 echo Download: $URL wget -O public_sources.tbz2 $URL || { echo Download failed, trying backup URL... wget -O public_sources.tbz2 https://developer.download.nvidia.cn/embedded/L4T/r${L4T_MAJOR}_Release_v${L4T_MINOR}/sources/public_sources.tbz2 }windows下载也可以https://developer.download.nvidia.com/embedded/L4T/r36_Release_v5.0/sources/public_sources.tbz2编译 ko 驱动文件如果要重置步骤可以用指令卸载驱动回到这个位置重新开始配置# 1. 断开当前连接 sudo qmi-network /dev/cdc-wdm0 stop sudo ip link set wwan0 down # 2. 卸载内核模块从后往前 sudo rmmod option 2/dev/null sudo rmmod usb_wwan 2/dev/null sudo rmmod qmi_wwan 2/dev/null sudo rmmod cdc_wdm 2/dev/null sudo rmmod usbnet 2/dev/null # 3. 清除 QMI 状态文件 sudo rm -f /tmp/qmi-network-state-cdc-wdm0 # 4. 确认干净 lsmod | grep -E qmi_wwan|cdc_wdm|option # 应无输出 ls /dev/cdc-wdm0 # 应不存在 # 5. 可选删除已安装模块 sudo rm -rf /lib/modules/$(uname -r)/extra/qmi/ sudo depmod -a解压tar -xvjf public_sources.tbz2找到 kernel_src.tbz2find ~/jetson_qmi_driver -name kernel_src.tbz2cd ~/jetson_qmi_driver/Linux_for_Tegra/source解压内核源码tar -xvjf kernel_src.tbz2进入内核源码目录cd kernel/kernel-jammy-src复制当前系统配置zcat /proc/config.gz .config如果提示没有 /proc/config.gz 用这个cp /boot/config-$(uname -r) .config打开要编译的驱动为模块 指令配置比界面方便./scripts/config --module USB_USBNET ./scripts/config --module USB_NET_QMI_WWAN ./scripts/config --module USB_WDM ./scripts/config --module USB_NET_CDCETHER ./scripts/config --module USB_NET_CDC_NCM ./scripts/config --module USB_NET_CDC_MBIM ./scripts/config --module USB_NET_RNDIS_HOST ./scripts/config --module USB_SERIAL ./scripts/config --module USB_SERIAL_WWAN ./scripts/config --module USB_SERIAL_OPTION ./scripts/config --module PPP ./scripts/config --module PPP_ASYNC ./scripts/config --module PPP_SYNC_TTY ./scripts/config --module SLHC ./scripts/config --set-str LOCALVERSION -tegra生成配置和编译准备make olddefconfig make prepare make modules_prepare编译 USB 网络驱动 qmi_wwan / cdc_mbim / rndis_host / usbnet 网卡驱动make -j$(nproc) Mdrivers/net/usb modules编译 cdc-wdm QMI 和 MBIM 的控制信令通道make -j$(nproc) Mdrivers/usb/class modules编译 USB 串口驱动 ttyUSB* 驱动make -j$(nproc) Mdrivers/usb/serial modules编译 PPP 驱动可选make -j$(nproc) Mdrivers/net/ppp modules建立安装目录sudo mkdir -p /lib/modules/$(uname -r)/extra/qmi也可以用makefile编译cd kernel/kernel-jammy-src zcat /proc/config.gz .config cp /path/to/Makefile.qmi Makefile make MODEqmi # QMI 模式 make MODErndis # RNDIS 模式 make MODEmbim # MBIM 模式 make MODEecm # ECM 模式 make MODEall # 全编译 sudo make install # 一键安装复制 ko 文件sudo cp -f drivers/net/usb/usbnet.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/usb/qmi_wwan.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/usb/cdc_ether.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/usb/cdc_ncm.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/usb/cdc_mbim.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/usb/rndis_host.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/usb/class/cdc-wdm.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/usb/serial/usbserial.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/usb/serial/usb_wwan.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/usb/serial/option.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/ppp/ppp_generic.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/ppp/ppp_async.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/ppp/ppp_synctty.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true sudo cp -f drivers/net/ppp/slhc.ko /lib/modules/$(uname -r)/extra/qmi/ 2/dev/null || true刷新模块依赖sudo depmod -a加载驱动到内核如果内核已经有驱动可以直接从这个步骤开始根据需要的驱动加载比方说这里是QMI拨号加载qmi_wwan0不建议同时加载多个驱动避免网卡冲突如果要卸载用这个指令 sudo rmmod xxxsudo modprobe usbnet sudo modprobe cdc_wdm sudo modprobe qmi_wwan sudo modprobe cdc_ether # sudo modprobe cdc_ncm # sudo modprobe cdc_mbim # sudo modprobe rndis_host sudo modprobe usbserial sudo modprobe usb_wwan sudo modprobe option # sudo modprobe ppp_async到这里已经有 wwan0 网卡检查驱动是否加载 可选lsmod | egrep cdc_ether|cdc_ncm|cdc_mbim|cdc_wdm|qmi_wwan|rndis_host|option|usb_wwan|ppp_async检查 ko 版本可选modinfo qmi_wwan | grep vermagic modinfo cdc_wdm | grep vermagic modinfo option | grep vermagic uname -r必须都是5.15.185-tegra插入模块后检查设备 可选lsusb dmesg | grep -iE qmi|cdc-wdm|wwan|ttyUSB|option|2c7c | tail -80 ls /dev/cdc-wdm* ls /dev/ttyUSB* ip -br link | grep -E wwan|usb|enx开始QMI拨号方案一 QMI 工具拨号树莓派推荐RM520 推荐安装 QMI 工具 拨号关键工具sudo apt install -y libqmi-utils udhcpc isc-dhcp-client写 QMI 配置sudo tee /etc/qmi-network.conf /dev/null EOF APNCMNET APN_USER APN_PASS APN_AUTHnone IP_TYPE4 PROXYyes EOF停止抢占服务可选sudo systemctl stop ModemManager 2/dev/null || true sudo killall ModemManager 2/dev/null || true设置 raw-ipsudo ip link set wwan0 down echo Y | sudo tee /sys/class/net/wwan0/qmi/raw_ip sudo ip link set wwan0 up查询模块状态sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-get-operating-mode sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --nas-get-signal-strength sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --nas-get-serving-system开始 QMI 拨号重启网卡是有必要的两指令都发送sudo qmi-network /dev/cdc-wdm0 stop sudo qmi-network /dev/cdc-wdm0 startRM520 换到 SIM7600 后换不同高通模组后请一定要把旧 QMI 状态清掉。RM520 和 SIM7600 都是高通基带没错但/tmp/qmi-network-state-cdc-wdm0里的 CID/PDH 不能跨模块沿用。sudo pkill -f qmicli sudo pkill -f qmi-proxy sudo rm -f /tmp/qmi-network-state-cdc-wdm0 sudo systemctl stop ModemManager 2/dev/null sudo qmi-network /dev/cdc-wdm0 start获取 IPsudo udhcpc -i wwan0如果 udhcpc 不成功 用这个sudo dhclient -v wwan0设置默认路由sudo ip route replace default dev wwan0设置 DNSecho nameserver 114.114.114.114 | sudo tee /etc/resolv.conf echo nameserver 8.8.8.8 | sudo tee -a /etc/resolv.conf测试ping -I wwan0 8.8.8.8 -c 4 ping -I wwan0 qq.com -c 4合并拨号步骤方便一键复制粘贴sudo apt install -y libqmi-utils udhcpc isc-dhcp-client sudo tee /etc/qmi-network.conf /dev/null EOF APNCMNET APN_USER APN_PASS APN_AUTHnone IP_TYPE4 PROXYyes EOF sudo systemctl stop ModemManager 2/dev/null || true sudo killall ModemManager 2/dev/null || true sudo ip link set wwan0 down echo Y | sudo tee /sys/class/net/wwan0/qmi/raw_ip sudo ip link set wwan0 up sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-get-operating-mode sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --nas-get-signal-strength sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --nas-get-serving-system sudo qmi-network /dev/cdc-wdm0 stop sudo qmi-network /dev/cdc-wdm0 start sudo udhcpc -i wwan0 || sudo dhclient -v wwan0 sudo ip route replace default dev wwan0方案二 nmcliModemManager 工具自动拨号 SIM7600 推荐打开ModemManagersudo apt install -y modemmanager network-manager sudo systemctl enable --now ModemManager sudo systemctl enable --now NetworkManager创建蜂窝连接获取IPsudo nmcli radio wwan on sudo nmcli connection add type gsm ifname * con-name sim7600-qmi apn CMNET sudo nmcli connection up sim7600-qmiFAQ如果有 /dev/cdc-wdm0 但没有 wwan0执行这个绑定先看 PIDlsusb比如看到 2c7c 0801 就执行echo 2c7c 0801 | sudo tee /sys/bus/usb/drivers/qmi_wwan/new_id echo 2c7c 0801 | sudo tee /sys/bus/usb-serial/drivers/option1/new_id再检查dmesg | tail -80 ls /dev/cdc-wdm* ip -br link | grep wwan如果一直无法获取ip和上网可以去掉用不到的网卡驱动重启下再重新拨号如果要完全关闭QMI拨号sudo qmi-network /dev/cdc-wdm0 stop 2/dev/null || truesudo pkill -f qmicli 2/dev/null || truesudo pkill -f qmi-proxy 2/dev/null || truesudo dhclient -r wwan0 2/dev/null || truesudo pkill -f dhclient.*wwan0 2/dev/null || truesudo pkill -f udhcpc.*wwan0 2/dev/null || truesudo ip route del default dev wwan0 2/dev/null || truesudo ip addr flush dev wwan0 2/dev/null || truesudo ip link set wwan0 down 2/dev/null || truesudo rm -f /tmp/qmi-network-state-cdc-wdm0sudo rm -f /var/run/qmi-network-state-cdc-wdm0sudo systemctl restart ModemManager 2/dev/null || true