轶哥

妄图改变世界的全栈程序员。

OpenWRT使用4G/5G无线网卡模块上网
  •   更新:2022-05-17 16:38:29
  •   首发:2022-03-27 20:46:19
  •   教程
  •   5233

由于无线上网卡驱动的完善,随着内核的更新大部分的4G/5G无线网卡得到免驱支持。

OpenWRT社区包含了大量的无线网卡驱动,其中不乏4G/5G模块,现如今市面上常见的模块型号都得到了支持。

如果在其它Linux发行版使用4G/5G模块,请参考《Linux使用4G/5G无线网卡模块上网》

识别模块

将4G/5G开发板插入设备,终端输入lsusblspci,看设备是否识别到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查看是否有wwan0usb之类的网卡名称。

很多情况下一些依赖的相关驱动需要安装后才会出现网卡。

例如执行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安装无线网卡驱动通用方法》

驱动模块

OpenWRT.png

常见的4G模块是通电即能联网,无需手工配置拨号信息。这类模块在ifconfig -a中直接体现了wwan0usb之类的网卡名称。但由于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卡托拨号上网》。

打赏
交流区

暂无内容

尚未登陆
发布
  上一篇 (Powershell7 中文乱码问题解决)
下一篇 (CentOS 8 升级 RHEL 8)  

评论回复提醒