由于无线上网卡驱动的完善,随着内核的更新大部分的4G/5G无线网卡得到免驱支持。
OpenWRT社区包含了大量的无线网卡驱动,其中不乏4G/5G模块,现如今市面上常见的模块型号都得到了支持。
如果在其它Linux发行版使用4G/5G模块,请参考《Linux使用4G/5G无线网卡模块上网》。
识别模块将4G/5G开发板插入设备,终端输入lsusb或lspci,看设备是否识别到4G/5G模块。
$ lsusb Bus 001 Device 001: ID 05c6:6001 Qualcomm, Inc. Mass Storage Device以树莓派4(Raspberry4)中安装的OpenWRT为例,上述命令显示设备识别到高通芯片的4G模块(USB无线网卡)。
如果你也在树莓派4中使用4G/5G网卡,还可以参考:《树莓派4使用OTG功能变身有线网卡》。
查看驱动加载情况OpenWRT对3G/UMTS/4G/LTE/5G/Phone网卡的驱动方式,一共有以下几种:
QMI
NCM
RNDIS
串口/专有驱动
查看dmesg信息,确认模块驱动加载情况。不同的4G/5G网卡,加载的驱动模式可能有差异。通常情况下,4G无线网卡包含两个模式,一个CD存储模式,另一个是Modem模式(调制解调器模式)。5G模块的无线网卡通常走USB Type-C,具有专门的驱动。
$ dmesg如果usb模式切换正常,通常可以看到输出内容包含:
GSM modem否则,可能只识别到USB Storage device或者CD-ROM。这种情况下,需要安装usb-modeswitch等库,并设置切换网卡运行模式。
如果只识别到USB设备而没有对应驱动,需要对OpenWRT内核编译选项进行配置。如果看到GSM相关字眼(跳过内核编译,说明固件已经支持该模块),那么直接执行ifconfig -a查看是否有wwan0或usb之类的网卡名称。
很多情况下一些依赖的相关驱动需要安装后才会出现网卡。
例如执行lsusb时找到设备为高通4G卡托:
Bus 001 Device 006: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)执行RNDIS相关依赖安装:
opkg update opkg install kmod-usb-net-rndis usb-modeswitch重启设备。
重启后如果dmesg输出内容包含RNDIS device,则说明已经被识别为RNDIS设备,将匹配为一个安卓手机来进行上网。
这时执行lsusb就可以看到USB设备已经变为:
Bus 001 Device 006: ID 05c6:902d Android Android这时USB 4G上网卡托则被识别为安卓设备,同时ifconfig -a出现usb0网卡。
内核编译选项 ### USB Net Drivers CONFIG_PACKAGE_kmod-usb-net=y CONFIG_PACKAGE_kmod-usb-net-asix=y CONFIG_PACKAGE_kmod-usb-net-asix-ax88179=y CONFIG_PACKAGE_kmod-usb-net-rtl8152=y CONFIG_PACKAGE_kmod-usb-net-cdc-eem=y CONFIG_PACKAGE_kmod-usb-net-cdc-ether=y CONFIG_PACKAGE_kmod-usb-net-cdc-mbim=y CONFIG_PACKAGE_kmod-usb-net-cdc-ncm=y CONFIG_PACKAGE_kmod-usb-net-cdc-subset=y CONFIG_PACKAGE_kmod-usb-net-dm9601-ether=y CONFIG_PACKAGE_kmod-usb-net-hso=y CONFIG_PACKAGE_kmod-usb-net-huawei-cdc-ncm=y CONFIG_PACKAGE_kmod-usb-net-ipheth=y CONFIG_PACKAGE_kmod-usb-net-kalmia=y CONFIG_PACKAGE_kmod-usb-net-kaweth=y CONFIG_PACKAGE_kmod-usb-net-mcs7830=y CONFIG_PACKAGE_kmod-usb-net-pegasus=y CONFIG_PACKAGE_kmod-usb-net-pl=y CONFIG_PACKAGE_kmod-usb-net-qmi-wwan=y CONFIG_PACKAGE_kmod-usb-net-rndis=y CONFIG_PACKAGE_kmod-usb-net-sierrawireless=y CONFIG_PACKAGE_kmod-usb-net-smsc95xx=y CONFIG_PACKAGE_kmod-usb-net-sr9700=y CONFIG_PACKAGE_kmod-usb-net2280=y ### USB Storage Drivers CONFIG_PACKAGE_kmod-usb-ohci=y CONFIG_PACKAGE_kmod-usb-ohci-pci=y CONFIG_PACKAGE_kmod-usb-printer=y CONFIG_PACKAGE_kmod-usb-storage=y CONFIG_PACKAGE_kmod-usb-storage-extras=y CONFIG_PACKAGE_kmod-usb-storage-uas=y CONFIG_PACKAGE_kmod-usb-uhci=y CONFIG_PACKAGE_kmod-usb2=y CONFIG_PACKAGE_kmod-usb2-pci=y CONFIG_PACKAGE_kmod-usb3=y # 3G/4G/5G Drivers & Utilities CONFIG_PACKAGE_comgt-ncm=y CONFIG_PACKAGE_comgt=y CONFIG_PACKAGE_kmod-mii=y CONFIG_PACKAGE_kmod-usb-acm=y CONFIG_PACKAGE_kmod-usb-serial=y CONFIG_PACKAGE_kmod-usb-serial-option=y CONFIG_PACKAGE_kmod-usb-serial-wwan=y CONFIG_PACKAGE_luci-proto-3g=y CONFIG_PACKAGE_luci-proto-ncm=y CONFIG_PACKAGE_luci-proto-qmi=y CONFIG_PACKAGE_qmi-utils=y CONFIG_PACKAGE_umbim=y CONFIG_PACKAGE_uqmi=y CONFIG_PACKAGE_usb-modeswitch=y # Mobile Network Sharing CONFIG_PACKAGE_libimobiledevice-utils=y CONFIG_PACKAGE_libplist-utils=y CONFIG_PACKAGE_libudev-fbsd=y CONFIG_PACKAGE_libusbmuxd-utils=y CONFIG_PACKAGE_usbmuxd=y # Kmods CONFIG_PACKAGE_kmod-rtl8187=y CONFIG_PACKAGE_kmod-rtl8188eu=y CONFIG_PACKAGE_kmod-rtl8192c-common=y CONFIG_PACKAGE_kmod-rtl8192cu=y CONFIG_PACKAGE_kmod-rtl8192du=y CONFIG_PACKAGE_kmod-rtl8812au-ac=y CONFIG_PACKAGE_kmod-rtl8821cu=y CONFIG_PACKAGE_kmod-rtl88x2bu=y CONFIG_PACKAGE_kmod-rtlwifi=y CONFIG_PACKAGE_kmod-rtlwifi-usb=y CONFIG_PACKAGE_kmod-usb-net-rtl8150=y CONFIG_PACKAGE_kmod-usb-net-rtl8152=y上述配置项包含了常见的3G/4G/5G模块所依赖的配置信息。其中最为关键的是usb-modeswitch模块的配置。
按照上述配置项编译后,即可正常识别上网模块。如果仍然无法识别,需要根据设备ID查找对应驱动,可参考《Linux安装无线网卡驱动通用方法》。
驱动模块常见的4G模块是通电即能联网,无需手工配置拨号信息。这类模块在ifconfig -a中直接体现了wwan0或usb之类的网卡名称。但由于OpenWRT默认没有对网卡启用DHCP Client,因此不会看到被分配的IP信息。这种情况下我们只需要在UI管理界面的接口-新建接口,输入一个你喜欢的wan口名称,并选择协议为DHCP客户端,选中对应的网卡,新建后修改-网卡防火墙,选择wan保存。之后就可以看到接口界面该网卡获得了IP地址,客户端即可正常上网。【USB模块里最常见情况】
另外一种情况通常是给开发人员提供的4G/5G模块,是需要依赖一个上位机系统才能完成拨号并正常上网的。这类模块的表现就是直接给模块通电是无法正常上网的,需要配置拨号信息。例如移远等各类开发板使用的LTE模块、GL.iNet的各类LTE模块、给自助设备/嵌入式设备使用的4G模块、大部分的PCIe接口的LTE模块。这种情况需要使用qmi模块进行拨号上网。
opkg install usb-modeswitch kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan uqmi luci-proto-qmi安装上述模块后,进入GUI管理界面,接口-新建接口,输入一个你喜欢的wan口名称,并选择协议为QMI 蜂窝(不同版本翻译的名称不一样,带QMI即可),新建后修改-网卡防火墙,选择wan保存。修改,设备地址输入/dev/cdc-wdm0(通常是这个,看dmesg输出的结果),APN根据卡片来(联通 3gnet、移动 cmnet、电信ctnet)。保存后查看是否能成功拨号。
其它特殊模块参考官方文档https://openwrt.org/docs/guide-user/network/wan/wwan/ltedongle。
具体的手动拨号方法参见《OpenWRT使用4G卡托拨号上网》。